blob: 8266b5d02c9cc32e1f67702d64a77f07a337beeb [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>
Manjunathappa Prakash59f861d2016-04-21 10:33:31 -070047#include <cds_concurrency.h>
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080048
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080049static void
50cb_notify_set_roam_prefer5_g_hz(hdd_context_t *pHddCtx, unsigned long notifyId)
51{
52 sme_update_roam_prefer5_g_hz(pHddCtx->hHal,
53 pHddCtx->config->nRoamPrefer5GHz);
54}
55
56static void
57cb_notify_set_roam_rssi_diff(hdd_context_t *pHddCtx, unsigned long notifyId)
58{
59 sme_update_roam_rssi_diff(pHddCtx->hHal,
60 0, pHddCtx->config->RoamRssiDiff);
61}
62
63static void
64cb_notify_set_fast_transition_enabled(hdd_context_t *pHddCtx,
65 unsigned long notifyId)
66{
67 sme_update_fast_transition_enabled(pHddCtx->hHal,
68 pHddCtx->config->
69 isFastTransitionEnabled);
70}
71
72static void
73cb_notify_set_roam_intra_band(hdd_context_t *pHddCtx, unsigned long notifyId)
74{
75 sme_set_roam_intra_band(pHddCtx->hHal, pHddCtx->config->nRoamIntraBand);
76}
77
78static void cb_notify_set_wes_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
79{
80 /* At the point this routine is called, the value in the hdd config
81 table has already been updated */
82 sme_update_wes_mode(pHddCtx->hHal, pHddCtx->config->isWESModeEnabled, 0);
83}
84
85static void
86cb_notify_set_roam_scan_n_probes(hdd_context_t *pHddCtx, unsigned long notifyId)
87{
88 sme_update_roam_scan_n_probes(pHddCtx->hHal, 0, pHddCtx->config->nProbes);
89}
90
91static void
92cb_notify_set_roam_scan_home_away_time(hdd_context_t *pHddCtx, unsigned long notifyId)
93{
94 sme_update_roam_scan_home_away_time(pHddCtx->hHal, 0,
95 pHddCtx->config->nRoamScanHomeAwayTime,
96 true);
97}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080098
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080099static void
100notify_is_fast_roam_ini_feature_enabled(hdd_context_t *pHddCtx,
101 unsigned long notifyId)
102{
103 /* At the point this routine is called, the value in the hdd config
104 table has already been updated */
105 sme_update_is_fast_roam_ini_feature_enabled(pHddCtx->hHal, 0,
106 pHddCtx->config->
107 isFastRoamIniFeatureEnabled);
108}
109
110static void
111notify_is_mawc_ini_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
112{
113 /* At the point this routine is called, the value in the hdd config
114 table has already been updated */
115 sme_update_is_mawc_ini_feature_enabled(pHddCtx->hHal,
116 pHddCtx->config->MAWCEnabled);
117}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800118
119#ifdef FEATURE_WLAN_ESE
120static void
121cb_notify_set_ese_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
122{
123 /* At the point this routine is called, the value in the hdd config
124 table has already been updated */
125 sme_update_is_ese_feature_enabled(pHddCtx->hHal, 0,
126 pHddCtx->config->isEseIniFeatureEnabled);
127}
128#endif
129
130static void
131cb_notify_set_fw_rssi_monitoring(hdd_context_t *pHddCtx, unsigned long notifyId)
132{
133 /* At the point this routine is called, the value in the hdd config
134 table has already been updated */
135 sme_update_config_fw_rssi_monitoring(pHddCtx->hHal,
136 pHddCtx->config->
137 fEnableFwRssiMonitoring);
138}
139
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800140static void cb_notify_set_opportunistic_scan_threshold_diff(hdd_context_t *pHddCtx,
141 unsigned long notifyId)
142{
143 /* At the point this routine is called, the value in the hdd config
144 table has already been updated */
145 sme_set_roam_opportunistic_scan_threshold_diff(pHddCtx->hHal, 0,
146 pHddCtx->config->
147 nOpportunisticThresholdDiff);
148}
149
150static void cb_notify_set_roam_rescan_rssi_diff(hdd_context_t *pHddCtx,
151 unsigned long notifyId)
152{
153 /* At the point this routine is called, the value in the hdd config
154 table has already been updated */
155 sme_set_roam_rescan_rssi_diff(pHddCtx->hHal,
156 0, pHddCtx->config->nRoamRescanRssiDiff);
157}
158
159static void
160cb_notify_set_neighbor_lookup_rssi_threshold(hdd_context_t *pHddCtx,
161 unsigned long notifyId)
162{
163 /* At the point this routine is called, the value in the hdd config
164 table has already been updated */
165 sme_set_neighbor_lookup_rssi_threshold(pHddCtx->hHal, 0,
166 pHddCtx->config->
167 nNeighborLookupRssiThreshold);
168}
169
170static void
171cb_notify_set_delay_before_vdev_stop(hdd_context_t *hdd_ctx,
172 unsigned long notify_id)
173{
174 /*
175 * At the point this routine is called, the value in the cfg_ini
176 * table has already been updated
177 */
178 sme_set_delay_before_vdev_stop(hdd_ctx->hHal, 0,
179 hdd_ctx->config->delay_before_vdev_stop);
180}
181
182static void
183cb_notify_set_neighbor_scan_period(hdd_context_t *pHddCtx, unsigned long notifyId)
184{
185 /* At the point this routine is called, the value in the hdd config
186 table has already been updated */
187 sme_set_neighbor_scan_period(pHddCtx->hHal, 0,
188 pHddCtx->config->nNeighborScanPeriod);
189}
190
191static void
192cb_notify_set_neighbor_results_refresh_period(hdd_context_t *pHddCtx,
193 unsigned long notifyId)
194{
195 /* At the point this routine is called, the value in the hdd config
196 table has already been updated */
197 sme_set_neighbor_scan_refresh_period(pHddCtx->hHal, 0,
198 pHddCtx->config->
199 nNeighborResultsRefreshPeriod);
200}
201
202static void
203cb_notify_set_empty_scan_refresh_period(hdd_context_t *pHddCtx,
204 unsigned long notifyId)
205{
206 /* At the point this routine is called, the value in the hdd config
207 table has already been updated */
208 sme_update_empty_scan_refresh_period(pHddCtx->hHal, 0,
209 pHddCtx->config->
210 nEmptyScanRefreshPeriod);
211}
212
213static void
214cb_notify_set_neighbor_scan_min_chan_time(hdd_context_t *pHddCtx,
215 unsigned long notifyId)
216{
217 /* At the point this routine is called, the value in the hdd config
218 table has already been updated */
219 sme_set_neighbor_scan_min_chan_time(pHddCtx->hHal,
220 pHddCtx->config->
221 nNeighborScanMinChanTime, 0);
222}
223
224static void
225cb_notify_set_neighbor_scan_max_chan_time(hdd_context_t *pHddCtx,
226 unsigned long notifyId)
227{
228 sme_set_neighbor_scan_max_chan_time(pHddCtx->hHal, 0,
229 pHddCtx->config->
230 nNeighborScanMaxChanTime);
231}
232
233static void cb_notify_set_roam_bmiss_first_bcnt(hdd_context_t *pHddCtx,
234 unsigned long notifyId)
235{
236 /* At the point this routine is called, the value in the hdd config
237 table has already been updated */
238 sme_set_roam_bmiss_first_bcnt(pHddCtx->hHal,
239 0, pHddCtx->config->nRoamBmissFirstBcnt);
240}
241
242static void cb_notify_set_roam_bmiss_final_bcnt(hdd_context_t *pHddCtx,
243 unsigned long notifyId)
244{
245 sme_set_roam_bmiss_final_bcnt(pHddCtx->hHal, 0,
246 pHddCtx->config->nRoamBmissFinalBcnt);
247}
248
249static void cb_notify_set_roam_beacon_rssi_weight(hdd_context_t *pHddCtx,
250 unsigned long notifyId)
251{
252 sme_set_roam_beacon_rssi_weight(pHddCtx->hHal, 0,
253 pHddCtx->config->nRoamBeaconRssiWeight);
254}
255
256static void
257cb_notify_set_dfs_scan_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
258{
259 /* At the point this routine is called, the value in the hdd config
260 table has already been updated */
261 sme_update_dfs_scan_mode(pHddCtx->hHal, 0,
262 pHddCtx->config->allowDFSChannelRoam);
263}
264
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800265static void cb_notify_set_enable_ssr(hdd_context_t *pHddCtx,
266 unsigned long notifyId)
267{
268 sme_update_enable_ssr(pHddCtx->hHal, pHddCtx->config->enableSSR);
269}
270
271static void cb_notify_set_g_sap_preferred_chan_location(hdd_context_t *pHddCtx,
272 unsigned long notifyId)
273{
274 wlansap_set_dfs_preferred_channel_location(pHddCtx->hHal,
275 pHddCtx->config->
276 gSapPreferredChanLocation);
277}
278static void ch_notify_set_g_disable_dfs_japan_w53(hdd_context_t *pHddCtx,
279 unsigned long notifyId)
280{
281 wlansap_set_dfs_restrict_japan_w53(pHddCtx->hHal,
282 pHddCtx->config->
283 gDisableDfsJapanW53);
284}
285static void
286cb_notify_update_roam_scan_offload_enabled(hdd_context_t *pHddCtx,
287 unsigned long notifyId)
288{
289 sme_update_roam_scan_offload_enabled(pHddCtx->hHal,
290 pHddCtx->config->
291 isRoamOffloadScanEnabled);
292 if (0 == pHddCtx->config->isRoamOffloadScanEnabled) {
293 pHddCtx->config->bFastRoamInConIniFeatureEnabled = 0;
294 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
295 pHddCtx->config->
296 bFastRoamInConIniFeatureEnabled);
297 }
298}
299
300static void
301cb_notify_set_enable_fast_roam_in_concurrency(hdd_context_t *pHddCtx,
302 unsigned long notifyId)
303{
304 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
305 pHddCtx->config->
306 bFastRoamInConIniFeatureEnabled);
307}
308
309/**
310 * cb_notify_set_roam_scan_hi_rssi_scan_params() - configure hi rssi
311 * scan params from cfg to sme.
312 * @hdd_ctx: HDD context data structure
313 * @notify_id: Identifies 1 of the 4 parameters to be modified
314 *
315 * Picks up the value from hdd configuration and passes it to SME.
316 * Return: void
317 */
318
319static void
320cb_notify_set_roam_scan_hi_rssi_scan_params(hdd_context_t *hdd_ctx,
321 unsigned long notify_id)
322{
323 int32_t val;
324
325 if (wlan_hdd_validate_context(hdd_ctx)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800326 return;
327 }
328
329 switch (notify_id) {
330 case eCSR_HI_RSSI_SCAN_MAXCOUNT_ID:
331 val = hdd_ctx->config->nhi_rssi_scan_max_count;
332 break;
333
334 case eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID:
335 val = hdd_ctx->config->nhi_rssi_scan_rssi_delta;
336 break;
337
338 case eCSR_HI_RSSI_SCAN_DELAY_ID:
339 val = hdd_ctx->config->nhi_rssi_scan_delay;
340 break;
341
342 case eCSR_HI_RSSI_SCAN_RSSI_UB_ID:
343 val = hdd_ctx->config->nhi_rssi_scan_rssi_ub;
344 break;
345
346 default:
347 return;
348 }
349
350 sme_update_roam_scan_hi_rssi_scan_params(hdd_ctx->hHal, 0,
351 notify_id, val);
352}
353
354
355REG_TABLE_ENTRY g_registry_table[] = {
356 REG_VARIABLE(CFG_RTS_THRESHOLD_NAME, WLAN_PARAM_Integer,
357 struct hdd_config, RTSThreshold,
358 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
359 CFG_RTS_THRESHOLD_DEFAULT,
360 CFG_RTS_THRESHOLD_MIN,
361 CFG_RTS_THRESHOLD_MAX),
362
363 REG_VARIABLE(CFG_FRAG_THRESHOLD_NAME, WLAN_PARAM_Integer,
364 struct hdd_config, FragmentationThreshold,
365 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
366 CFG_FRAG_THRESHOLD_DEFAULT,
367 CFG_FRAG_THRESHOLD_MIN,
368 CFG_FRAG_THRESHOLD_MAX),
369
370 REG_VARIABLE(CFG_OPERATING_CHANNEL_NAME, WLAN_PARAM_Integer,
371 struct hdd_config, OperatingChannel,
372 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
373 CFG_OPERATING_CHANNEL_DEFAULT,
374 CFG_OPERATING_CHANNEL_MIN,
375 CFG_OPERATING_CHANNEL_MAX),
376
377 REG_VARIABLE(CFG_SHORT_SLOT_TIME_ENABLED_NAME, WLAN_PARAM_Integer,
378 struct hdd_config, ShortSlotTimeEnabled,
379 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
380 CFG_SHORT_SLOT_TIME_ENABLED_DEFAULT,
381 CFG_SHORT_SLOT_TIME_ENABLED_MIN,
382 CFG_SHORT_SLOT_TIME_ENABLED_MAX),
383
384 REG_VARIABLE(CFG_11D_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
385 struct hdd_config, Is11dSupportEnabled,
386 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
387 CFG_11D_SUPPORT_ENABLED_DEFAULT,
388 CFG_11D_SUPPORT_ENABLED_MIN,
389 CFG_11D_SUPPORT_ENABLED_MAX),
390
391 REG_VARIABLE(CFG_11H_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
392 struct hdd_config, Is11hSupportEnabled,
393 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
394 CFG_11H_SUPPORT_ENABLED_DEFAULT,
395 CFG_11H_SUPPORT_ENABLED_MIN,
396 CFG_11H_SUPPORT_ENABLED_MAX),
397
398 REG_VARIABLE(CFG_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
399 struct hdd_config, fSupplicantCountryCodeHasPriority,
400 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
401 CFG_COUNTRY_CODE_PRIORITY_DEFAULT,
402 CFG_COUNTRY_CODE_PRIORITY_MIN,
403 CFG_COUNTRY_CODE_PRIORITY_MAX),
404
405 REG_VARIABLE(CFG_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
406 struct hdd_config, HeartbeatThresh24,
407 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
408 CFG_HEARTBEAT_THRESH_24_DEFAULT,
409 CFG_HEARTBEAT_THRESH_24_MIN,
410 CFG_HEARTBEAT_THRESH_24_MAX),
411
412 REG_VARIABLE_STRING(CFG_POWER_USAGE_NAME, WLAN_PARAM_String,
413 struct hdd_config, PowerUsageControl,
414 VAR_FLAGS_OPTIONAL,
415 (void *)CFG_POWER_USAGE_DEFAULT),
416
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800417 REG_VARIABLE(CFG_ENABLE_IMPS_NAME, WLAN_PARAM_Integer,
418 struct hdd_config, fIsImpsEnabled,
419 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
420 CFG_ENABLE_IMPS_DEFAULT,
421 CFG_ENABLE_IMPS_MIN,
422 CFG_ENABLE_IMPS_MAX),
423
424 REG_VARIABLE(CFG_ENABLE_PS_NAME, WLAN_PARAM_Integer,
425 struct hdd_config, is_ps_enabled,
426 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
427 CFG_ENABLE_PS_DEFAULT,
428 CFG_ENABLE_PS_MIN,
429 CFG_ENABLE_PS_MAX),
430
431 REG_VARIABLE(CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
432 struct hdd_config, nBmpsMinListenInterval,
433 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
434 CFG_BMPS_MINIMUM_LI_DEFAULT,
435 CFG_BMPS_MINIMUM_LI_MIN,
436 CFG_BMPS_MINIMUM_LI_MAX),
437
438 REG_VARIABLE(CFG_BMPS_MAXIMUM_LI_NAME, WLAN_PARAM_Integer,
439 struct hdd_config, nBmpsMaxListenInterval,
440 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
441 CFG_BMPS_MAXIMUM_LI_DEFAULT,
442 CFG_BMPS_MAXIMUM_LI_MIN,
443 CFG_BMPS_MAXIMUM_LI_MAX),
444
445 REG_VARIABLE(CFG_BMPS_MODERATE_LI_NAME, WLAN_PARAM_Integer,
446 struct hdd_config, nBmpsModListenInterval,
447 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
448 CFG_BMPS_MODERATE_LI_DEFAULT,
449 CFG_BMPS_MODERATE_LI_MIN,
450 CFG_BMPS_MODERATE_LI_MAX),
451
452 REG_VARIABLE(CFG_DOT11_MODE_NAME, WLAN_PARAM_Integer,
453 struct hdd_config, dot11Mode,
454 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
455 CFG_DOT11_MODE_DEFAULT,
456 CFG_DOT11_MODE_MIN,
457 CFG_DOT11_MODE_MAX),
458
459 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_24GHZ_NAME, WLAN_PARAM_Integer,
460 struct hdd_config, nChannelBondingMode24GHz,
461 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
462 CFG_CHANNEL_BONDING_MODE_DEFAULT,
463 CFG_CHANNEL_BONDING_MODE_MIN,
464 CFG_CHANNEL_BONDING_MODE_MAX),
465
466 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
467 struct hdd_config, nChannelBondingMode5GHz,
468 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
469 CFG_CHANNEL_BONDING_MODE_DEFAULT,
470 CFG_CHANNEL_BONDING_MODE_MIN,
471 CFG_CHANNEL_BONDING_MODE_MAX),
472
473 REG_VARIABLE(CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
474 struct hdd_config, MaxRxAmpduFactor,
475 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
476 CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
477 CFG_MAX_RX_AMPDU_FACTOR_MIN,
478 CFG_MAX_RX_AMPDU_FACTOR_MAX),
479
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -0800480 REG_VARIABLE(CFG_HT_MPDU_DENSITY_NAME, WLAN_PARAM_Integer,
481 struct hdd_config, ht_mpdu_density,
482 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
483 CFG_HT_MPDU_DENSITY_DEFAULT,
484 CFG_HT_MPDU_DENSITY_MIN,
485 CFG_HT_MPDU_DENSITY_MAX),
486
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800487 REG_VARIABLE(CFG_FIXED_RATE_NAME, WLAN_PARAM_Integer,
488 struct hdd_config, TxRate,
489 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
490 CFG_FIXED_RATE_DEFAULT,
491 CFG_FIXED_RATE_MIN,
492 CFG_FIXED_RATE_MAX),
493
494 REG_VARIABLE(CFG_SHORT_GI_20MHZ_NAME, WLAN_PARAM_Integer,
495 struct hdd_config, ShortGI20MhzEnable,
496 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
497 CFG_SHORT_GI_20MHZ_DEFAULT,
498 CFG_SHORT_GI_20MHZ_MIN,
499 CFG_SHORT_GI_20MHZ_MAX),
500
501 REG_VARIABLE(CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
502 struct hdd_config, ScanResultAgeCount,
503 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
504 CFG_SCAN_RESULT_AGE_COUNT_DEFAULT,
505 CFG_SCAN_RESULT_AGE_COUNT_MIN,
506 CFG_SCAN_RESULT_AGE_COUNT_MAX),
507
508 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCNPS_NAME, WLAN_PARAM_Integer,
509 struct hdd_config, nScanAgeTimeNCNPS,
510 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
511 CFG_SCAN_RESULT_AGE_TIME_NCNPS_DEFAULT,
512 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MIN,
513 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MAX),
514
515 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCPS_NAME, WLAN_PARAM_Integer,
516 struct hdd_config, nScanAgeTimeNCPS,
517 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
518 CFG_SCAN_RESULT_AGE_TIME_NCPS_DEFAULT,
519 CFG_SCAN_RESULT_AGE_TIME_NCPS_MIN,
520 CFG_SCAN_RESULT_AGE_TIME_NCPS_MAX),
521
522 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CNPS_NAME, WLAN_PARAM_Integer,
523 struct hdd_config, nScanAgeTimeCNPS,
524 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
525 CFG_SCAN_RESULT_AGE_TIME_CNPS_DEFAULT,
526 CFG_SCAN_RESULT_AGE_TIME_CNPS_MIN,
527 CFG_SCAN_RESULT_AGE_TIME_CNPS_MAX),
528
529 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CPS_NAME, WLAN_PARAM_Integer,
530 struct hdd_config, nScanAgeTimeCPS,
531 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
532 CFG_SCAN_RESULT_AGE_TIME_CPS_DEFAULT,
533 CFG_SCAN_RESULT_AGE_TIME_CPS_MIN,
534 CFG_SCAN_RESULT_AGE_TIME_CPS_MAX),
535
536 REG_VARIABLE(CFG_RSSI_CATEGORY_GAP_NAME, WLAN_PARAM_Integer,
537 struct hdd_config, nRssiCatGap,
538 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
539 CFG_RSSI_CATEGORY_GAP_DEFAULT,
540 CFG_RSSI_CATEGORY_GAP_MIN,
541 CFG_RSSI_CATEGORY_GAP_MAX),
542
543 REG_VARIABLE(CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
544 struct hdd_config, fIsShortPreamble,
545 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
546 CFG_SHORT_PREAMBLE_DEFAULT,
547 CFG_SHORT_PREAMBLE_MIN,
548 CFG_SHORT_PREAMBLE_MAX),
549
550 REG_VARIABLE_STRING(CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
551 struct hdd_config, IbssBssid,
552 VAR_FLAGS_OPTIONAL,
553 (void *)CFG_IBSS_BSSID_DEFAULT),
554
555 REG_VARIABLE_STRING(CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
556 struct hdd_config, intfMacAddr[0],
557 VAR_FLAGS_OPTIONAL,
558 (void *)CFG_INTF0_MAC_ADDR_DEFAULT),
559
560 REG_VARIABLE_STRING(CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
561 struct hdd_config, intfMacAddr[1],
562 VAR_FLAGS_OPTIONAL,
563 (void *)CFG_INTF1_MAC_ADDR_DEFAULT),
564
565 REG_VARIABLE_STRING(CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
566 struct hdd_config, intfMacAddr[2],
567 VAR_FLAGS_OPTIONAL,
568 (void *)CFG_INTF2_MAC_ADDR_DEFAULT),
569
570 REG_VARIABLE_STRING(CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
571 struct hdd_config, intfMacAddr[3],
572 VAR_FLAGS_OPTIONAL,
573 (void *)CFG_INTF3_MAC_ADDR_DEFAULT),
574
575 REG_VARIABLE(CFG_AP_QOS_UAPSD_MODE_NAME, WLAN_PARAM_Integer,
576 struct hdd_config, apUapsdEnabled,
577 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
578 CFG_AP_QOS_UAPSD_MODE_DEFAULT,
579 CFG_AP_QOS_UAPSD_MODE_MIN,
580 CFG_AP_QOS_UAPSD_MODE_MAX),
581
582
583 REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
584 struct hdd_config, apRandomBssidEnabled,
585 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
586 CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT,
587 CFG_AP_ENABLE_RANDOM_BSSID_MIN,
588 CFG_AP_ENABLE_RANDOM_BSSID_MAX),
589
590 REG_VARIABLE(CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
591 struct hdd_config, apProtEnabled,
592 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
593 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
594 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
595 CFG_AP_ENABLE_PROTECTION_MODE_MAX),
596
597 REG_VARIABLE(CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
598 struct hdd_config, apProtection,
599 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
600 CFG_AP_PROTECTION_MODE_DEFAULT,
601 CFG_AP_PROTECTION_MODE_MIN,
602 CFG_AP_PROTECTION_MODE_MAX),
603
604 REG_VARIABLE(CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
605 struct hdd_config, apOBSSProtEnabled,
606 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
607 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
608 CFG_AP_OBSS_PROTECTION_MODE_MIN,
609 CFG_AP_OBSS_PROTECTION_MODE_MAX),
610
611 REG_VARIABLE(CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
612 struct hdd_config, apDisableIntraBssFwd,
613 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
614 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
615 CFG_AP_STA_SECURITY_SEPERATION_MIN,
616 CFG_AP_STA_SECURITY_SEPERATION_MAX),
617
618 REG_VARIABLE(CFG_ENABLE_LTE_COEX, WLAN_PARAM_Integer,
619 struct hdd_config, enableLTECoex,
620 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
621 CFG_ENABLE_LTE_COEX_DEFAULT,
622 CFG_ENABLE_LTE_COEX_MIN,
623 CFG_ENABLE_LTE_COEX_MAX),
624 REG_VARIABLE(CFG_FORCE_SAP_ACS, WLAN_PARAM_Integer,
625 struct hdd_config, force_sap_acs,
626 VAR_FLAGS_DYNAMIC_CFG |
627 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
628 CFG_FORCE_SAP_ACS_DEFAULT,
629 CFG_FORCE_SAP_ACS_MIN,
630 CFG_FORCE_SAP_ACS_MAX),
631
632 REG_VARIABLE(CFG_FORCE_SAP_ACS_START_CH, WLAN_PARAM_Integer,
633 struct hdd_config, force_sap_acs_st_ch,
634 VAR_FLAGS_DYNAMIC_CFG |
635 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
636 CFG_FORCE_SAP_ACS_START_CH_DEFAULT,
637 CFG_FORCE_SAP_ACS_START_CH_MIN,
638 CFG_FORCE_SAP_ACS_START_CH_MAX),
639
640 REG_VARIABLE(CFG_FORCE_SAP_ACS_END_CH, WLAN_PARAM_Integer,
641 struct hdd_config, force_sap_acs_end_ch,
642 VAR_FLAGS_DYNAMIC_CFG |
643 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
644 CFG_FORCE_SAP_ACS_END_CH_DEFAULT,
645 CFG_FORCE_SAP_ACS_END_CH_MIN,
646 CFG_FORCE_SAP_ACS_END_CH_MAX),
647
648 REG_VARIABLE(CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
649 struct hdd_config, apKeepAlivePeriod,
650 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
651 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
652 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
653 CFG_AP_KEEP_ALIVE_PERIOD_MAX),
654
655 REG_VARIABLE(CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
656 struct hdd_config, goKeepAlivePeriod,
657 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
658 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
659 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
660 CFG_GO_KEEP_ALIVE_PERIOD_MAX),
661
662 REG_VARIABLE(CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
663 struct hdd_config, apLinkMonitorPeriod,
664 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
665 CFG_AP_LINK_MONITOR_PERIOD_DEFAULT,
666 CFG_AP_LINK_MONITOR_PERIOD_MIN,
667 CFG_AP_LINK_MONITOR_PERIOD_MAX),
668
669 REG_VARIABLE(CFG_GO_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
670 struct hdd_config, goLinkMonitorPeriod,
671 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
672 CFG_GO_LINK_MONITOR_PERIOD_DEFAULT,
673 CFG_GO_LINK_MONITOR_PERIOD_MIN,
674 CFG_GO_LINK_MONITOR_PERIOD_MAX),
675
676 REG_VARIABLE(CFG_DISABLE_PACKET_FILTER, WLAN_PARAM_Integer,
677 struct hdd_config, disablePacketFilter,
678 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
679 CFG_DISABLE_PACKET_FILTER_DEFAULT,
680 CFG_DISABLE_PACKET_FILTER_MIN,
681 CFG_DISABLE_PACKET_FILTER_MAX),
682
683 REG_VARIABLE(CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
684 struct hdd_config, nBeaconInterval,
685 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
686 CFG_BEACON_INTERVAL_DEFAULT,
687 CFG_BEACON_INTERVAL_MIN,
688 CFG_BEACON_INTERVAL_MAX),
689
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800690 REG_VARIABLE(CFG_VCC_RSSI_TRIGGER_NAME, WLAN_PARAM_Integer,
691 struct hdd_config, nVccRssiTrigger,
692 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
693 CFG_VCC_RSSI_TRIGGER_DEFAULT,
694 CFG_VCC_RSSI_TRIGGER_MIN,
695 CFG_VCC_RSSI_TRIGGER_MAX),
696
697 REG_VARIABLE(CFG_VCC_UL_MAC_LOSS_THRESH_NAME, WLAN_PARAM_Integer,
698 struct hdd_config, nVccUlMacLossThreshold,
699 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
700 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
701 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
702 CFG_VCC_UL_MAC_LOSS_THRESH_MAX),
703
704 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
705 struct hdd_config, nPassiveMaxChnTime,
706 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
707 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
708 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
709 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX),
710
711 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
712 struct hdd_config, nPassiveMinChnTime,
713 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
714 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
715 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
716 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX),
717
718 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
719 struct hdd_config, nActiveMaxChnTime,
720 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
721 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
722 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
723 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX),
724
725 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
726 struct hdd_config, nActiveMinChnTime,
727 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
728 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
729 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
730 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX),
731
732 REG_VARIABLE(CFG_RETRY_LIMIT_ZERO_NAME, WLAN_PARAM_Integer,
733 struct hdd_config, retryLimitZero,
734 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
735 CFG_RETRY_LIMIT_ZERO_DEFAULT,
736 CFG_RETRY_LIMIT_ZERO_MIN,
737 CFG_RETRY_LIMIT_ZERO_MAX),
738
739 REG_VARIABLE(CFG_RETRY_LIMIT_ONE_NAME, WLAN_PARAM_Integer,
740 struct hdd_config, retryLimitOne,
741 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
742 CFG_RETRY_LIMIT_ONE_DEFAULT,
743 CFG_RETRY_LIMIT_ONE_MIN,
744 CFG_RETRY_LIMIT_ONE_MAX),
745
746 REG_VARIABLE(CFG_RETRY_LIMIT_TWO_NAME, WLAN_PARAM_Integer,
747 struct hdd_config, retryLimitTwo,
748 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
749 CFG_RETRY_LIMIT_TWO_DEFAULT,
750 CFG_RETRY_LIMIT_TWO_MIN,
751 CFG_RETRY_LIMIT_TWO_MAX),
752
753#ifdef WLAN_AP_STA_CONCURRENCY
754 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
755 struct hdd_config, nPassiveMaxChnTimeConc,
756 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
757 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
758 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MIN,
759 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MAX),
760
761 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
762 struct hdd_config, nPassiveMinChnTimeConc,
763 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
764 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
765 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MIN,
766 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MAX),
767
768 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
769 struct hdd_config, nActiveMaxChnTimeConc,
770 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
771 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
772 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MIN,
773 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MAX),
774
775 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
776 struct hdd_config, nActiveMinChnTimeConc,
777 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
778 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
779 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MIN,
780 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MAX),
781
782 REG_VARIABLE(CFG_REST_TIME_CONC_NAME, WLAN_PARAM_Integer,
783 struct hdd_config, nRestTimeConc,
784 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
785 CFG_REST_TIME_CONC_DEFAULT,
786 CFG_REST_TIME_CONC_MIN,
787 CFG_REST_TIME_CONC_MAX),
788
Agrawal Ashish17bb3902016-05-05 13:29:40 +0530789 REG_VARIABLE(CFG_MIN_REST_TIME_NAME, WLAN_PARAM_Integer,
790 struct hdd_config, min_rest_time_conc,
791 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
792 CFG_MIN_REST_TIME_DEFAULT,
793 CFG_MIN_REST_TIME_MIN,
794 CFG_MIN_REST_TIME_MAX),
795
796 REG_VARIABLE(CFG_IDLE_TIME_NAME , WLAN_PARAM_Integer,
797 struct hdd_config, idle_time_conc,
798 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
799 CFG_IDLE_TIME_DEFAULT,
800 CFG_IDLE_TIME_MIN,
801 CFG_IDLE_TIME_MAX) ,
802
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800803 REG_VARIABLE(CFG_NUM_STA_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
804 struct hdd_config, nNumStaChanCombinedConc,
805 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
806 CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT,
807 CFG_NUM_STA_CHAN_COMBINED_CONC_MIN,
808 CFG_NUM_STA_CHAN_COMBINED_CONC_MAX),
809
810 REG_VARIABLE(CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
811 struct hdd_config, nNumP2PChanCombinedConc,
812 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
813 CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT,
814 CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN,
815 CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX),
816#endif
817
818 REG_VARIABLE(CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
819 struct hdd_config, nMaxPsPoll,
820 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
821 CFG_MAX_PS_POLL_DEFAULT,
822 CFG_MAX_PS_POLL_MIN,
823 CFG_MAX_PS_POLL_MAX),
824
825 REG_VARIABLE(CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
826 struct hdd_config, nTxPowerCap,
827 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
828 CFG_MAX_TX_POWER_DEFAULT,
829 CFG_MAX_TX_POWER_MIN,
830 CFG_MAX_TX_POWER_MAX),
831
Padma, Santhosh Kumar29df3622016-08-16 19:15:16 +0530832 REG_VARIABLE(CFG_TX_POWER_CTRL_NAME, WLAN_PARAM_Integer,
833 struct hdd_config, allow_tpc_from_ap,
834 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
835 CFG_TX_POWER_CTRL_DEFAULT,
836 CFG_TX_POWER_CTRL_MIN,
837 CFG_TX_POWER_CTRL_MAX),
838
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800839 REG_VARIABLE(CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
840 struct hdd_config, fIsLowGainOverride,
841 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
842 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
843 CFG_LOW_GAIN_OVERRIDE_MIN,
844 CFG_LOW_GAIN_OVERRIDE_MAX),
845
846 REG_VARIABLE(CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
847 struct hdd_config, nRssiFilterPeriod,
848 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
849 CFG_RSSI_FILTER_PERIOD_DEFAULT,
850 CFG_RSSI_FILTER_PERIOD_MIN,
851 CFG_RSSI_FILTER_PERIOD_MAX),
852
853 REG_VARIABLE(CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
854 struct hdd_config, fIgnoreDtim,
855 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
856 CFG_IGNORE_DTIM_DEFAULT,
857 CFG_IGNORE_DTIM_MIN,
858 CFG_IGNORE_DTIM_MAX),
859
860 REG_VARIABLE(CFG_MAX_LI_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
861 struct hdd_config, fMaxLIModulatedDTIM,
862 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
863 CFG_MAX_LI_MODULATED_DTIM_DEFAULT,
864 CFG_MAX_LI_MODULATED_DTIM_MIN,
865 CFG_MAX_LI_MODULATED_DTIM_MAX),
866
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800867 REG_VARIABLE(CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
868 struct hdd_config, fEnableFwHeartBeatMonitoring,
869 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
870 CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
871 CFG_FW_HEART_BEAT_MONITORING_MIN,
872 CFG_FW_HEART_BEAT_MONITORING_MAX),
873
874 REG_VARIABLE(CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
875 struct hdd_config, fEnableFwBeaconFiltering,
876 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
877 CFG_FW_BEACON_FILTERING_DEFAULT,
878 CFG_FW_BEACON_FILTERING_MIN,
879 CFG_FW_BEACON_FILTERING_MAX),
880
881 REG_DYNAMIC_VARIABLE(CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
882 struct hdd_config, fEnableFwRssiMonitoring,
883 VAR_FLAGS_OPTIONAL |
884 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
885 CFG_FW_RSSI_MONITORING_DEFAULT,
886 CFG_FW_RSSI_MONITORING_MIN,
887 CFG_FW_RSSI_MONITORING_MAX,
888 cb_notify_set_fw_rssi_monitoring, 0),
889
890 REG_VARIABLE(CFG_FW_MCC_RTS_CTS_PROT_NAME, WLAN_PARAM_Integer,
891 struct hdd_config, mcc_rts_cts_prot_enable,
892 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
893 CFG_FW_MCC_RTS_CTS_PROT_DEFAULT,
894 CFG_FW_MCC_RTS_CTS_PROT_MIN,
895 CFG_FW_MCC_RTS_CTS_PROT_MAX),
896
897 REG_VARIABLE(CFG_FW_MCC_BCAST_PROB_RESP_NAME, WLAN_PARAM_Integer,
898 struct hdd_config, mcc_bcast_prob_resp_enable,
899 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
900 CFG_FW_MCC_BCAST_PROB_RESP_DEFAULT,
901 CFG_FW_MCC_BCAST_PROB_RESP_MIN,
902 CFG_FW_MCC_BCAST_PROB_RESP_MAX),
903
904 REG_VARIABLE(CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
905 struct hdd_config, nDataInactivityTimeout,
906 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
907 CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
908 CFG_DATA_INACTIVITY_TIMEOUT_MIN,
909 CFG_DATA_INACTIVITY_TIMEOUT_MAX),
910
911 REG_VARIABLE(CFG_QOS_WMM_MODE_NAME, WLAN_PARAM_Integer,
912 struct hdd_config, WmmMode,
913 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
914 CFG_QOS_WMM_MODE_DEFAULT,
915 CFG_QOS_WMM_MODE_MIN,
916 CFG_QOS_WMM_MODE_MAX),
917
918 REG_VARIABLE(CFG_QOS_WMM_80211E_ENABLED_NAME, WLAN_PARAM_Integer,
919 struct hdd_config, b80211eIsEnabled,
920 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
921 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
922 CFG_QOS_WMM_80211E_ENABLED_MIN,
923 CFG_QOS_WMM_80211E_ENABLED_MAX),
924
925 REG_VARIABLE(CFG_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
926 struct hdd_config, UapsdMask,
927 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
928 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
929 CFG_QOS_WMM_UAPSD_MASK_MIN,
930 CFG_QOS_WMM_UAPSD_MASK_MAX),
931
932 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME,
933 WLAN_PARAM_Integer,
934 struct hdd_config, InfraUapsdVoSrvIntv,
935 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
936 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
937 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
938 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX),
939
940 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME,
941 WLAN_PARAM_Integer,
942 struct hdd_config, InfraUapsdVoSuspIntv,
943 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
944 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
945 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
946 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX),
947
948 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME,
949 WLAN_PARAM_Integer,
950 struct hdd_config, InfraUapsdViSrvIntv,
951 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
952 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
953 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
954 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX),
955
956 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME,
957 WLAN_PARAM_Integer,
958 struct hdd_config, InfraUapsdViSuspIntv,
959 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
960 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
961 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
962 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX),
963
964 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME,
965 WLAN_PARAM_Integer,
966 struct hdd_config, InfraUapsdBeSrvIntv,
967 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
968 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
969 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
970 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX),
971
972 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME,
973 WLAN_PARAM_Integer,
974 struct hdd_config, InfraUapsdBeSuspIntv,
975 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
976 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
977 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
978 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX),
979
980 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME,
981 WLAN_PARAM_Integer,
982 struct hdd_config, InfraUapsdBkSrvIntv,
983 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
984 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
985 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
986 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX),
987
988 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME,
989 WLAN_PARAM_Integer,
990 struct hdd_config, InfraUapsdBkSuspIntv,
991 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
992 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
993 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
994 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX),
995
996#ifdef FEATURE_WLAN_ESE
997 REG_VARIABLE(CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME,
998 WLAN_PARAM_Integer,
999 struct hdd_config, InfraInactivityInterval,
1000 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1001 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
1002 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
1003 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
1004
1005 REG_DYNAMIC_VARIABLE(CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1006 struct hdd_config, isEseIniFeatureEnabled,
1007 VAR_FLAGS_OPTIONAL |
1008 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1009 CFG_ESE_FEATURE_ENABLED_DEFAULT,
1010 CFG_ESE_FEATURE_ENABLED_MIN,
1011 CFG_ESE_FEATURE_ENABLED_MAX,
1012 cb_notify_set_ese_feature_enabled, 0),
1013#endif /* FEATURE_WLAN_ESE */
1014
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001015 /* flag to turn ON/OFF Legacy Fast Roaming */
1016 REG_DYNAMIC_VARIABLE(CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1017 struct hdd_config, isFastRoamIniFeatureEnabled,
1018 VAR_FLAGS_OPTIONAL |
1019 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1020 CFG_LFR_FEATURE_ENABLED_DEFAULT,
1021 CFG_LFR_FEATURE_ENABLED_MIN,
1022 CFG_LFR_FEATURE_ENABLED_MAX,
1023 notify_is_fast_roam_ini_feature_enabled, 0),
1024
1025 /* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */
1026 REG_DYNAMIC_VARIABLE(CFG_LFR_MAWC_FEATURE_ENABLED_NAME,
1027 WLAN_PARAM_Integer,
1028 struct hdd_config, MAWCEnabled,
1029 VAR_FLAGS_OPTIONAL |
1030 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1031 CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT,
1032 CFG_LFR_MAWC_FEATURE_ENABLED_MIN,
1033 CFG_LFR_MAWC_FEATURE_ENABLED_MAX,
1034 notify_is_mawc_ini_feature_enabled, 0),
1035
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001036 /* flag to turn ON/OFF 11r and ESE FastTransition */
1037 REG_DYNAMIC_VARIABLE(CFG_FAST_TRANSITION_ENABLED_NAME,
1038 WLAN_PARAM_Integer,
1039 struct hdd_config, isFastTransitionEnabled,
1040 VAR_FLAGS_OPTIONAL |
1041 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1042 CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
1043 CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
1044 CFG_FAST_TRANSITION_ENABLED_NAME_MAX,
1045 cb_notify_set_fast_transition_enabled, 0),
1046
1047 /* Variable to specify the delta/difference between the RSSI of current AP
1048 * and roamable AP while roaming */
1049 REG_DYNAMIC_VARIABLE(CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1050 struct hdd_config, RoamRssiDiff,
1051 VAR_FLAGS_OPTIONAL |
1052 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1053 CFG_ROAM_RSSI_DIFF_DEFAULT,
1054 CFG_ROAM_RSSI_DIFF_MIN,
1055 CFG_ROAM_RSSI_DIFF_MAX,
1056 cb_notify_set_roam_rssi_diff, 0),
1057
1058 REG_DYNAMIC_VARIABLE(CFG_ENABLE_WES_MODE_NAME, WLAN_PARAM_Integer,
1059 struct hdd_config, isWESModeEnabled,
1060 VAR_FLAGS_OPTIONAL |
1061 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1062 CFG_ENABLE_WES_MODE_NAME_DEFAULT,
1063 CFG_ENABLE_WES_MODE_NAME_MIN,
1064 CFG_ENABLE_WES_MODE_NAME_MAX,
1065 cb_notify_set_wes_mode, 0),
Deepak Dhamdheref2a7d8b2016-08-19 16:17:38 -07001066 REG_VARIABLE(CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1067 struct hdd_config, isOkcIniFeatureEnabled,
1068 VAR_FLAGS_OPTIONAL |
1069 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1070 CFG_OKC_FEATURE_ENABLED_DEFAULT,
1071 CFG_OKC_FEATURE_ENABLED_MIN,
1072 CFG_OKC_FEATURE_ENABLED_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001073 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer,
1074 struct hdd_config, isRoamOffloadScanEnabled,
1075 VAR_FLAGS_OPTIONAL |
1076 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1077 CFG_ROAM_SCAN_OFFLOAD_ENABLED_DEFAULT,
1078 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MIN,
1079 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
1080 cb_notify_update_roam_scan_offload_enabled, 0),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001081
1082 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME, WLAN_PARAM_Integer,
1083 struct hdd_config, InfraDirAcVo,
1084 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1085 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
1086 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
1087 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX),
1088
1089 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME,
1090 WLAN_PARAM_HexInteger,
1091 struct hdd_config, InfraNomMsduSizeAcVo,
1092 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1093 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
1094 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
1095 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX),
1096
1097 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME,
1098 WLAN_PARAM_HexInteger,
1099 struct hdd_config, InfraMeanDataRateAcVo,
1100 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1101 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
1102 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
1103 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX),
1104
1105 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME,
1106 WLAN_PARAM_HexInteger,
1107 struct hdd_config, InfraMinPhyRateAcVo,
1108 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1109 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
1110 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
1111 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX),
1112
1113 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME, WLAN_PARAM_HexInteger,
1114 struct hdd_config, InfraSbaAcVo,
1115 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1116 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
1117 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
1118 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX),
1119
1120 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME, WLAN_PARAM_Integer,
1121 struct hdd_config, InfraDirAcVi,
1122 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1123 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
1124 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
1125 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX),
1126
1127 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME,
1128 WLAN_PARAM_HexInteger,
1129 struct hdd_config, InfraNomMsduSizeAcVi,
1130 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1131 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
1132 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
1133 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX),
1134
1135 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME,
1136 WLAN_PARAM_HexInteger,
1137 struct hdd_config, InfraMeanDataRateAcVi,
1138 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1139 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
1140 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
1141 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX),
1142
1143 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME,
1144 WLAN_PARAM_HexInteger,
1145 struct hdd_config, InfraMinPhyRateAcVi,
1146 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1147 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
1148 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
1149 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX),
1150
1151 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME, WLAN_PARAM_HexInteger,
1152 struct hdd_config, InfraSbaAcVi,
1153 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1154 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
1155 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
1156 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX),
1157
1158 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME, WLAN_PARAM_Integer,
1159 struct hdd_config, InfraDirAcBe,
1160 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1161 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
1162 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
1163 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX),
1164
1165 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME,
1166 WLAN_PARAM_HexInteger,
1167 struct hdd_config, InfraNomMsduSizeAcBe,
1168 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1169 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
1170 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
1171 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX),
1172
1173 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME,
1174 WLAN_PARAM_HexInteger,
1175 struct hdd_config, InfraMeanDataRateAcBe,
1176 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1177 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
1178 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
1179 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX),
1180
1181 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME,
1182 WLAN_PARAM_HexInteger,
1183 struct hdd_config, InfraMinPhyRateAcBe,
1184 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1185 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
1186 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
1187 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX),
1188
1189 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME, WLAN_PARAM_HexInteger,
1190 struct hdd_config, InfraSbaAcBe,
1191 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1192 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
1193 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
1194 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX),
1195
1196 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME, WLAN_PARAM_Integer,
1197 struct hdd_config, InfraDirAcBk,
1198 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1199 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
1200 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
1201 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX),
1202
1203 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME,
1204 WLAN_PARAM_HexInteger,
1205 struct hdd_config, InfraNomMsduSizeAcBk,
1206 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1207 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
1208 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
1209 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX),
1210
1211 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME,
1212 WLAN_PARAM_HexInteger,
1213 struct hdd_config, InfraMeanDataRateAcBk,
1214 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1215 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
1216 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
1217 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX),
1218
1219 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME,
1220 WLAN_PARAM_HexInteger,
1221 struct hdd_config, InfraMinPhyRateAcBk,
1222 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1223 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
1224 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
1225 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX),
1226
1227 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME, WLAN_PARAM_HexInteger,
1228 struct hdd_config, InfraSbaAcBk,
1229 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1230 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
1231 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
1232 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX),
1233
1234 REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer,
1235 struct hdd_config, DelayedTriggerFrmInt,
1236 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1237 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
1238 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
1239 CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
1240
1241 REG_VARIABLE_STRING(CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
1242 struct hdd_config, wowlPattern,
1243 VAR_FLAGS_OPTIONAL,
1244 (void *)CFG_WOWL_PATTERN_DEFAULT),
1245
1246 REG_VARIABLE(CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME, WLAN_PARAM_Integer,
1247 struct hdd_config, bImplicitQosEnabled,
1248 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1249 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
1250 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
1251 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX),
1252
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001253 REG_VARIABLE(CFG_AP_AUTO_SHUT_OFF, WLAN_PARAM_Integer,
1254 struct hdd_config, nAPAutoShutOff,
1255 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1256 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
1257 CFG_AP_AUTO_SHUT_OFF_MIN,
1258 CFG_AP_AUTO_SHUT_OFF_MAX),
1259
1260#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
1261 REG_VARIABLE(CFG_WLAN_MCC_TO_SCC_SWITCH_MODE, WLAN_PARAM_Integer,
1262 struct hdd_config, WlanMccToSccSwitchMode,
1263 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1264 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_DEFAULT,
1265 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MIN,
1266 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MAX),
1267#endif
1268#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1269 REG_VARIABLE(CFG_WLAN_AUTO_SHUTDOWN, WLAN_PARAM_Integer,
1270 struct hdd_config, WlanAutoShutdown,
1271 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1272 CFG_WLAN_AUTO_SHUTDOWN_DEFAULT,
1273 CFG_WLAN_AUTO_SHUTDOWN_MIN,
1274 CFG_WLAN_AUTO_SHUTDOWN_MAX),
1275#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001276 REG_VARIABLE(CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
1277 struct hdd_config, fRrmEnable,
1278 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1279 CFG_RRM_ENABLE_DEFAULT,
1280 CFG_RRM_ENABLE_MIN,
1281 CFG_RRM_ENABLE_MAX),
1282
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001283 REG_VARIABLE(CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
1284 struct hdd_config, nRrmRandnIntvl,
1285 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1286 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
1287 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
1288 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX),
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08001289
1290 REG_VARIABLE_STRING(CFG_RM_CAPABILITY_NAME, WLAN_PARAM_String,
1291 struct hdd_config, rm_capability,
1292 VAR_FLAGS_OPTIONAL,
1293 (void *) CFG_RM_CAPABILITY_DEFAULT),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001294
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001295 REG_VARIABLE(CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
1296 struct hdd_config, fFTResourceReqSupported,
1297 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1298 CFG_FT_RESOURCE_REQ_DEFAULT,
1299 CFG_FT_RESOURCE_REQ_MIN,
1300 CFG_FT_RESOURCE_REQ_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001301
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001302 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME,
1303 WLAN_PARAM_Integer,
1304 struct hdd_config, nNeighborScanPeriod,
1305 VAR_FLAGS_OPTIONAL |
1306 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1307 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
1308 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
1309 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX,
1310 cb_notify_set_neighbor_scan_period, 0),
1311
1312 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME,
1313 WLAN_PARAM_Integer,
1314 struct hdd_config, nNeighborLookupRssiThreshold,
1315 VAR_FLAGS_OPTIONAL |
1316 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1317 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
1318 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
1319 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX,
1320 cb_notify_set_neighbor_lookup_rssi_threshold, 0),
1321
1322 REG_DYNAMIC_VARIABLE(CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME,
1323 WLAN_PARAM_Integer,
1324 struct hdd_config, nOpportunisticThresholdDiff,
1325 VAR_FLAGS_OPTIONAL |
1326 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1327 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT,
1328 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN,
1329 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX,
1330 cb_notify_set_opportunistic_scan_threshold_diff, 0),
1331
1332 REG_DYNAMIC_VARIABLE(CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1333 struct hdd_config, nRoamRescanRssiDiff,
1334 VAR_FLAGS_OPTIONAL |
1335 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1336 CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT,
1337 CFG_ROAM_RESCAN_RSSI_DIFF_MIN,
1338 CFG_ROAM_RESCAN_RSSI_DIFF_MAX,
1339 cb_notify_set_roam_rescan_rssi_diff, 0),
1340
1341 REG_VARIABLE_STRING(CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
1342 struct hdd_config, neighborScanChanList,
1343 VAR_FLAGS_OPTIONAL,
1344 (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT),
1345
1346 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME,
1347 WLAN_PARAM_Integer,
1348 struct hdd_config, nNeighborScanMinChanTime,
1349 VAR_FLAGS_OPTIONAL |
1350 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1351 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
1352 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
1353 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX,
1354 cb_notify_set_neighbor_scan_min_chan_time, 0),
1355
1356 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME,
1357 WLAN_PARAM_Integer,
1358 struct hdd_config, nNeighborScanMaxChanTime,
1359 VAR_FLAGS_OPTIONAL |
1360 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1361 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
1362 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
1363 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX,
1364 cb_notify_set_neighbor_scan_max_chan_time, 0),
1365
1366 REG_VARIABLE(CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
1367 struct hdd_config, nMaxNeighborReqTries,
1368 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1369 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
1370 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
1371 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),
1372
1373 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME,
1374 WLAN_PARAM_Integer,
1375 struct hdd_config, nNeighborResultsRefreshPeriod,
1376 VAR_FLAGS_OPTIONAL |
1377 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1378 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
1379 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
1380 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX,
1381 cb_notify_set_neighbor_results_refresh_period, 0),
1382
1383 REG_DYNAMIC_VARIABLE(CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME,
1384 WLAN_PARAM_Integer,
1385 struct hdd_config, nEmptyScanRefreshPeriod,
1386 VAR_FLAGS_OPTIONAL |
1387 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1388 CFG_EMPTY_SCAN_REFRESH_PERIOD_DEFAULT,
1389 CFG_EMPTY_SCAN_REFRESH_PERIOD_MIN,
1390 CFG_EMPTY_SCAN_REFRESH_PERIOD_MAX,
1391 cb_notify_set_empty_scan_refresh_period, 0),
1392
1393 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer,
1394 struct hdd_config, nRoamBmissFirstBcnt,
1395 VAR_FLAGS_OPTIONAL |
1396 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1397 CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT,
1398 CFG_ROAM_BMISS_FIRST_BCNT_MIN,
1399 CFG_ROAM_BMISS_FIRST_BCNT_MAX,
1400 cb_notify_set_roam_bmiss_first_bcnt, 0),
1401
1402 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer,
1403 struct hdd_config, nRoamBmissFinalBcnt,
1404 VAR_FLAGS_OPTIONAL |
1405 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1406 CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT,
1407 CFG_ROAM_BMISS_FINAL_BCNT_MIN,
1408 CFG_ROAM_BMISS_FINAL_BCNT_MAX,
1409 cb_notify_set_roam_bmiss_final_bcnt, 0),
1410
1411 REG_DYNAMIC_VARIABLE(CFG_ROAM_BEACON_RSSI_WEIGHT_NAME,
1412 WLAN_PARAM_Integer,
1413 struct hdd_config, nRoamBeaconRssiWeight,
1414 VAR_FLAGS_OPTIONAL |
1415 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1416 CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT,
1417 CFG_ROAM_BEACON_RSSI_WEIGHT_MIN,
1418 CFG_ROAM_BEACON_RSSI_WEIGHT_MAX,
1419 cb_notify_set_roam_beacon_rssi_weight, 0),
1420
1421 REG_DYNAMIC_VARIABLE(CFG_ROAMING_DFS_CHANNEL_NAME, WLAN_PARAM_Integer,
1422 struct hdd_config, allowDFSChannelRoam,
1423 VAR_FLAGS_OPTIONAL |
1424 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1425 CFG_ROAMING_DFS_CHANNEL_DEFAULT,
1426 CFG_ROAMING_DFS_CHANNEL_MIN,
1427 CFG_ROAMING_DFS_CHANNEL_MAX,
1428 cb_notify_set_dfs_scan_mode, 0),
1429
1430 REG_DYNAMIC_VARIABLE(CFG_DELAY_BEFORE_VDEV_STOP_NAME,
1431 WLAN_PARAM_Integer,
1432 struct hdd_config,
1433 delay_before_vdev_stop,
1434 VAR_FLAGS_OPTIONAL |
1435 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1436 CFG_DELAY_BEFORE_VDEV_STOP_DEFAULT,
1437 CFG_DELAY_BEFORE_VDEV_STOP_MIN,
1438 CFG_DELAY_BEFORE_VDEV_STOP_MAX,
1439 cb_notify_set_delay_before_vdev_stop,
1440 0),
1441
1442 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_NAME,
1443 WLAN_PARAM_Integer,
1444 struct hdd_config,
1445 nhi_rssi_scan_max_count,
1446 VAR_FLAGS_OPTIONAL |
1447 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1448 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_DEFAULT,
1449 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MIN,
1450 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MAX,
1451 cb_notify_set_roam_scan_hi_rssi_scan_params,
1452 eCSR_HI_RSSI_SCAN_MAXCOUNT_ID),
1453
1454 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELTA_NAME,
1455 WLAN_PARAM_Integer,
1456 struct hdd_config,
1457 nhi_rssi_scan_rssi_delta,
1458 VAR_FLAGS_OPTIONAL |
1459 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1460 CFG_ROAM_SCAN_HI_RSSI_DELTA_DEFAULT,
1461 CFG_ROAM_SCAN_HI_RSSI_DELTA_MIN,
1462 CFG_ROAM_SCAN_HI_RSSI_DELTA_MAX,
1463 cb_notify_set_roam_scan_hi_rssi_scan_params,
1464 eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID),
1465
1466 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELAY_NAME,
1467 WLAN_PARAM_Integer,
1468 struct hdd_config,
1469 nhi_rssi_scan_delay,
1470 VAR_FLAGS_OPTIONAL |
1471 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1472 CFG_ROAM_SCAN_HI_RSSI_DELAY_DEFAULT,
1473 CFG_ROAM_SCAN_HI_RSSI_DELAY_MIN,
1474 CFG_ROAM_SCAN_HI_RSSI_DELAY_MAX,
1475 cb_notify_set_roam_scan_hi_rssi_scan_params,
1476 eCSR_HI_RSSI_SCAN_DELAY_ID),
1477
1478 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_UB_NAME,
1479 WLAN_PARAM_SignedInteger,
1480 struct hdd_config,
1481 nhi_rssi_scan_rssi_ub,
1482 VAR_FLAGS_OPTIONAL |
1483 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1484 CFG_ROAM_SCAN_HI_RSSI_UB_DEFAULT,
1485 CFG_ROAM_SCAN_HI_RSSI_UB_MIN,
1486 CFG_ROAM_SCAN_HI_RSSI_UB_MAX,
1487 cb_notify_set_roam_scan_hi_rssi_scan_params,
1488 eCSR_HI_RSSI_SCAN_RSSI_UB_ID),
1489
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001490 REG_VARIABLE(CFG_QOS_WMM_BURST_SIZE_DEFN_NAME, WLAN_PARAM_Integer,
1491 struct hdd_config, burstSizeDefinition,
1492 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1493 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
1494 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
1495 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX),
1496
1497 REG_VARIABLE(CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
1498 struct hdd_config, mcastBcastFilterSetting,
1499 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1500 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
1501 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
1502 CFG_MCAST_BCAST_FILTER_SETTING_MAX),
1503
1504 REG_VARIABLE(CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
1505 struct hdd_config, fhostArpOffload,
1506 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1507 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
1508 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
1509 CFG_ENABLE_HOST_ARPOFFLOAD_MAX),
1510
1511#ifdef FEATURE_WLAN_RA_FILTERING
1512 REG_VARIABLE(CFG_RA_FILTER_ENABLE_NAME, WLAN_PARAM_Integer,
1513 struct hdd_config, IsRArateLimitEnabled,
1514 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1515 CFG_RA_FILTER_ENABLE_DEFAULT,
1516 CFG_RA_FILTER_ENABLE_MIN,
1517 CFG_RA_FILTER_ENABLE_MAX),
1518
1519 REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
1520 struct hdd_config, RArateLimitInterval,
1521 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1522 CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT,
1523 CFG_RA_RATE_LIMIT_INTERVAL_MIN,
1524 CFG_RA_RATE_LIMIT_INTERVAL_MAX),
1525#endif
1526
1527 REG_VARIABLE(CFG_IGNORE_PEER_ERP_INFO_NAME, WLAN_PARAM_Integer,
1528 struct hdd_config, ignore_peer_erp_info,
1529 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1530 CFG_IGNORE_PEER_ERP_INFO_DEFAULT,
1531 CFG_IGNORE_PEER_ERP_INFO_MIN,
1532 CFG_IGNORE_PEER_ERP_INFO_MAX),
1533
1534 REG_VARIABLE(CFG_ENABLE_HOST_SSDP_NAME, WLAN_PARAM_Integer,
1535 struct hdd_config, ssdp,
1536 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1537 CFG_ENABLE_HOST_SSDP_DEFAULT,
1538 CFG_ENABLE_HOST_SSDP_MIN,
1539 CFG_ENABLE_HOST_SSDP_MAX),
1540
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07001541#ifdef FEATURE_RUNTIME_PM
1542 REG_VARIABLE(CFG_ENABLE_RUNTIME_PM, WLAN_PARAM_Integer,
1543 struct hdd_config, runtime_pm,
1544 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1545 CFG_ENABLE_RUNTIME_PM_DEFAULT,
1546 CFG_ENABLE_RUNTIME_PM_MIN,
1547 CFG_ENABLE_RUNTIME_PM_MAX),
1548
1549 REG_VARIABLE(CFG_RUNTIME_PM_DELAY_NAME, WLAN_PARAM_Integer,
1550 struct hdd_config, runtime_pm_delay,
1551 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1552 CFG_RUNTIME_PM_DELAY_DEFAULT,
1553 CFG_RUNTIME_PM_DELAY_MIN,
1554 CFG_RUNTIME_PM_DELAY_MAX),
1555#endif
1556
1557
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001558 REG_VARIABLE(CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer,
1559 struct hdd_config, fhostNSOffload,
1560 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1561 CFG_ENABLE_HOST_NSOFFLOAD_DEFAULT,
1562 CFG_ENABLE_HOST_NSOFFLOAD_MIN,
1563 CFG_ENABLE_HOST_NSOFFLOAD_MAX),
1564
1565 REG_VARIABLE(CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME, WLAN_PARAM_HexInteger,
1566 struct hdd_config, tsInfoAckPolicy,
1567 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1568 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
1569 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
1570 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX),
1571
1572 REG_VARIABLE(CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
1573 struct hdd_config, bSingleTidRc,
1574 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1575 CFG_SINGLE_TID_RC_DEFAULT,
1576 CFG_SINGLE_TID_RC_MIN,
1577 CFG_SINGLE_TID_RC_MAX),
1578
1579 REG_VARIABLE(CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
1580 struct hdd_config, dynamicPsPollValue,
1581 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1582 CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
1583 CFG_DYNAMIC_PSPOLL_VALUE_MIN,
1584 CFG_DYNAMIC_PSPOLL_VALUE_MAX),
1585
1586 REG_VARIABLE(CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
1587 struct hdd_config, teleBcnWakeupEn,
1588 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1589 CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
1590 CFG_TELE_BCN_WAKEUP_EN_MIN,
1591 CFG_TELE_BCN_WAKEUP_EN_MAX),
1592
1593 REG_VARIABLE(CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
1594 struct hdd_config, infraStaKeepAlivePeriod,
1595 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1596 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
1597 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
1598 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),
1599
1600 REG_VARIABLE(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME, WLAN_PARAM_Integer,
1601 struct hdd_config, AddTSWhenACMIsOff,
1602 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1603 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
1604 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
1605 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX),
1606
1607 REG_VARIABLE(CFG_VALIDATE_SCAN_LIST_NAME, WLAN_PARAM_Integer,
1608 struct hdd_config, fValidateScanList,
1609 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1610 CFG_VALIDATE_SCAN_LIST_DEFAULT,
1611 CFG_VALIDATE_SCAN_LIST_MIN,
1612 CFG_VALIDATE_SCAN_LIST_MAX),
1613
1614 REG_VARIABLE(CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
1615 struct hdd_config, nNullDataApRespTimeout,
1616 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1617 CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
1618 CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
1619 CFG_NULLDATA_AP_RESP_TIMEOUT_MAX),
1620
1621 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1622 struct hdd_config, apDataAvailPollPeriodInMs,
1623 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1624 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1625 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1626 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1627
1628 REG_VARIABLE(CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
1629 struct hdd_config, nBandCapability,
1630 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1631 CFG_BAND_CAPABILITY_DEFAULT,
1632 CFG_BAND_CAPABILITY_MIN,
1633 CFG_BAND_CAPABILITY_MAX),
1634
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301635/* CFG_QDF_TRACE_ENABLE Parameters */
1636 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
1637 struct hdd_config, qdf_trace_enable_wdi,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001638 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301639 CFG_QDF_TRACE_ENABLE_DEFAULT,
1640 CFG_QDF_TRACE_ENABLE_MIN,
1641 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001642
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301643 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
1644 struct hdd_config, qdf_trace_enable_hdd,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001645 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301646 CFG_QDF_TRACE_ENABLE_DEFAULT,
1647 CFG_QDF_TRACE_ENABLE_MIN,
1648 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001649
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301650 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_BMI_NAME, WLAN_PARAM_Integer,
1651 struct hdd_config, qdf_trace_enable_bmi,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001652 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301653 CFG_QDF_TRACE_ENABLE_DEFAULT,
1654 CFG_QDF_TRACE_ENABLE_MIN,
1655 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001656
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301657 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
1658 struct hdd_config, qdf_trace_enable_sme,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001659 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301660 CFG_QDF_TRACE_ENABLE_DEFAULT,
1661 CFG_QDF_TRACE_ENABLE_MIN,
1662 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001663
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301664 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
1665 struct hdd_config, qdf_trace_enable_pe,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001666 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301667 CFG_QDF_TRACE_ENABLE_DEFAULT,
1668 CFG_QDF_TRACE_ENABLE_MIN,
1669 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001670
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301671 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_WMA_NAME, WLAN_PARAM_Integer,
1672 struct hdd_config, qdf_trace_enable_wma,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001673 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301674 CFG_QDF_TRACE_ENABLE_DEFAULT,
1675 CFG_QDF_TRACE_ENABLE_MIN,
1676 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001677
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301678 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
1679 struct hdd_config, qdf_trace_enable_sys,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001680 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301681 CFG_QDF_TRACE_ENABLE_DEFAULT,
1682 CFG_QDF_TRACE_ENABLE_MIN,
1683 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001684
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301685 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_QDF_NAME, WLAN_PARAM_Integer,
1686 struct hdd_config, qdf_trace_enable_qdf,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001687 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301688 CFG_QDF_TRACE_ENABLE_DEFAULT,
1689 CFG_QDF_TRACE_ENABLE_MIN,
1690 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001691
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301692 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
1693 struct hdd_config, qdf_trace_enable_sap,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001694 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301695 CFG_QDF_TRACE_ENABLE_DEFAULT,
1696 CFG_QDF_TRACE_ENABLE_MIN,
1697 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001698
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301699 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
1700 struct hdd_config, qdf_trace_enable_hdd_sap,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001701 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301702 CFG_QDF_TRACE_ENABLE_DEFAULT,
1703 CFG_QDF_TRACE_ENABLE_MIN,
1704 CFG_QDF_TRACE_ENABLE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001705
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301706 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_CFG_NAME, WLAN_PARAM_Integer,
1707 struct hdd_config, qdf_trace_enable_cfg,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301708 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301709 CFG_QDF_TRACE_ENABLE_DEFAULT,
1710 CFG_QDF_TRACE_ENABLE_MIN,
1711 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301712
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301713 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_TXRX_NAME, WLAN_PARAM_Integer,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301714 struct hdd_config, cfd_trace_enable_txrx,
1715 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301716 CFG_QDF_TRACE_ENABLE_DEFAULT,
1717 CFG_QDF_TRACE_ENABLE_MIN,
1718 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301719
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301720 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HTC_NAME, WLAN_PARAM_Integer,
1721 struct hdd_config, qdf_trace_enable_htc,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301722 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301723 CFG_QDF_TRACE_ENABLE_DEFAULT,
1724 CFG_QDF_TRACE_ENABLE_MIN,
1725 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301726
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301727 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HIF_NAME, WLAN_PARAM_Integer,
1728 struct hdd_config, qdf_trace_enable_hif,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301729 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301730 CFG_QDF_TRACE_ENABLE_DEFAULT,
1731 CFG_QDF_TRACE_ENABLE_MIN,
1732 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301733
1734 REG_VARIABLE(CFG_CDR_TRACE_ENABLE_HDD_SAP_DATA_NAME, WLAN_PARAM_Integer,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301735 struct hdd_config, qdf_trace_enable_hdd_sap_data,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301736 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301737 CFG_QDF_TRACE_ENABLE_DEFAULT,
1738 CFG_QDF_TRACE_ENABLE_MIN,
1739 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301740
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301741 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_HDD_DATA_NAME, WLAN_PARAM_Integer,
1742 struct hdd_config, qdf_trace_enable_hdd_data,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301743 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301744 CFG_QDF_TRACE_ENABLE_DEFAULT,
1745 CFG_QDF_TRACE_ENABLE_MIN,
1746 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301747
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301748 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_EPPING, WLAN_PARAM_Integer,
1749 struct hdd_config, qdf_trace_enable_epping,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301750 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301751 CFG_QDF_TRACE_ENABLE_DEFAULT,
1752 CFG_QDF_TRACE_ENABLE_MIN,
1753 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301754
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301755 REG_VARIABLE(CFG_QDF_TRACE_ENABLE_QDF_DEVICES, WLAN_PARAM_Integer,
1756 struct hdd_config, qdf_trace_enable_qdf_devices,
Bhargav Shah480a90f2015-06-24 15:10:14 +05301757 VAR_FLAGS_OPTIONAL,
Anurag Chouhanf04e84f2016-03-03 10:12:12 +05301758 CFG_QDF_TRACE_ENABLE_DEFAULT,
1759 CFG_QDF_TRACE_ENABLE_MIN,
1760 CFG_QDF_TRACE_ENABLE_MAX),
Bhargav Shah480a90f2015-06-24 15:10:14 +05301761
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001762 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
1763 struct hdd_config, nTeleBcnTransListenInterval,
1764 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1765 CFG_TELE_BCN_TRANS_LI_DEFAULT,
1766 CFG_TELE_BCN_TRANS_LI_MIN,
1767 CFG_TELE_BCN_TRANS_LI_MAX),
1768
1769 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME,
1770 WLAN_PARAM_Integer,
1771 struct hdd_config, nTeleBcnTransLiNumIdleBeacons,
1772 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1773 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
1774 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
1775 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX),
1776
1777 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
1778 struct hdd_config, nTeleBcnMaxListenInterval,
1779 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1780 CFG_TELE_BCN_MAX_LI_DEFAULT,
1781 CFG_TELE_BCN_MAX_LI_MIN,
1782 CFG_TELE_BCN_MAX_LI_MAX),
1783
1784 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1785 struct hdd_config, nTeleBcnMaxLiNumIdleBeacons,
1786 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1787 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
1788 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
1789 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX),
1790
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001791 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1792 struct hdd_config, apDataAvailPollPeriodInMs,
1793 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1794 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1795 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1796 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1797
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001798 REG_VARIABLE(CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
1799 struct hdd_config, enableBypass11d,
1800 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1801 CFG_ENABLE_BYPASS_11D_DEFAULT,
1802 CFG_ENABLE_BYPASS_11D_MIN,
1803 CFG_ENABLE_BYPASS_11D_MAX),
1804
1805 REG_VARIABLE(CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1806 struct hdd_config, enableDFSChnlScan,
1807 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1808 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
1809 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
1810 CFG_ENABLE_DFS_CHNL_SCAN_MAX),
1811
1812 REG_VARIABLE(CFG_ENABLE_DFS_PNO_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1813 struct hdd_config, enable_dfs_pno_chnl_scan,
1814 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1815 CFG_ENABLE_DFS_PNO_CHNL_SCAN_DEFAULT,
1816 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MIN,
1817 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MAX),
1818
1819 REG_VARIABLE(CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
1820 struct hdd_config, enableDynamicDTIM,
1821 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1822 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
1823 CFG_ENABLE_DYNAMIC_DTIM_MIN,
1824 CFG_ENABLE_DYNAMIC_DTIM_MAX),
1825
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001826 REG_VARIABLE(CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
1827 struct hdd_config, ShortGI40MhzEnable,
1828 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1829 CFG_SHORT_GI_40MHZ_DEFAULT,
1830 CFG_SHORT_GI_40MHZ_MIN,
1831 CFG_SHORT_GI_40MHZ_MAX),
1832
1833 REG_DYNAMIC_VARIABLE(CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
1834 struct hdd_config, reportMaxLinkSpeed,
1835 VAR_FLAGS_OPTIONAL |
1836 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1837 CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
1838 CFG_REPORT_MAX_LINK_SPEED_MIN,
1839 CFG_REPORT_MAX_LINK_SPEED_MAX,
1840 NULL, 0),
1841
1842 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
1843 struct hdd_config, linkSpeedRssiHigh,
1844 VAR_FLAGS_OPTIONAL |
1845 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1846 CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
1847 CFG_LINK_SPEED_RSSI_HIGH_MIN,
1848 CFG_LINK_SPEED_RSSI_HIGH_MAX,
1849 NULL, 0),
1850
1851 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger,
1852 struct hdd_config, linkSpeedRssiMid,
1853 VAR_FLAGS_OPTIONAL |
1854 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1855 CFG_LINK_SPEED_RSSI_MID_DEFAULT,
1856 CFG_LINK_SPEED_RSSI_MID_MIN,
1857 CFG_LINK_SPEED_RSSI_MID_MAX,
1858 NULL, 0),
1859
1860 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
1861 struct hdd_config, linkSpeedRssiLow,
1862 VAR_FLAGS_OPTIONAL |
1863 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1864 CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
1865 CFG_LINK_SPEED_RSSI_LOW_MIN,
1866 CFG_LINK_SPEED_RSSI_LOW_MAX,
1867 NULL, 0),
1868
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001869 REG_DYNAMIC_VARIABLE(CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
1870 struct hdd_config, nRoamPrefer5GHz,
1871 VAR_FLAGS_OPTIONAL |
1872 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1873 CFG_ROAM_PREFER_5GHZ_DEFAULT,
1874 CFG_ROAM_PREFER_5GHZ_MIN,
1875 CFG_ROAM_PREFER_5GHZ_MAX,
1876 cb_notify_set_roam_prefer5_g_hz, 0),
1877
1878 REG_DYNAMIC_VARIABLE(CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer,
1879 struct hdd_config, nRoamIntraBand,
1880 VAR_FLAGS_OPTIONAL |
1881 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1882 CFG_ROAM_INTRA_BAND_DEFAULT,
1883 CFG_ROAM_INTRA_BAND_MIN,
1884 CFG_ROAM_INTRA_BAND_MAX,
1885 cb_notify_set_roam_intra_band, 0),
1886
1887 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer,
1888 struct hdd_config, nProbes,
1889 VAR_FLAGS_OPTIONAL |
1890 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1891 CFG_ROAM_SCAN_N_PROBES_DEFAULT,
1892 CFG_ROAM_SCAN_N_PROBES_MIN,
1893 CFG_ROAM_SCAN_N_PROBES_MAX,
1894 cb_notify_set_roam_scan_n_probes, 0),
1895
1896 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer,
1897 struct hdd_config, nRoamScanHomeAwayTime,
1898 VAR_FLAGS_OPTIONAL |
1899 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1900 CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT,
1901 CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN,
1902 CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX,
1903 cb_notify_set_roam_scan_home_away_time, 0),
1904
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001905 REG_VARIABLE(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME,
1906 WLAN_PARAM_Integer,
1907 struct hdd_config, isP2pDeviceAddrAdministrated,
1908 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1909 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
1910 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
1911 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX),
1912
1913 REG_VARIABLE(CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
1914 struct hdd_config, enableMCC,
1915 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1916 CFG_ENABLE_MCC_ENABLED_DEFAULT,
1917 CFG_ENABLE_MCC_ENABLED_MIN,
1918 CFG_ENABLE_MCC_ENABLED_MAX),
1919
1920 REG_VARIABLE(CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
1921 struct hdd_config, allowMCCGODiffBI,
1922 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1923 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
1924 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
1925 CFG_ALLOW_MCC_GO_DIFF_BI_MAX),
1926
1927 REG_VARIABLE(CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
1928 struct hdd_config, thermalMitigationEnable,
1929 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1930 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
1931 CFG_THERMAL_MIGRATION_ENABLE_MIN,
1932 CFG_THERMAL_MIGRATION_ENABLE_MAX),
1933
1934 REG_VARIABLE(CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer,
1935 struct hdd_config, throttlePeriod,
1936 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1937 CFG_THROTTLE_PERIOD_DEFAULT,
1938 CFG_THROTTLE_PERIOD_MIN,
1939 CFG_THROTTLE_PERIOD_MAX),
1940
Poddar, Siddarth83905022016-04-16 17:56:08 -07001941 REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL0_NAME, WLAN_PARAM_Integer,
1942 struct hdd_config, throttle_dutycycle_level0,
1943 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1944 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_DEFAULT,
1945 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MIN,
1946 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MAX),
1947
1948 REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL1_NAME, WLAN_PARAM_Integer,
1949 struct hdd_config, throttle_dutycycle_level1,
1950 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1951 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_DEFAULT,
1952 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MIN,
1953 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MAX),
1954
1955 REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL2_NAME, WLAN_PARAM_Integer,
1956 struct hdd_config, throttle_dutycycle_level2,
1957 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1958 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_DEFAULT,
1959 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MIN,
1960 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MAX),
1961
1962 REG_VARIABLE(CFG_THROTTLE_DUTY_CYCLE_LEVEL3_NAME, WLAN_PARAM_Integer,
1963 struct hdd_config, throttle_dutycycle_level3,
1964 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1965 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_DEFAULT,
1966 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN,
1967 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX),
1968
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001969 REG_VARIABLE(CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
1970 struct hdd_config, enableModulatedDTIM,
1971 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1972 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
1973 CFG_ENABLE_MODULATED_DTIM_MIN,
1974 CFG_ENABLE_MODULATED_DTIM_MAX),
1975
1976 REG_VARIABLE(CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
1977 struct hdd_config, fEnableMCAddrList,
1978 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1979 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
1980 CFG_MC_ADDR_LIST_ENABLE_MIN,
1981 CFG_MC_ADDR_LIST_ENABLE_MAX),
1982
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001983 REG_VARIABLE(CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
1984 struct hdd_config, vhtChannelWidth,
1985 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1986 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
1987 CFG_VHT_CHANNEL_WIDTH_MIN,
1988 CFG_VHT_CHANNEL_WIDTH_MAX),
1989
1990 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
1991 struct hdd_config, vhtRxMCS,
1992 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1993 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
1994 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
1995 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),
1996
1997 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
1998 struct hdd_config, vhtTxMCS,
1999 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2000 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
2001 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
2002 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),
2003
2004 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer,
2005 struct hdd_config, vhtRxMCS2x2,
2006 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2007 CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT,
2008 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN,
2009 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX),
2010
2011 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer,
2012 struct hdd_config, vhtTxMCS2x2,
2013 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2014 CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT,
2015 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN,
2016 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX),
2017
2018 REG_VARIABLE(CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer,
2019 struct hdd_config, enable2x2,
2020 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2021 CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT,
2022 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
2023 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX),
2024
Kiran Kumar Lokere666bf852016-05-02 12:23:02 -07002025 REG_VARIABLE(CFG_VDEV_TYPE_NSS_2G, WLAN_PARAM_Integer,
2026 struct hdd_config, vdev_type_nss_2g,
2027 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2028 CFG_VDEV_TYPE_NSS_2G_DEFAULT,
2029 CFG_VDEV_TYPE_NSS_2G_MIN,
2030 CFG_VDEV_TYPE_NSS_2G_MAX),
2031
Kiran Kumar Lokere1aa9c9a2016-10-05 18:50:59 -07002032 REG_VARIABLE(CFG_STA_PREFER_80MHZ_OVER_160MHZ, WLAN_PARAM_Integer,
2033 struct hdd_config, sta_prefer_80MHz_over_160MHz,
2034 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2035 CFG_STA_PREFER_80MHZ_OVER_160MHZ_DEFAULT,
2036 CFG_STA_PREFER_80MHZ_OVER_160MHZ_MIN,
2037 CFG_STA_PREFER_80MHZ_OVER_160MHZ_MAX),
2038
Kiran Kumar Lokere666bf852016-05-02 12:23:02 -07002039 REG_VARIABLE(CFG_VDEV_TYPE_NSS_5G, WLAN_PARAM_Integer,
2040 struct hdd_config, vdev_type_nss_5g,
2041 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2042 CFG_VDEV_TYPE_NSS_5G_DEFAULT,
2043 CFG_VDEV_TYPE_NSS_5G_MIN,
2044 CFG_VDEV_TYPE_NSS_5G_MAX),
2045
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002046 REG_VARIABLE(CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2047 struct hdd_config, enableMuBformee,
2048 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2049 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT,
2050 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN,
2051 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX),
2052
2053 REG_VARIABLE(CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer,
2054 struct hdd_config, enableVhtpAid,
2055 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2056 CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT,
2057 CFG_VHT_ENABLE_PAID_FEATURE_MIN,
2058 CFG_VHT_ENABLE_PAID_FEATURE_MAX),
2059
2060 REG_VARIABLE(CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer,
2061 struct hdd_config, enableVhtGid,
2062 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2063 CFG_VHT_ENABLE_GID_FEATURE_DEFAULT,
2064 CFG_VHT_ENABLE_GID_FEATURE_MIN,
2065 CFG_VHT_ENABLE_GID_FEATURE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002066
2067 REG_VARIABLE(CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer,
2068 struct hdd_config, txchainmask1x1,
2069 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2070 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT,
2071 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN,
2072 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX),
2073
2074 REG_VARIABLE(CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer,
2075 struct hdd_config, rxchainmask1x1,
2076 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2077 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT,
2078 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN,
2079 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX),
2080
2081 REG_VARIABLE(CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer,
2082 struct hdd_config, enableAmpduPs,
2083 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2084 CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT,
2085 CFG_ENABLE_AMPDUPS_FEATURE_MIN,
2086 CFG_ENABLE_AMPDUPS_FEATURE_MAX),
2087
2088 REG_VARIABLE(CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2089 struct hdd_config, enableHtSmps,
2090 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2091 CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT,
2092 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN,
2093 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX),
2094
2095 REG_VARIABLE(CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2096 struct hdd_config, htSmps,
2097 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2098 CFG_HT_SMPS_CAP_FEATURE_DEFAULT,
2099 CFG_HT_SMPS_CAP_FEATURE_MIN,
2100 CFG_HT_SMPS_CAP_FEATURE_MAX),
2101
2102 REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
2103 struct hdd_config, disableDFSChSwitch,
2104 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2105 CFG_DISABLE_DFS_CH_SWITCH_DEFAULT,
2106 CFG_DISABLE_DFS_CH_SWITCH_MIN,
2107 CFG_DISABLE_DFS_CH_SWITCH_MAX),
2108
2109 REG_VARIABLE(CFG_ENABLE_DFS_MASTER_CAPABILITY, WLAN_PARAM_Integer,
2110 struct hdd_config, enableDFSMasterCap,
2111 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2112 CFG_ENABLE_DFS_MASTER_CAPABILITY_DEFAULT,
2113 CFG_ENABLE_DFS_MASTER_CAPABILITY_MIN,
2114 CFG_ENABLE_DFS_MASTER_CAPABILITY_MAX),
2115
2116 REG_DYNAMIC_VARIABLE(CFG_SAP_PREFERRED_CHANNEL_LOCATION,
2117 WLAN_PARAM_Integer,
2118 struct hdd_config, gSapPreferredChanLocation,
2119 VAR_FLAGS_OPTIONAL |
2120 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2121 CFG_SAP_PREFERRED_CHANNEL_LOCATION_DEFAULT,
2122 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MIN,
2123 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MAX,
2124 cb_notify_set_g_sap_preferred_chan_location, 0),
2125 REG_DYNAMIC_VARIABLE(CFG_DISABLE_DFS_JAPAN_W53, WLAN_PARAM_Integer,
2126 struct hdd_config, gDisableDfsJapanW53,
2127 VAR_FLAGS_OPTIONAL |
2128 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2129 CFG_DISABLE_DFS_JAPAN_W53_DEFAULT,
2130 CFG_DISABLE_DFS_JAPAN_W53_MIN,
2131 CFG_DISABLE_DFS_JAPAN_W53_MAX,
2132 ch_notify_set_g_disable_dfs_japan_w53, 0),
2133 REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
2134 struct hdd_config, enableFirstScan2GOnly,
2135 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2136 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
2137 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
2138 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX),
2139
2140 REG_VARIABLE(CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
2141 struct hdd_config, skipDfsChnlInP2pSearch,
2142 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2143 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
2144 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
2145 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX),
2146
2147 REG_VARIABLE(CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME,
2148 WLAN_PARAM_Integer,
2149 struct hdd_config, ignoreDynamicDtimInP2pMode,
2150 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2151 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
2152 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
2153 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX),
2154
2155 REG_VARIABLE(CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
2156 struct hdd_config, enableRxSTBC,
2157 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2158 CFG_ENABLE_RX_STBC_DEFAULT,
2159 CFG_ENABLE_RX_STBC_MIN,
2160 CFG_ENABLE_RX_STBC_MAX),
2161
2162 REG_VARIABLE(CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer,
2163 struct hdd_config, enableTxSTBC,
2164 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2165 CFG_ENABLE_TX_STBC_DEFAULT,
2166 CFG_ENABLE_TX_STBC_MIN,
2167 CFG_ENABLE_TX_STBC_MAX),
2168
2169 REG_VARIABLE(CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer,
2170 struct hdd_config, enableRxLDPC,
2171 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2172 CFG_ENABLE_RX_LDPC_DEFAULT,
2173 CFG_ENABLE_RX_LDPC_MIN,
2174 CFG_ENABLE_RX_LDPC_MAX),
2175
2176 REG_VARIABLE(CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer,
2177 struct hdd_config, enable5gEBT,
2178 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2179 CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT,
2180 CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN,
2181 CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX),
2182
2183#ifdef FEATURE_WLAN_TDLS
2184 REG_VARIABLE(CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2185 struct hdd_config, fEnableTDLSSupport,
2186 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2187 CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
2188 CFG_TDLS_SUPPORT_ENABLE_MIN,
2189 CFG_TDLS_SUPPORT_ENABLE_MAX),
2190
2191 REG_VARIABLE(CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer,
2192 struct hdd_config, fEnableTDLSImplicitTrigger,
2193 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2194 CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT,
2195 CFG_TDLS_IMPLICIT_TRIGGER_MIN,
2196 CFG_TDLS_IMPLICIT_TRIGGER_MAX),
2197
2198 REG_VARIABLE(CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer,
2199 struct hdd_config, fTDLSTxStatsPeriod,
2200 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2201 CFG_TDLS_TX_STATS_PERIOD_DEFAULT,
2202 CFG_TDLS_TX_STATS_PERIOD_MIN,
2203 CFG_TDLS_TX_STATS_PERIOD_MAX),
2204
2205 REG_VARIABLE(CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2206 struct hdd_config, fTDLSTxPacketThreshold,
2207 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2208 CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT,
2209 CFG_TDLS_TX_PACKET_THRESHOLD_MIN,
2210 CFG_TDLS_TX_PACKET_THRESHOLD_MAX),
2211
2212 REG_VARIABLE(CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
2213 struct hdd_config, fTDLSMaxDiscoveryAttempt,
2214 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2215 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT,
2216 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN,
2217 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX),
2218
Kabilan Kannanca670be2015-11-23 01:56:12 -08002219 REG_VARIABLE(CFG_TDLS_IDLE_TIMEOUT, WLAN_PARAM_Integer,
2220 struct hdd_config, tdls_idle_timeout,
2221 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2222 CFG_TDLS_IDLE_TIMEOUT_DEFAULT,
2223 CFG_TDLS_IDLE_TIMEOUT_MIN,
2224 CFG_TDLS_IDLE_TIMEOUT_MAX),
2225
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002226 REG_VARIABLE(CFG_TDLS_IDLE_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2227 struct hdd_config, fTDLSIdlePacketThreshold,
2228 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2229 CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT,
2230 CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN,
2231 CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX),
2232
2233 REG_VARIABLE(CFG_TDLS_RSSI_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger,
2234 struct hdd_config, fTDLSRSSITriggerThreshold,
2235 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2236 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT,
2237 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN,
2238 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX),
2239
2240 REG_VARIABLE(CFG_TDLS_RSSI_TEARDOWN_THRESHOLD, WLAN_PARAM_SignedInteger,
2241 struct hdd_config, fTDLSRSSITeardownThreshold,
2242 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2243 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT,
2244 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN,
2245 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX),
2246
2247 REG_VARIABLE(CFG_TDLS_RSSI_DELTA, WLAN_PARAM_SignedInteger,
2248 struct hdd_config, fTDLSRSSIDelta,
2249 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2250 CFG_TDLS_RSSI_DELTA_DEFAULT,
2251 CFG_TDLS_RSSI_DELTA_MIN,
2252 CFG_TDLS_RSSI_DELTA_MAX),
2253
2254 REG_VARIABLE(CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
2255 struct hdd_config, fTDLSUapsdMask,
2256 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2257 CFG_TDLS_QOS_WMM_UAPSD_MASK_DEFAULT,
2258 CFG_TDLS_QOS_WMM_UAPSD_MASK_MIN,
2259 CFG_TDLS_QOS_WMM_UAPSD_MASK_MAX),
2260
2261 REG_VARIABLE(CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2262 struct hdd_config, fEnableTDLSBufferSta,
2263 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2264 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT,
2265 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN,
2266 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX),
2267
2268 REG_VARIABLE(CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2269 struct hdd_config, fEnableTDLSOffChannel,
2270 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2271 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT,
2272 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN,
2273 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX),
2274
2275 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM, WLAN_PARAM_Integer,
2276 struct hdd_config, fTDLSPrefOffChanNum,
2277 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2278 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEFAULT,
2279 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN,
2280 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX),
2281
2282 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_BW, WLAN_PARAM_Integer,
2283 struct hdd_config, fTDLSPrefOffChanBandwidth,
2284 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2285 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_DEFAULT,
2286 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MIN,
2287 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MAX),
2288
2289 REG_VARIABLE(CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer,
2290 struct hdd_config, fTDLSPuapsdInactivityTimer,
2291 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2292 CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT,
2293 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN,
2294 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX),
2295
2296 REG_VARIABLE(CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer,
2297 struct hdd_config, fTDLSRxFrameThreshold,
2298 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2299 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT,
2300 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN,
2301 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX),
2302
2303 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW,
2304 WLAN_PARAM_Integer,
2305 struct hdd_config, fTDLSPuapsdPTIWindow,
2306 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2307 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_DEFAULT,
2308 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MIN,
2309 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MAX),
2310
2311 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT,
2312 WLAN_PARAM_Integer,
2313 struct hdd_config, fTDLSPuapsdPTRTimeout,
2314 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2315 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_DEFAULT,
2316 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MIN,
2317 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MAX),
2318
2319 REG_VARIABLE(CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer,
2320 struct hdd_config, fTDLSExternalControl,
2321 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2322 CFG_TDLS_EXTERNAL_CONTROL_DEFAULT,
2323 CFG_TDLS_EXTERNAL_CONTROL_MIN,
2324 CFG_TDLS_EXTERNAL_CONTROL_MAX),
2325 REG_VARIABLE(CFG_TDLS_WMM_MODE_ENABLE, WLAN_PARAM_Integer,
2326 struct hdd_config, fEnableTDLSWmmMode,
2327 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2328 CFG_TDLS_WMM_MODE_ENABLE_DEFAULT,
2329 CFG_TDLS_WMM_MODE_ENABLE_MIN,
2330 CFG_TDLS_WMM_MODE_ENABLE_MAX),
2331
2332 REG_VARIABLE(CFG_TDLS_SCAN_ENABLE, WLAN_PARAM_Integer,
2333 struct hdd_config, enable_tdls_scan,
2334 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2335 CFG_TDLS_SCAN_ENABLE_DEFAULT,
2336 CFG_TDLS_SCAN_ENABLE_MIN,
2337 CFG_TDLS_SCAN_ENABLE_MAX),
Kabilan Kannan421714b2015-11-23 04:44:59 -08002338
2339 REG_VARIABLE(CFG_TDLS_PEER_KICKOUT_THRESHOLD, WLAN_PARAM_Integer,
2340 struct hdd_config, tdls_peer_kickout_threshold,
2341 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2342 CFG_TDLS_PEER_KICKOUT_THRESHOLD_DEFAULT,
2343 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MIN,
2344 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MAX),
2345
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002346#endif
2347
2348#ifdef WLAN_SOFTAP_VSTA_FEATURE
2349 REG_VARIABLE(CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2350 struct hdd_config, fEnableVSTASupport,
2351 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2352 CFG_VSTA_SUPPORT_ENABLE_DEFAULT,
2353 CFG_VSTA_SUPPORT_ENABLE_MIN,
2354 CFG_VSTA_SUPPORT_ENABLE_MAX),
2355#endif
2356 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2357 struct hdd_config, enableLpwrImgTransition,
2358 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2359 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2360 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2361 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2362
2363 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2364 struct hdd_config, enableLpwrImgTransition,
2365 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2366 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2367 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2368 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2369
2370 REG_VARIABLE(CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer,
2371 struct hdd_config, scanAgingTimeout,
2372 VAR_FLAGS_OPTIONAL,
2373 CFG_SCAN_AGING_PARAM_DEFAULT,
2374 CFG_SCAN_AGING_PARAM_MIN,
2375 CFG_SCAN_AGING_PARAM_MAX),
2376
2377 REG_VARIABLE(CFG_TX_LDPC_ENABLE_FEATURE, WLAN_PARAM_Integer,
2378 struct hdd_config, enableTxLdpc,
2379 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2380 CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT,
2381 CFG_TX_LDPC_ENABLE_FEATURE_MIN,
2382 CFG_TX_LDPC_ENABLE_FEATURE_MAX),
2383
2384 REG_VARIABLE(CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_NAME,
2385 WLAN_PARAM_Integer,
2386 struct hdd_config, enableMCCAdaptiveScheduler,
2387 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2388 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT,
2389 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN,
2390 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX),
2391
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002392 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_5GHZ_NAME, WLAN_PARAM_Integer,
2393 struct hdd_config, AdHocChannel5G,
2394 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2395 CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT,
2396 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN,
2397 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX),
2398
2399 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_24GHZ_NAME, WLAN_PARAM_Integer,
2400 struct hdd_config, AdHocChannel24G,
2401 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2402 CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT,
2403 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN,
2404 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX),
2405
2406 REG_VARIABLE(CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2407 struct hdd_config, enableTxBF,
2408 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2409 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT,
2410 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
2411 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX),
2412
Kiran Kumar Lokere5302ab62015-12-16 16:03:16 -08002413 REG_VARIABLE(CFG_VHT_ENABLE_TXBF_SAP_MODE, WLAN_PARAM_Integer,
2414 struct hdd_config, enable_txbf_sap_mode,
2415 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2416 CFG_VHT_ENABLE_TXBF_SAP_MODE_DEFAULT,
2417 CFG_VHT_ENABLE_TXBF_SAP_MODE_MIN,
2418 CFG_VHT_ENABLE_TXBF_SAP_MODE_MAX),
2419
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002420 REG_VARIABLE(CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
2421 struct hdd_config, enableTxBFin20MHz,
2422 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2423 CFG_VHT_ENABLE_TXBF_IN_20MHZ_DEFAULT,
2424 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MIN,
2425 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MAX),
2426
2427 REG_VARIABLE(CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, WLAN_PARAM_Integer,
2428 struct hdd_config, txBFCsnValue,
2429 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2430 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT,
2431 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN,
2432 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX),
2433
2434 REG_VARIABLE(CFG_VHT_ENABLE_TX_SU_BEAM_FORMER, WLAN_PARAM_Integer,
2435 struct hdd_config, enable_su_tx_bformer,
2436 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2437 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_DEFAULT,
2438 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MIN,
2439 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MAX),
2440
2441 REG_VARIABLE(CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
2442 struct hdd_config, sapAllowAllChannel,
2443 VAR_FLAGS_OPTIONAL,
2444 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT,
2445 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN,
2446 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX),
2447
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002448 REG_VARIABLE(CFG_DISABLE_LDPC_WITH_TXBF_AP, WLAN_PARAM_Integer,
2449 struct hdd_config, disableLDPCWithTxbfAP,
2450 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2451 CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT,
2452 CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN,
2453 CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002454
2455 REG_DYNAMIC_VARIABLE(CFG_ENABLE_SSR, WLAN_PARAM_Integer,
2456 struct hdd_config, enableSSR,
2457 VAR_FLAGS_OPTIONAL |
2458 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2459 CFG_ENABLE_SSR_DEFAULT,
2460 CFG_ENABLE_SSR_MIN,
2461 CFG_ENABLE_SSR_MAX,
2462 cb_notify_set_enable_ssr, 0),
2463
2464 REG_VARIABLE(CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer,
2465 struct hdd_config, cfgMaxMediumTime,
2466 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2467 CFG_MAX_MEDIUM_TIME_STADEFAULT,
2468 CFG_MAX_MEDIUM_TIME_STAMIN,
2469 CFG_MAX_MEDIUM_TIME_STAMAX),
2470
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002471 REG_VARIABLE(CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
2472 struct hdd_config, enableVhtFor24GHzBand,
2473 VAR_FLAGS_OPTIONAL,
2474 CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT,
2475 CFG_ENABLE_VHT_FOR_24GHZ_MIN,
2476 CFG_ENABLE_VHT_FOR_24GHZ_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002477
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05302478
2479 REG_VARIABLE(CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
2480 struct hdd_config, enable_sap_vendor_vht,
2481 VAR_FLAGS_OPTIONAL,
2482 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_DEFAULT,
2483 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MIN,
2484 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MAX),
2485
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002486 REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
2487 WLAN_PARAM_Integer,
2488 struct hdd_config, bFastRoamInConIniFeatureEnabled,
2489 VAR_FLAGS_OPTIONAL |
2490 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2491 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT,
2492 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN,
2493 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX,
2494 cb_notify_set_enable_fast_roam_in_concurrency, 0),
2495
2496 REG_VARIABLE(CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer,
2497 struct hdd_config, fEnableAdaptRxDrain,
2498 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2499 CFG_ENABLE_ADAPT_RX_DRAIN_DEFAULT,
2500 CFG_ENABLE_ADAPT_RX_DRAIN_MIN,
2501 CFG_ENABLE_ADAPT_RX_DRAIN_MAX),
2502
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002503 REG_VARIABLE(CFG_ENABLE_HEART_BEAT_OFFLOAD, WLAN_PARAM_Integer,
2504 struct hdd_config, enableIbssHeartBeatOffload,
2505 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2506 CFG_ENABLE_HEART_BEAT_OFFLOAD_DEFAULT,
2507 CFG_ENABLE_HEART_BEAT_OFFLOAD_MIN,
2508 CFG_ENABLE_HEART_BEAT_OFFLOAD_MAX),
2509
2510 REG_VARIABLE(CFG_ANTENNA_DIVERSITY_PARAM_NAME, WLAN_PARAM_Integer,
2511 struct hdd_config, antennaDiversity,
2512 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2513 CFG_ANTENNA_DIVERSITY_PARAM_DEFAULT,
2514 CFG_ANTENNA_DIVERSITY_PARAM_MIN,
2515 CFG_ANTENNA_DIVERSITY_PARAM_MAX),
2516
2517 REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
2518 struct hdd_config, fEnableSNRMonitoring,
2519 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2520 CFG_ENABLE_SNR_MONITORING_DEFAULT,
2521 CFG_ENABLE_SNR_MONITORING_MIN,
2522 CFG_ENABLE_SNR_MONITORING_MAX),
2523
2524#ifdef FEATURE_WLAN_SCAN_PNO
2525 REG_VARIABLE(CFG_PNO_SCAN_SUPPORT, WLAN_PARAM_Integer,
2526 struct hdd_config, configPNOScanSupport,
2527 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2528 CFG_PNO_SCAN_SUPPORT_DEFAULT,
2529 CFG_PNO_SCAN_SUPPORT_DISABLE,
2530 CFG_PNO_SCAN_SUPPORT_ENABLE),
2531
2532 REG_VARIABLE(CFG_PNO_SCAN_TIMER_REPEAT_VALUE, WLAN_PARAM_Integer,
2533 struct hdd_config, configPNOScanTimerRepeatValue,
2534 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2535 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_DEFAULT,
2536 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MIN,
2537 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MAX),
Srinivas Girigowdabdc98162015-09-17 11:06:07 -07002538
2539 REG_VARIABLE(CFG_PNO_SLOW_SCAN_MULTIPLIER, WLAN_PARAM_Integer,
2540 struct hdd_config, pno_slow_scan_multiplier,
2541 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2542 CFG_PNO_SLOW_SCAN_MULTIPLIER_DEFAULT,
2543 CFG_PNO_SLOW_SCAN_MULTIPLIER_MIN,
2544 CFG_PNO_SLOW_SCAN_MULTIPLIER_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002545#endif
2546 REG_VARIABLE(CFG_AMSDU_SUPPORT_IN_AMPDU_NAME, WLAN_PARAM_Integer,
2547 struct hdd_config, isAmsduSupportInAMPDU,
2548 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2549 CFG_AMSDU_SUPPORT_IN_AMPDU_DEFAULT,
2550 CFG_AMSDU_SUPPORT_IN_AMPDU_MIN,
2551 CFG_AMSDU_SUPPORT_IN_AMPDU_MAX),
2552
2553 REG_VARIABLE(CFG_STRICT_5GHZ_PREF_BY_MARGIN, WLAN_PARAM_Integer,
2554 struct hdd_config, nSelect5GHzMargin,
2555 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2556 CFG_STRICT_5GHZ_PREF_BY_MARGIN_DEFAULT,
2557 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MIN,
2558 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MAX),
2559
2560 REG_VARIABLE(CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
2561 struct hdd_config, enable_ip_tcp_udp_checksum_offload,
2562 VAR_FLAGS_OPTIONAL,
2563 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT,
2564 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE,
2565 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE),
2566
2567 REG_VARIABLE(CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer,
2568 struct hdd_config, enablePowersaveOffload,
2569 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2570 CFG_POWERSAVE_OFFLOAD_DEFAULT,
2571 CFG_POWERSAVE_OFFLOAD_MIN,
2572 CFG_POWERSAVE_OFFLOAD_MAX),
2573
2574 REG_VARIABLE(CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer,
2575 struct hdd_config, enablefwprint,
2576 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2577 CFG_ENABLE_FW_UART_PRINT_DEFAULT,
2578 CFG_ENABLE_FW_UART_PRINT_DISABLE,
2579 CFG_ENABLE_FW_UART_PRINT_ENABLE),
2580
2581 REG_VARIABLE(CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer,
Komal Seelamc11bb222016-01-27 18:57:10 +05302582 struct hdd_config, enable_fw_log,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002583 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2584 CFG_ENABLE_FW_LOG_DEFAULT,
2585 CFG_ENABLE_FW_LOG_DISABLE,
2586 CFG_ENABLE_FW_LOG_ENABLE),
2587
2588#ifdef IPA_OFFLOAD
2589 REG_VARIABLE(CFG_IPA_OFFLOAD_CONFIG_NAME, WLAN_PARAM_HexInteger,
2590 struct hdd_config, IpaConfig,
2591 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2592 CFG_IPA_OFFLOAD_CONFIG_DEFAULT,
2593 CFG_IPA_OFFLOAD_CONFIG_MIN,
2594 CFG_IPA_OFFLOAD_CONFIG_MAX),
2595
2596 REG_VARIABLE(CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer,
2597 struct hdd_config, IpaDescSize,
2598 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2599 CFG_IPA_DESC_SIZE_DEFAULT,
2600 CFG_IPA_DESC_SIZE_MIN,
2601 CFG_IPA_DESC_SIZE_MAX),
2602
2603 REG_VARIABLE(CFG_IPA_HIGH_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2604 struct hdd_config, IpaHighBandwidthMbps,
2605 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2606 CFG_IPA_HIGH_BANDWIDTH_MBPS_DEFAULT,
2607 CFG_IPA_HIGH_BANDWIDTH_MBPS_MIN,
2608 CFG_IPA_HIGH_BANDWIDTH_MBPS_MAX),
2609
2610 REG_VARIABLE(CFG_IPA_MEDIUM_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2611 struct hdd_config, IpaMediumBandwidthMbps,
2612 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2613 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_DEFAULT,
2614 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MIN,
2615 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MAX),
2616
2617 REG_VARIABLE(CFG_IPA_LOW_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2618 struct hdd_config, IpaLowBandwidthMbps,
2619 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2620 CFG_IPA_LOW_BANDWIDTH_MBPS_DEFAULT,
2621 CFG_IPA_LOW_BANDWIDTH_MBPS_MIN,
2622 CFG_IPA_LOW_BANDWIDTH_MBPS_MAX),
2623#endif
2624
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002625 REG_VARIABLE(CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer,
2626 struct hdd_config, fVhtAmpduLenExponent,
2627 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2628 CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT,
2629 CFG_VHT_AMPDU_LEN_EXPONENT_MIN,
2630 CFG_VHT_AMPDU_LEN_EXPONENT_MAX),
2631
2632 REG_VARIABLE(CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer,
2633 struct hdd_config, vhtMpduLen,
2634 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2635 CFG_VHT_MPDU_LEN_DEFAULT,
2636 CFG_VHT_MPDU_LEN_MIN,
2637 CFG_VHT_MPDU_LEN_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002638
2639 REG_VARIABLE(CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer,
2640 struct hdd_config, maxWoWFilters,
2641 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2642 CFG_MAX_WOW_FILTERS_DEFAULT,
2643 CFG_MAX_WOW_FILTERS_MIN,
2644 CFG_MAX_WOW_FILTERS_MAX),
2645
2646 REG_VARIABLE(CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer,
2647 struct hdd_config, wowEnable,
2648 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2649 CFG_WOW_STATUS_DEFAULT,
2650 CFG_WOW_ENABLE_MIN,
2651 CFG_WOW_ENABLE_MAX),
2652
2653 REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
2654 struct hdd_config, isCoalesingInIBSSAllowed,
2655 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2656 CFG_COALESING_IN_IBSS_DEFAULT,
2657 CFG_COALESING_IN_IBSS_MIN,
2658 CFG_COALESING_IN_IBSS_MAX),
2659
2660 REG_VARIABLE(CFG_IBSS_ATIM_WIN_SIZE_NAME, WLAN_PARAM_Integer,
2661 struct hdd_config, ibssATIMWinSize,
2662 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2663 CFG_IBSS_ATIM_WIN_SIZE_DEFAULT,
2664 CFG_IBSS_ATIM_WIN_SIZE_MIN,
2665 CFG_IBSS_ATIM_WIN_SIZE_MAX),
2666
2667 REG_VARIABLE(CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer,
2668 struct hdd_config, maxNumberOfPeers,
2669 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2670 CFG_SAP_MAX_NO_PEERS_DEFAULT,
2671 CFG_SAP_MAX_NO_PEERS_MIN,
2672 CFG_SAP_MAX_NO_PEERS_MAX),
2673
2674 REG_VARIABLE(CFG_IBSS_IS_POWER_SAVE_ALLOWED_NAME, WLAN_PARAM_Integer,
2675 struct hdd_config, isIbssPowerSaveAllowed,
2676 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2677 CFG_IBSS_IS_POWER_SAVE_ALLOWED_DEFAULT,
2678 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MIN,
2679 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MAX),
2680
2681 REG_VARIABLE(CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_NAME,
2682 WLAN_PARAM_Integer,
2683 struct hdd_config, isIbssPowerCollapseAllowed,
2684 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2685 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_DEFAULT,
2686 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MIN,
2687 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MAX),
2688
2689 REG_VARIABLE(CFG_IBSS_AWAKE_ON_TX_RX_NAME, WLAN_PARAM_Integer,
2690 struct hdd_config, isIbssAwakeOnTxRx,
2691 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2692 CFG_IBSS_AWAKE_ON_TX_RX_DEFAULT,
2693 CFG_IBSS_AWAKE_ON_TX_RX_MIN,
2694 CFG_IBSS_AWAKE_ON_TX_RX_MAX),
2695
2696 REG_VARIABLE(CFG_IBSS_INACTIVITY_TIME_NAME, WLAN_PARAM_Integer,
2697 struct hdd_config, ibssInactivityCount,
2698 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2699 CFG_IBSS_INACTIVITY_TIME_DEFAULT,
2700 CFG_IBSS_INACTIVITY_TIME_MIN,
2701 CFG_IBSS_INACTIVITY_TIME_MAX),
2702
2703 REG_VARIABLE(CFG_IBSS_TXSP_END_INACTIVITY_NAME, WLAN_PARAM_Integer,
2704 struct hdd_config, ibssTxSpEndInactivityTime,
2705 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2706 CFG_IBSS_TXSP_END_INACTIVITY_DEFAULT,
2707 CFG_IBSS_TXSP_END_INACTIVITY_MIN,
2708 CFG_IBSS_TXSP_END_INACTIVITY_MAX),
2709
2710 REG_VARIABLE(CFG_IBSS_PS_WARMUP_TIME_NAME, WLAN_PARAM_Integer,
2711 struct hdd_config, ibssPsWarmupTime,
2712 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2713 CFG_IBSS_PS_WARMUP_TIME_DEFAULT,
2714 CFG_IBSS_PS_WARMUP_TIME_MIN,
2715 CFG_IBSS_PS_WARMUP_TIME_MAX),
2716
2717 REG_VARIABLE(CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME,
2718 WLAN_PARAM_Integer,
2719 struct hdd_config, ibssPs1RxChainInAtimEnable,
2720 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2721 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT,
2722 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
2723 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX),
2724
2725 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
2726 struct hdd_config, thermalTempMinLevel0,
2727 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2728 CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT,
2729 CFG_THERMAL_TEMP_MIN_LEVEL0_MIN,
2730 CFG_THERMAL_TEMP_MIN_LEVEL0_MAX),
2731
2732 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL0_NAME, WLAN_PARAM_Integer,
2733 struct hdd_config, thermalTempMaxLevel0,
2734 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2735 CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT,
2736 CFG_THERMAL_TEMP_MAX_LEVEL0_MIN,
2737 CFG_THERMAL_TEMP_MAX_LEVEL0_MAX),
2738
2739 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL1_NAME, WLAN_PARAM_Integer,
2740 struct hdd_config, thermalTempMinLevel1,
2741 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2742 CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT,
2743 CFG_THERMAL_TEMP_MIN_LEVEL1_MIN,
2744 CFG_THERMAL_TEMP_MIN_LEVEL1_MAX),
2745
2746 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL1_NAME, WLAN_PARAM_Integer,
2747 struct hdd_config, thermalTempMaxLevel1,
2748 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2749 CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT,
2750 CFG_THERMAL_TEMP_MAX_LEVEL1_MIN,
2751 CFG_THERMAL_TEMP_MAX_LEVEL1_MAX),
2752
2753 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL2_NAME, WLAN_PARAM_Integer,
2754 struct hdd_config, thermalTempMinLevel2,
2755 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2756 CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT,
2757 CFG_THERMAL_TEMP_MIN_LEVEL2_MIN,
2758 CFG_THERMAL_TEMP_MIN_LEVEL2_MAX),
2759
2760 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL2_NAME, WLAN_PARAM_Integer,
2761 struct hdd_config, thermalTempMaxLevel2,
2762 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2763 CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT,
2764 CFG_THERMAL_TEMP_MAX_LEVEL2_MIN,
2765 CFG_THERMAL_TEMP_MAX_LEVEL2_MAX),
2766
2767 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL3_NAME, WLAN_PARAM_Integer,
2768 struct hdd_config, thermalTempMinLevel3,
2769 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2770 CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT,
2771 CFG_THERMAL_TEMP_MIN_LEVEL3_MIN,
2772 CFG_THERMAL_TEMP_MIN_LEVEL3_MAX),
2773
2774 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL3_NAME, WLAN_PARAM_Integer,
2775 struct hdd_config, thermalTempMaxLevel3,
2776 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2777 CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT,
2778 CFG_THERMAL_TEMP_MAX_LEVEL3_MIN,
2779 CFG_THERMAL_TEMP_MAX_LEVEL3_MAX),
2780
2781 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT2G_NAME, WLAN_PARAM_Integer,
2782 struct hdd_config, TxPower2g,
2783 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2784 CFG_SET_TXPOWER_LIMIT2G_DEFAULT,
2785 CFG_SET_TXPOWER_LIMIT2G_MIN,
2786 CFG_SET_TXPOWER_LIMIT2G_MAX),
2787
2788 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT5G_NAME, WLAN_PARAM_Integer,
2789 struct hdd_config, TxPower5g,
2790 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2791 CFG_SET_TXPOWER_LIMIT5G_DEFAULT,
2792 CFG_SET_TXPOWER_LIMIT5G_MIN,
2793 CFG_SET_TXPOWER_LIMIT5G_MAX),
2794
2795 REG_VARIABLE(CFG_ENABLE_DEBUG_CONNECT_ISSUE, WLAN_PARAM_Integer,
2796 struct hdd_config, gEnableDebugLog,
2797 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2798 CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT,
2799 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN,
2800 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX),
2801
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08002802 REG_VARIABLE(CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME,
2803 WLAN_PARAM_Integer,
2804 struct hdd_config, fDfsPhyerrFilterOffload,
2805 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2806 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT,
2807 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN,
2808 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX),
2809
2810 REG_VARIABLE(CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer,
2811 struct hdd_config, gEnableOverLapCh,
2812 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2813 CFG_ENABLE_OVERLAP_CH_DEFAULT,
2814 CFG_ENABLE_OVERLAP_CH_MIN,
2815 CFG_ENABLE_OVERLAP_CH_MAX),
2816
2817 REG_VARIABLE(CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer,
2818 struct hdd_config, fRegChangeDefCountry,
2819 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2820 CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT,
2821 CFG_REG_CHANGE_DEF_COUNTRY_MIN,
2822 CFG_REG_CHANGE_DEF_COUNTRY_MAX),
2823
2824#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
2825 REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
2826 struct hdd_config, TxFlowLowWaterMark,
2827 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2828 CFG_LL_TX_FLOW_LWM_DEFAULT,
2829 CFG_LL_TX_FLOW_LWM_MIN,
2830 CFG_LL_TX_FLOW_LWM_MAX),
2831 REG_VARIABLE(CFG_LL_TX_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2832 struct hdd_config, TxFlowHighWaterMarkOffset,
2833 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2834 CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT,
2835 CFG_LL_TX_FLOW_HWM_OFFSET_MIN,
2836 CFG_LL_TX_FLOW_HWM_OFFSET_MAX),
2837 REG_VARIABLE(CFG_LL_TX_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2838 struct hdd_config, TxFlowMaxQueueDepth,
2839 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2840 CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT,
2841 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN,
2842 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX),
2843 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer,
2844 struct hdd_config, TxLbwFlowLowWaterMark,
2845 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2846 CFG_LL_TX_LBW_FLOW_LWM_DEFAULT,
2847 CFG_LL_TX_LBW_FLOW_LWM_MIN,
2848 CFG_LL_TX_LBW_FLOW_LWM_MAX),
2849
2850 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2851 struct hdd_config, TxLbwFlowHighWaterMarkOffset,
2852 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2853 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT,
2854 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN,
2855 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX),
2856
2857 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2858 struct hdd_config, TxLbwFlowMaxQueueDepth,
2859 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2860 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2861 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN,
2862 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX),
2863
2864 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_LWM, WLAN_PARAM_Integer,
2865 struct hdd_config, TxHbwFlowLowWaterMark,
2866 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2867 CFG_LL_TX_HBW_FLOW_LWM_DEFAULT,
2868 CFG_LL_TX_HBW_FLOW_LWM_MIN,
2869 CFG_LL_TX_HBW_FLOW_LWM_MAX),
2870
2871 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2872 struct hdd_config, TxHbwFlowHighWaterMarkOffset,
2873 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2874 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT,
2875 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN,
2876 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX),
2877
2878 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2879 struct hdd_config, TxHbwFlowMaxQueueDepth,
2880 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2881 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2882 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN,
2883 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX),
2884#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
2885#ifdef QCA_LL_TX_FLOW_CONTROL_V2
2886
2887 REG_VARIABLE(CFG_LL_TX_FLOW_STOP_QUEUE_TH, WLAN_PARAM_Integer,
2888 struct hdd_config, TxFlowStopQueueThreshold,
2889 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2890 CFG_LL_TX_FLOW_STOP_QUEUE_TH_DEFAULT,
2891 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MIN,
2892 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MAX),
2893
2894 REG_VARIABLE(CFG_LL_TX_FLOW_START_QUEUE_OFFSET, WLAN_PARAM_Integer,
2895 struct hdd_config, TxFlowStartQueueOffset,
2896 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2897 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_DEFAULT,
2898 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MIN,
2899 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MAX),
2900
2901#endif
2902 REG_VARIABLE(CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer,
2903 struct hdd_config, nInitialDwellTime,
2904 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2905 CFG_INITIAL_DWELL_TIME_DEFAULT,
2906 CFG_INITIAL_DWELL_TIME_MIN,
2907 CFG_INITIAL_DWELL_TIME_MAX),
2908
2909 REG_VARIABLE(CFG_INITIAL_SCAN_NO_DFS_CHNL_NAME, WLAN_PARAM_Integer,
2910 struct hdd_config, initial_scan_no_dfs_chnl,
2911 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2912 CFG_INITIAL_SCAN_NO_DFS_CHNL_DEFAULT,
2913 CFG_INITIAL_SCAN_NO_DFS_CHNL_MIN,
2914 CFG_INITIAL_SCAN_NO_DFS_CHNL_MAX),
2915
2916 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer,
2917 struct hdd_config, apMaxOffloadPeers,
2918 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2919 CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT,
2920 CFG_SAP_MAX_OFFLOAD_PEERS_MIN,
2921 CFG_SAP_MAX_OFFLOAD_PEERS_MAX),
2922
2923 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS, WLAN_PARAM_Integer,
2924 struct hdd_config, apMaxOffloadReorderBuffs,
2925 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2926 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_DEFAULT,
2927 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MIN,
2928 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MAX),
2929
2930 REG_VARIABLE(CFG_ADVERTISE_CONCURRENT_OPERATION_NAME,
2931 WLAN_PARAM_Integer,
2932 struct hdd_config, advertiseConcurrentOperation,
2933 VAR_FLAGS_OPTIONAL,
2934 CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT,
2935 CFG_ADVERTISE_CONCURRENT_OPERATION_MIN,
2936 CFG_ADVERTISE_CONCURRENT_OPERATION_MAX),
2937
2938 REG_VARIABLE(CFG_ENABLE_MEMORY_DEEP_SLEEP, WLAN_PARAM_Integer,
2939 struct hdd_config, enableMemDeepSleep,
2940 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2941 CFG_ENABLE_MEMORY_DEEP_SLEEP_DEFAULT,
2942 CFG_ENABLE_MEMORY_DEEP_SLEEP_MIN,
2943 CFG_ENABLE_MEMORY_DEEP_SLEEP_MAX),
2944
2945 REG_VARIABLE(CFG_DEFAULT_RATE_INDEX_24GH, WLAN_PARAM_Integer,
2946 struct hdd_config, defaultRateIndex24Ghz,
2947 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2948 CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT,
2949 CFG_DEFAULT_RATE_INDEX_24GH_MIN,
2950 CFG_DEFAULT_RATE_INDEX_24GH_MAX),
2951
2952#ifdef MEMORY_DEBUG
2953 REG_VARIABLE(CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer,
2954 struct hdd_config, IsMemoryDebugSupportEnabled,
2955 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2956 CFG_ENABLE_MEMORY_DEBUG_DEFAULT,
2957 CFG_ENABLE_MEMORY_DEBUG_MIN,
2958 CFG_ENABLE_MEMORY_DEBUG_MAX),
2959#endif
2960
2961 REG_VARIABLE(CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
2962 struct hdd_config, debugP2pRemainOnChannel,
2963 VAR_FLAGS_OPTIONAL,
2964 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT,
2965 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN,
2966 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX),
2967
2968 REG_VARIABLE(CFG_ENABLE_PACKET_LOG, WLAN_PARAM_Integer,
2969 struct hdd_config, enablePacketLog,
2970 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2971 CFG_ENABLE_PACKET_LOG_DEFAULT,
2972 CFG_ENABLE_PACKET_LOG_MIN,
2973 CFG_ENABLE_PACKET_LOG_MAX),
2974
2975#ifdef WLAN_FEATURE_ROAM_OFFLOAD
2976 REG_VARIABLE(CFG_ROAMING_OFFLOAD_NAME, WLAN_PARAM_Integer,
2977 struct hdd_config, isRoamOffloadEnabled,
2978 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2979 CFG_ROAMING_OFFLOAD_DEFAULT,
2980 CFG_ROAMING_OFFLOAD_MIN,
2981 CFG_ROAMING_OFFLOAD_MAX),
2982#endif
2983#ifdef MSM_PLATFORM
2984 REG_VARIABLE(CFG_BUS_BANDWIDTH_HIGH_THRESHOLD, WLAN_PARAM_Integer,
2985 struct hdd_config, busBandwidthHighThreshold,
2986 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2987 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_DEFAULT,
2988 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MIN,
2989 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MAX),
2990
2991 REG_VARIABLE(CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD, WLAN_PARAM_Integer,
2992 struct hdd_config, busBandwidthMediumThreshold,
2993 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2994 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_DEFAULT,
2995 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MIN,
2996 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MAX),
2997
2998 REG_VARIABLE(CFG_BUS_BANDWIDTH_LOW_THRESHOLD, WLAN_PARAM_Integer,
2999 struct hdd_config, busBandwidthLowThreshold,
3000 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3001 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_DEFAULT,
3002 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MIN,
3003 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MAX),
3004
3005 REG_VARIABLE(CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL, WLAN_PARAM_Integer,
3006 struct hdd_config, busBandwidthComputeInterval,
3007 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3008 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT,
3009 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN,
3010 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX),
Ravi Joshie2331e82015-07-01 18:18:54 -07003011
3012 REG_VARIABLE(CFG_ENABLE_TCP_DELACK, WLAN_PARAM_Integer,
3013 struct hdd_config, enable_tcp_delack,
3014 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3015 CFG_ENABLE_TCP_DELACK_DEFAULT,
3016 CFG_ENABLE_TCP_DELACK_MIN,
3017 CFG_ENABLE_TCP_DELACK_MAX),
3018
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003019 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_HIGH, WLAN_PARAM_Integer,
3020 struct hdd_config, tcpDelackThresholdHigh,
3021 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3022 CFG_TCP_DELACK_THRESHOLD_HIGH_DEFAULT,
3023 CFG_TCP_DELACK_THRESHOLD_HIGH_MIN,
3024 CFG_TCP_DELACK_THRESHOLD_HIGH_MAX),
Ravi Joshie2331e82015-07-01 18:18:54 -07003025
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003026 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_LOW, WLAN_PARAM_Integer,
3027 struct hdd_config, tcpDelackThresholdLow,
3028 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3029 CFG_TCP_DELACK_THRESHOLD_LOW_DEFAULT,
3030 CFG_TCP_DELACK_THRESHOLD_LOW_MIN,
3031 CFG_TCP_DELACK_THRESHOLD_LOW_MAX),
Mohit Khannae71e2262015-11-10 09:37:24 -08003032
Ravi Joshib89e7f72016-09-07 13:43:15 -07003033 REG_VARIABLE(CFG_TCP_DELACK_TIMER_COUNT, WLAN_PARAM_Integer,
3034 struct hdd_config, tcp_delack_timer_count,
3035 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3036 CFG_TCP_DELACK_TIMER_COUNT_DEFAULT,
3037 CFG_TCP_DELACK_TIMER_COUNT_MIN,
3038 CFG_TCP_DELACK_TIMER_COUNT_MAX),
Mohit Khannae71e2262015-11-10 09:37:24 -08003039
Ravi Joshib89e7f72016-09-07 13:43:15 -07003040 REG_VARIABLE(CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME, WLAN_PARAM_Integer,
3041 struct hdd_config, tcp_tx_high_tput_thres,
3042 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3043 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_DEFAULT,
3044 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MIN,
3045 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003046#endif
3047
3048 REG_VARIABLE(CFG_ENABLE_FW_LOG_TYPE, WLAN_PARAM_Integer,
3049 struct hdd_config, enableFwLogType,
3050 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3051 CFG_ENABLE_FW_LOG_TYPE_DEFAULT,
3052 CFG_ENABLE_FW_LOG_TYPE_MIN,
3053 CFG_ENABLE_FW_LOG_TYPE_MAX),
3054
3055 REG_VARIABLE(CFG_ENABLE_FW_DEBUG_LOG_LEVEL, WLAN_PARAM_Integer,
3056 struct hdd_config, enableFwLogLevel,
3057 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3058 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_DEFAULT,
3059 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MIN,
3060 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MAX),
3061
Rajeev Kumar Sirasanagandla0be56df2016-09-08 19:19:47 +05303062 REG_VARIABLE(CFG_ENABLE_FW_RTS_PROFILE, WLAN_PARAM_Integer,
3063 struct hdd_config, rts_profile,
3064 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3065 CFG_ENABLE_FW_RTS_PROFILE_DEFAULT,
3066 CFG_ENABLE_FW_RTS_PROFILE_MIN,
3067 CFG_ENABLE_FW_RTS_PROFILE_MAX),
3068
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003069 REG_VARIABLE_STRING(CFG_ENABLE_FW_MODULE_LOG_LEVEL, WLAN_PARAM_String,
3070 struct hdd_config, enableFwModuleLogLevel,
3071 VAR_FLAGS_OPTIONAL,
3072 (void *)CFG_ENABLE_FW_MODULE_LOG_DEFAULT),
3073
3074#ifdef WLAN_FEATURE_11W
3075 REG_VARIABLE(CFG_PMF_SA_QUERY_MAX_RETRIES_NAME, WLAN_PARAM_Integer,
3076 struct hdd_config, pmfSaQueryMaxRetries,
3077 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3078 CFG_PMF_SA_QUERY_MAX_RETRIES_DEFAULT,
3079 CFG_PMF_SA_QUERY_MAX_RETRIES_MIN,
3080 CFG_PMF_SA_QUERY_MAX_RETRIES_MAX),
3081
3082 REG_VARIABLE(CFG_PMF_SA_QUERY_RETRY_INTERVAL_NAME, WLAN_PARAM_Integer,
3083 struct hdd_config, pmfSaQueryRetryInterval,
3084 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3085 CFG_PMF_SA_QUERY_RETRY_INTERVAL_DEFAULT,
3086 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MIN,
3087 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MAX),
3088#endif
3089 REG_VARIABLE(CFG_MAX_CONCURRENT_CONNECTIONS_NAME, WLAN_PARAM_Integer,
3090 struct hdd_config, gMaxConcurrentActiveSessions,
3091 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3092 CFG_MAX_CONCURRENT_CONNECTIONS_DEFAULT,
3093 CFG_MAX_CONCURRENT_CONNECTIONS_MIN,
3094 CFG_MAX_CONCURRENT_CONNECTIONS_MAX),
3095
3096#ifdef FEATURE_GREEN_AP
3097 REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,
3098 struct hdd_config, enableGreenAP,
3099 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3100 CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
3101 CFG_ENABLE_GREEN_AP_FEATURE_MIN,
3102 CFG_ENABLE_GREEN_AP_FEATURE_MAX),
Ryan Hsucb118cf2015-11-09 16:03:53 -08003103 REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,
3104 struct hdd_config, enable_egap,
3105 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3106 CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,
3107 CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,
3108 CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),
3109 REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,
3110 struct hdd_config, egap_inact_time,
3111 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3112 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,
3113 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,
3114 CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),
3115 REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,
3116 struct hdd_config, egap_wait_time,
3117 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3118 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,
3119 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,
3120 CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),
3121 REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,
3122 struct hdd_config, egap_feature_flag,
3123 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3124 CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,
3125 CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,
3126 CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003127#endif
3128
3129 REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
3130 struct hdd_config, ignoreCAC,
3131 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3132 CFG_IGNORE_CAC_DEFAULT,
3133 CFG_IGNORE_CAC_MIN,
3134 CFG_IGNORE_CAC_MAX),
3135
3136 REG_VARIABLE(CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_NAME, WLAN_PARAM_Integer,
3137 struct hdd_config, IsSapDfsChSifsBurstEnabled,
3138 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3139 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_DEFAULT,
3140 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MIN,
3141 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MAX),
3142
3143 REG_VARIABLE(CFG_DFS_RADAR_PRI_MULTIPLIER_NAME, WLAN_PARAM_Integer,
3144 struct hdd_config, dfsRadarPriMultiplier,
3145 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3146 CFG_DFS_RADAR_PRI_MULTIPLIER_DEFAULT,
3147 CFG_DFS_RADAR_PRI_MULTIPLIER_MIN,
3148 CFG_DFS_RADAR_PRI_MULTIPLIER_MAX),
3149
3150 REG_VARIABLE(CFG_REORDER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3151 struct hdd_config, reorderOffloadSupport,
3152 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3153 CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT,
3154 CFG_REORDER_OFFLOAD_SUPPORT_MIN,
3155 CFG_REORDER_OFFLOAD_SUPPORT_MAX),
3156
3157 REG_VARIABLE(CFG_IPA_UC_TX_BUF_COUNT_NAME, WLAN_PARAM_Integer,
3158 struct hdd_config, IpaUcTxBufCount,
3159 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3160 CFG_IPA_UC_TX_BUF_COUNT_DEFAULT,
3161 CFG_IPA_UC_TX_BUF_COUNT_MIN,
3162 CFG_IPA_UC_TX_BUF_COUNT_MAX),
3163
3164 REG_VARIABLE(CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer,
3165 struct hdd_config, IpaUcTxBufSize,
3166 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3167 CFG_IPA_UC_TX_BUF_SIZE_DEFAULT,
3168 CFG_IPA_UC_TX_BUF_SIZE_MIN,
3169 CFG_IPA_UC_TX_BUF_SIZE_MAX),
3170
3171 REG_VARIABLE(CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer,
3172 struct hdd_config, IpaUcRxIndRingCount,
3173 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3174 CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT,
3175 CFG_IPA_UC_RX_IND_RING_COUNT_MIN,
3176 CFG_IPA_UC_RX_IND_RING_COUNT_MAX),
3177
3178 REG_VARIABLE(CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer,
3179 struct hdd_config, IpaUcTxPartitionBase,
3180 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3181 CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT,
3182 CFG_IPA_UC_TX_PARTITION_BASE_MIN,
3183 CFG_IPA_UC_TX_PARTITION_BASE_MAX),
3184#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
3185 REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer,
3186 struct hdd_config, wlanLoggingEnable,
3187 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3188 CFG_WLAN_LOGGING_SUPPORT_DEFAULT,
3189 CFG_WLAN_LOGGING_SUPPORT_DISABLE,
3190 CFG_WLAN_LOGGING_SUPPORT_ENABLE),
3191
3192 REG_VARIABLE(CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_NAME,
3193 WLAN_PARAM_Integer,
3194 struct hdd_config, wlanLoggingFEToConsole,
3195 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3196 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DEFAULT,
3197 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DISABLE,
3198 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_ENABLE),
3199
3200 REG_VARIABLE(CFG_WLAN_LOGGING_NUM_BUF_NAME, WLAN_PARAM_Integer,
3201 struct hdd_config, wlanLoggingNumBuf,
3202 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3203 CFG_WLAN_LOGGING_NUM_BUF_DEFAULT,
3204 CFG_WLAN_LOGGING_NUM_BUF_MIN,
3205 CFG_WLAN_LOGGING_NUM_BUF_MAX),
3206#endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */
3207
3208 REG_VARIABLE(CFG_ENABLE_SIFS_BURST, WLAN_PARAM_Integer,
3209 struct hdd_config, enableSifsBurst,
3210 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3211 CFG_ENABLE_SIFS_BURST_DEFAULT,
3212 CFG_ENABLE_SIFS_BURST_MIN,
3213 CFG_ENABLE_SIFS_BURST_MAX),
3214
3215#ifdef WLAN_FEATURE_LPSS
3216 REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer,
Komal Seelamc11bb222016-01-27 18:57:10 +05303217 struct hdd_config, enable_lpass_support,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003218 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3219 CFG_ENABLE_LPASS_SUPPORT_DEFAULT,
3220 CFG_ENABLE_LPASS_SUPPORT_MIN,
3221 CFG_ENABLE_LPASS_SUPPORT_MAX),
3222#endif
3223
3224#ifdef WLAN_FEATURE_NAN
3225 REG_VARIABLE(CFG_ENABLE_NAN_SUPPORT, WLAN_PARAM_Integer,
3226 struct hdd_config, enable_nan_support,
3227 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3228 CFG_ENABLE_NAN_SUPPORT_DEFAULT,
3229 CFG_ENABLE_NAN_SUPPORT_MIN,
3230 CFG_ENABLE_NAN_SUPPORT_MAX),
3231#endif
3232
3233 REG_VARIABLE(CFG_ENABLE_SELF_RECOVERY, WLAN_PARAM_Integer,
3234 struct hdd_config, enableSelfRecovery,
3235 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3236 CFG_ENABLE_SELF_RECOVERY_DEFAULT,
3237 CFG_ENABLE_SELF_RECOVERY_MIN,
3238 CFG_ENABLE_SELF_RECOVERY_MAX),
3239
3240#ifdef FEATURE_WLAN_FORCE_SAP_SCC
3241 REG_VARIABLE(CFG_SAP_SCC_CHAN_AVOIDANCE, WLAN_PARAM_Integer,
3242 struct hdd_config, SapSccChanAvoidance,
3243 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3244 CFG_SAP_SCC_CHAN_AVOIDANCE_DEFAULT,
3245 CFG_SAP_SCC_CHAN_AVOIDANCE_MIN,
3246 CFG_SAP_SCC_CHAN_AVOIDANCE_MAX),
3247#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
3248
3249 REG_VARIABLE(CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer,
3250 struct hdd_config, enableSapSuspend,
3251 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3252 CFG_ENABLE_SAP_SUSPEND_DEFAULT,
3253 CFG_ENABLE_SAP_SUSPEND_MIN,
3254 CFG_ENABLE_SAP_SUSPEND_MAX),
3255
3256#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
3257 REG_VARIABLE(CFG_EXTWOW_GO_TO_SUSPEND, WLAN_PARAM_Integer,
3258 struct hdd_config, extWowGotoSuspend,
3259 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3260 CFG_EXTWOW_GO_TO_SUSPEND_DEFAULT,
3261 CFG_EXTWOW_GO_TO_SUSPEND_MIN,
3262 CFG_EXTWOW_GO_TO_SUSPEND_MAX),
3263
3264 REG_VARIABLE(CFG_EXTWOW_APP1_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3265 struct hdd_config, extWowApp1WakeupPinNumber,
3266 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3267 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_DEFAULT,
3268 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MIN,
3269 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MAX),
3270
3271 REG_VARIABLE(CFG_EXTWOW_APP2_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3272 struct hdd_config, extWowApp2WakeupPinNumber,
3273 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3274 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_DEFAULT,
3275 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MIN,
3276 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MAX),
3277
3278 REG_VARIABLE(CFG_EXTWOW_KA_INIT_PING_INTERVAL, WLAN_PARAM_Integer,
3279 struct hdd_config, extWowApp2KAInitPingInterval,
3280 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3281 CFG_EXTWOW_KA_INIT_PING_INTERVAL_DEFAULT,
3282 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MIN,
3283 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MAX),
3284
3285 REG_VARIABLE(CFG_EXTWOW_KA_MIN_PING_INTERVAL, WLAN_PARAM_Integer,
3286 struct hdd_config, extWowApp2KAMinPingInterval,
3287 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3288 CFG_EXTWOW_KA_MIN_PING_INTERVAL_DEFAULT,
3289 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MIN,
3290 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MAX),
3291
3292 REG_VARIABLE(CFG_EXTWOW_KA_MAX_PING_INTERVAL, WLAN_PARAM_Integer,
3293 struct hdd_config, extWowApp2KAMaxPingInterval,
3294 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3295 CFG_EXTWOW_KA_MAX_PING_INTERVAL_DEFAULT,
3296 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MIN,
3297 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MAX),
3298
3299 REG_VARIABLE(CFG_EXTWOW_KA_INC_PING_INTERVAL, WLAN_PARAM_Integer,
3300 struct hdd_config, extWowApp2KAIncPingInterval,
3301 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3302 CFG_EXTWOW_KA_INC_PING_INTERVAL_DEFAULT,
3303 CFG_EXTWOW_KA_INC_PING_INTERVAL_MIN,
3304 CFG_EXTWOW_KA_INC_PING_INTERVAL_MAX),
3305
3306 REG_VARIABLE(CFG_EXTWOW_TCP_SRC_PORT, WLAN_PARAM_Integer,
3307 struct hdd_config, extWowApp2TcpSrcPort,
3308 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3309 CFG_EXTWOW_TCP_SRC_PORT_DEFAULT,
3310 CFG_EXTWOW_TCP_SRC_PORT_MIN,
3311 CFG_EXTWOW_TCP_SRC_PORT_MAX),
3312
3313 REG_VARIABLE(CFG_EXTWOW_TCP_DST_PORT, WLAN_PARAM_Integer,
3314 struct hdd_config, extWowApp2TcpDstPort,
3315 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3316 CFG_EXTWOW_TCP_DST_PORT_DEFAULT,
3317 CFG_EXTWOW_TCP_DST_PORT_MIN,
3318 CFG_EXTWOW_TCP_DST_PORT_MAX),
3319
3320 REG_VARIABLE(CFG_EXTWOW_TCP_TX_TIMEOUT, WLAN_PARAM_Integer,
3321 struct hdd_config, extWowApp2TcpTxTimeout,
3322 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3323 CFG_EXTWOW_TCP_TX_TIMEOUT_DEFAULT,
3324 CFG_EXTWOW_TCP_TX_TIMEOUT_MIN,
3325 CFG_EXTWOW_TCP_TX_TIMEOUT_MAX),
3326
3327 REG_VARIABLE(CFG_EXTWOW_TCP_RX_TIMEOUT, WLAN_PARAM_Integer,
3328 struct hdd_config, extWowApp2TcpRxTimeout,
3329 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3330 CFG_EXTWOW_TCP_RX_TIMEOUT_DEFAULT,
3331 CFG_EXTWOW_TCP_RX_TIMEOUT_MIN,
3332 CFG_EXTWOW_TCP_RX_TIMEOUT_MAX),
3333#endif
3334 REG_VARIABLE(CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_NAME, WLAN_PARAM_Integer,
3335 struct hdd_config, gEnableDeauthToDisassocMap,
3336 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3337 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_DEFAULT,
3338 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MIN,
3339 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MAX),
3340#ifdef DHCP_SERVER_OFFLOAD
3341 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3342 struct hdd_config, enableDHCPServerOffload,
3343 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3344 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_DEFAULT,
3345 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MIN,
3346 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MAX),
3347 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_NAME,
3348 WLAN_PARAM_Integer,
3349 struct hdd_config, dhcpMaxNumClients,
3350 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3351 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_DEFAULT,
3352 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MIN,
3353 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MAX),
3354 REG_VARIABLE_STRING(CFG_DHCP_SERVER_IP_NAME, WLAN_PARAM_String,
3355 struct hdd_config, dhcpServerIP,
3356 VAR_FLAGS_OPTIONAL,
3357 (void *)CFG_DHCP_SERVER_IP_DEFAULT),
3358#endif /* DHCP_SERVER_OFFLOAD */
3359
3360 REG_VARIABLE(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION, WLAN_PARAM_Integer,
3361 struct hdd_config, sendDeauthBeforeCon,
3362 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3363 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_DEFAULT,
3364 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MIN,
3365 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MAX),
3366
3367 REG_VARIABLE(CFG_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer,
3368 struct hdd_config, enable_mac_spoofing,
3369 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3370 CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT,
3371 CFG_ENABLE_MAC_ADDR_SPOOFING_MIN,
3372 CFG_ENABLE_MAC_ADDR_SPOOFING_MAX),
3373
3374 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE1_NAME, WLAN_PARAM_Integer,
3375 struct hdd_config, conc_custom_rule1,
3376 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3377 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_DEFAULT,
3378 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MIN,
3379 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MAX),
3380
3381 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE2_NAME, WLAN_PARAM_Integer,
3382 struct hdd_config, conc_custom_rule2,
3383 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3384 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_DEFAULT,
3385 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MIN,
3386 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MAX),
3387
3388 REG_VARIABLE(CFG_ENABLE_STA_CONNECTION_IN_5GHZ, WLAN_PARAM_Integer,
3389 struct hdd_config, is_sta_connection_in_5gz_enabled,
3390 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3391 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_DEFAULT,
3392 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MIN,
3393 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MAX),
3394
3395 REG_VARIABLE(CFG_STA_MIRACAST_MCC_REST_TIME_VAL, WLAN_PARAM_Integer,
3396 struct hdd_config, sta_miracast_mcc_rest_time_val,
3397 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3398 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_DEFAULT,
3399 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MIN,
3400 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MAX),
3401
3402#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
3403 REG_VARIABLE(CFG_SAP_MCC_CHANNEL_AVOIDANCE_NAME,
3404 WLAN_PARAM_Integer,
3405 struct hdd_config,
3406 sap_channel_avoidance,
3407 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3408 CFG_SAP_MCC_CHANNEL_AVOIDANCE_DEFAULT,
3409 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MIN,
3410 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MAX),
3411#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
3412
3413 REG_VARIABLE(CFG_SAP_P2P_11AC_OVERRIDE_NAME, WLAN_PARAM_Integer,
3414 struct hdd_config, sap_p2p_11ac_override,
3415 VAR_FLAGS_OPTIONAL |
3416 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3417 CFG_SAP_P2P_11AC_OVERRIDE_DEFAULT,
3418 CFG_SAP_P2P_11AC_OVERRIDE_MIN,
3419 CFG_SAP_P2P_11AC_OVERRIDE_MAX),
3420
3421 REG_VARIABLE(CFG_ENABLE_RAMDUMP_COLLECTION, WLAN_PARAM_Integer,
3422 struct hdd_config, is_ramdump_enabled,
3423 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3424 CFG_ENABLE_RAMDUMP_COLLECTION_DEFAULT,
3425 CFG_ENABLE_RAMDUMP_COLLECTION_MIN,
3426 CFG_ENABLE_RAMDUMP_COLLECTION_MAX),
3427
3428 REG_VARIABLE(CFG_SAP_DOT11MC, WLAN_PARAM_Integer,
3429 struct hdd_config, sap_dot11mc,
3430 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3431 CFG_SAP_DOT11MC_DEFAULT,
3432 CFG_SAP_DOT11MC_MIN,
3433 CFG_SAP_DOT11MC_MAX),
3434
3435 REG_VARIABLE(CFG_ENABLE_NON_DFS_CHAN_ON_RADAR, WLAN_PARAM_Integer,
3436 struct hdd_config, prefer_non_dfs_on_radar,
3437 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3438 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT,
3439 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN,
3440 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX),
3441
3442 REG_VARIABLE(CFG_MULTICAST_HOST_FW_MSGS, WLAN_PARAM_Integer,
3443 struct hdd_config, multicast_host_fw_msgs,
3444 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3445 CFG_MULTICAST_HOST_FW_MSGS_DEFAULT,
3446 CFG_MULTICAST_HOST_FW_MSGS_MIN,
3447 CFG_MULTICAST_HOST_FW_MSGS_MAX),
3448
3449 REG_VARIABLE(CFG_CONC_SYSTEM_PREF, WLAN_PARAM_Integer,
3450 struct hdd_config, conc_system_pref,
3451 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3452 CFG_CONC_SYSTEM_PREF_DEFAULT,
3453 CFG_CONC_SYSTEM_PREF_MIN,
3454 CFG_CONC_SYSTEM_PREF_MAX),
3455
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003456 REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer,
3457 struct hdd_config, tso_enable,
3458 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3459 CFG_TSO_ENABLED_DEFAULT,
3460 CFG_TSO_ENABLED_MIN,
3461 CFG_TSO_ENABLED_MAX),
3462
3463 REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer,
3464 struct hdd_config, lro_enable,
3465 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3466 CFG_LRO_ENABLED_DEFAULT,
3467 CFG_LRO_ENABLED_MIN,
3468 CFG_LRO_ENABLED_MAX),
3469
Rajeev Kumardd3bc602016-08-16 14:21:05 -07003470 REG_VARIABLE(CFG_BPF_PACKET_FILTER_OFFLOAD, WLAN_PARAM_Integer,
3471 struct hdd_config, bpf_packet_filter_enable,
3472 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3473 CFG_BPF_PACKET_FILTER_OFFLOAD_DEFAULT,
3474 CFG_BPF_PACKET_FILTER_OFFLOAD_MIN,
3475 CFG_BPF_PACKET_FILTER_OFFLOAD_MAX),
3476
Manjunathappa Prakashfff753c2016-09-01 19:34:56 -07003477 REG_VARIABLE(CFG_FLOW_STEERING_ENABLED_NAME, WLAN_PARAM_Integer,
3478 struct hdd_config, flow_steering_enable,
3479 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3480 CFG_FLOW_STEERING_ENABLED_DEFAULT,
3481 CFG_FLOW_STEERING_ENABLED_MIN,
3482 CFG_FLOW_STEERING_ENABLED_MAX),
3483
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003484 REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
3485 struct hdd_config, active_mode_offload,
3486 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3487 CFG_ACTIVE_MODE_OFFLOAD_DEFAULT,
3488 CFG_ACTIVE_MODE_OFFLOAD_MIN,
3489 CFG_ACTIVE_MODE_OFFLOAD_MAX),
3490
3491 REG_VARIABLE(CFG_FINE_TIME_MEAS_CAPABILITY, WLAN_PARAM_HexInteger,
3492 struct hdd_config, fine_time_meas_cap,
3493 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3494 CFG_FINE_TIME_MEAS_CAPABILITY_DEFAULT,
3495 CFG_FINE_TIME_MEAS_CAPABILITY_MIN,
3496 CFG_FINE_TIME_MEAS_CAPABILITY_MAX),
3497
3498#ifdef WLAN_FEATURE_FASTPATH
3499 REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer,
3500 struct hdd_config, fastpath_enable,
3501 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3502 CFG_ENABLE_FASTPATH_DEFAULT,
3503 CFG_ENABLE_FASTPATH_MIN,
3504 CFG_ENABLE_FASTPATH_MAX),
3505#endif
3506 REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer,
3507 struct hdd_config, max_scan_count,
3508 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3509 CFG_MAX_SCAN_COUNT_DEFAULT,
3510 CFG_MAX_SCAN_COUNT_MIN,
3511 CFG_MAX_SCAN_COUNT_MAX),
3512
3513 REG_VARIABLE(CFG_DOT11P_MODE_NAME, WLAN_PARAM_Integer,
3514 struct hdd_config, dot11p_mode,
3515 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3516 CFG_DOT11P_MODE_DEFAULT,
3517 CFG_DOT11P_MODE_MIN,
3518 CFG_DOT11P_MODE_MAX),
3519
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003520#ifdef FEATURE_WLAN_EXTSCAN
Manjeet Singh0f2ce5c2016-09-01 12:08:57 +05303521 REG_VARIABLE(CFG_EXTSCAN_ALLOWED_NAME, WLAN_PARAM_Integer,
3522 struct hdd_config, extscan_enabled,
3523 VAR_FLAGS_OPTIONAL |
3524 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3525 CFG_EXTSCAN_ALLOWED_DEF,
3526 CFG_EXTSCAN_ALLOWED_MIN,
3527 CFG_EXTSCAN_ALLOWED_MAX),
3528
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003529 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME,
3530 WLAN_PARAM_Integer,
3531 struct hdd_config, extscan_passive_max_chn_time,
3532 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3533 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
3534 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN,
3535 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX),
3536
3537 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME,
3538 WLAN_PARAM_Integer,
3539 struct hdd_config, extscan_passive_min_chn_time,
3540 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3541 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
3542 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN,
3543 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX),
3544
3545 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME,
3546 WLAN_PARAM_Integer,
3547 struct hdd_config, extscan_active_max_chn_time,
3548 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3549 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
3550 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN,
3551 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX),
3552
3553 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME,
3554 WLAN_PARAM_Integer,
3555 struct hdd_config, extscan_active_min_chn_time,
3556 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3557 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
3558 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN,
3559 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX),
3560#endif
3561
3562 REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer,
3563 struct hdd_config, ce_classify_enabled,
3564 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3565 CFG_CE_CLASSIFY_ENABLE_DEFAULT,
3566 CFG_CE_CLASSIFY_ENABLE_MIN,
3567 CFG_CE_CLASSIFY_ENABLE_MAX),
3568
3569 REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
3570 struct hdd_config, dual_mac_feature_disable,
3571 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3572 CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT,
3573 CFG_DUAL_MAC_FEATURE_DISABLE_MIN,
3574 CFG_DUAL_MAC_FEATURE_DISABLE_MAX),
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07003575#ifdef FEATURE_WLAN_SCAN_PNO
3576 REG_VARIABLE(CFG_PNO_CHANNEL_PREDICTION_NAME, WLAN_PARAM_Integer,
3577 struct hdd_config, pno_channel_prediction,
3578 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3579 CFG_PNO_CHANNEL_PREDICTION_DEFAULT,
3580 CFG_PNO_CHANNEL_PREDICTION_MIN,
3581 CFG_PNO_CHANNEL_PREDICTION_MAX),
3582
3583 REG_VARIABLE(CFG_TOP_K_NUM_OF_CHANNELS_NAME, WLAN_PARAM_Integer,
3584 struct hdd_config, top_k_num_of_channels,
3585 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3586 CFG_TOP_K_NUM_OF_CHANNELS_DEFAULT,
3587 CFG_TOP_K_NUM_OF_CHANNELS_MIN,
3588 CFG_TOP_K_NUM_OF_CHANNELS_MAX),
3589
3590 REG_VARIABLE(CFG_STATIONARY_THRESHOLD_NAME, WLAN_PARAM_Integer,
3591 struct hdd_config, stationary_thresh,
3592 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3593 CFG_STATIONARY_THRESHOLD_DEFAULT,
3594 CFG_STATIONARY_THRESHOLD_MIN,
3595 CFG_STATIONARY_THRESHOLD_MAX),
3596
3597 REG_VARIABLE(CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_NAME,
3598 WLAN_PARAM_Integer,
3599 struct hdd_config, channel_prediction_full_scan,
3600 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3601 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_DEFAULT,
3602 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_MIN,
3603 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_MAX),
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05303604
3605 REG_VARIABLE(CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_NAME,
3606 WLAN_PARAM_Integer,
3607 struct hdd_config, pnoscan_adaptive_dwell_mode,
3608 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3609 CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_DEFAULT,
3610 CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_MIN,
3611 CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_MAX),
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07003612#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003613
3614 REG_VARIABLE(CFG_TX_CHAIN_MASK_CCK, WLAN_PARAM_Integer,
3615 struct hdd_config, tx_chain_mask_cck,
3616 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3617 CFG_TX_CHAIN_MASK_CCK_DEFAULT,
3618 CFG_TX_CHAIN_MASK_CCK_MIN,
3619 CFG_TX_CHAIN_MASK_CCK_MAX),
3620
3621 REG_VARIABLE(CFG_TX_CHAIN_MASK_1SS, WLAN_PARAM_Integer,
3622 struct hdd_config, tx_chain_mask_1ss,
3623 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3624 CFG_TX_CHAIN_MASK_1SS_DEFAULT,
3625 CFG_TX_CHAIN_MASK_1SS_MIN,
3626 CFG_TX_CHAIN_MASK_1SS_MAX),
3627
3628 REG_VARIABLE(CFG_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer,
3629 struct hdd_config, self_gen_frm_pwr,
3630 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3631 CFG_SELF_GEN_FRM_PWR_DEFAULT,
3632 CFG_SELF_GEN_FRM_PWR_MIN,
3633 CFG_SELF_GEN_FRM_PWR_MAX),
3634
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07003635 REG_VARIABLE(CFG_EARLY_STOP_SCAN_ENABLE, WLAN_PARAM_Integer,
3636 struct hdd_config, early_stop_scan_enable,
3637 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3638 CFG_EARLY_STOP_SCAN_ENABLE_DEFAULT,
3639 CFG_EARLY_STOP_SCAN_ENABLE_MIN,
3640 CFG_EARLY_STOP_SCAN_ENABLE_MAX),
3641
3642 REG_VARIABLE(CFG_EARLY_STOP_SCAN_MIN_THRESHOLD,
3643 WLAN_PARAM_SignedInteger, struct hdd_config,
3644 early_stop_scan_min_threshold,
3645 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3646 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_DEFAULT,
3647 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_MIN,
3648 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD_MAX),
3649
3650 REG_VARIABLE(CFG_EARLY_STOP_SCAN_MAX_THRESHOLD,
3651 WLAN_PARAM_SignedInteger, struct hdd_config,
3652 early_stop_scan_max_threshold,
3653 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3654 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_DEFAULT,
3655 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_MIN,
3656 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD_MAX),
3657
Varun Reddy Yeturu044bda22015-11-21 22:03:40 -08003658 REG_VARIABLE(CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME,
3659 WLAN_PARAM_SignedInteger,
3660 struct hdd_config, first_scan_bucket_threshold,
3661 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3662 CFG_FIRST_SCAN_BUCKET_THRESHOLD_DEFAULT,
3663 CFG_FIRST_SCAN_BUCKET_THRESHOLD_MIN,
3664 CFG_FIRST_SCAN_BUCKET_THRESHOLD_MAX),
3665
Ravi Joshi742495d2015-11-09 18:56:53 -08003666#ifdef FEATURE_LFR_SUBNET_DETECTION
3667 REG_VARIABLE(CFG_ENABLE_LFR_SUBNET_DETECTION, WLAN_PARAM_Integer,
3668 struct hdd_config, enable_lfr_subnet_detection,
3669 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3670 CFG_ENABLE_LFR_SUBNET_DEFAULT,
3671 CFG_ENABLE_LFR_SUBNET_MIN,
3672 CFG_ENABLE_LFR_SUBNET_MAX),
3673#endif
Sandeep Puligilla93a29ec2016-02-12 16:10:56 -08003674 REG_VARIABLE(CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME_NAME,
3675 WLAN_PARAM_Integer,
3676 struct hdd_config, obss_active_dwelltime,
3677 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3678 CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME_DEFAULT,
3679 CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME_MIN,
3680 CFG_OBSS_HT40_SCAN_ACTIVE_DWELL_TIME_MAX),
3681
3682 REG_VARIABLE(CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME_NAME,
3683 WLAN_PARAM_Integer,
3684 struct hdd_config, obss_passive_dwelltime,
3685 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3686 CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME_DEFAULT,
3687 CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME_MIN,
3688 CFG_OBSS_HT40_SCAN_PASSIVE_DWELL_TIME_MAX),
3689
3690 REG_VARIABLE(CFG_OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL_NAME,
3691 WLAN_PARAM_Integer,
3692 struct hdd_config, obss_width_trigger_interval,
3693 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3694 CFG_OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL_DEFAULT,
3695 CFG_OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL_MIN,
3696 CFG_OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL_MAX),
Deepak Dhamdhere68929ec2015-08-05 15:16:35 -07003697
3698 REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer,
3699 struct hdd_config, inform_bss_rssi_raw,
3700 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3701 CFG_INFORM_BSS_RSSI_RAW_DEFAULT,
3702 CFG_INFORM_BSS_RSSI_RAW_MIN,
3703 CFG_INFORM_BSS_RSSI_RAW_MAX),
Tushnim Bhattacharyya24e12a62015-10-12 14:51:56 -07003704
Manikandan Mohan976e7562016-03-15 16:33:31 -07003705#ifdef WLAN_FEATURE_TSF
3706 REG_VARIABLE(CFG_SET_TSF_GPIO_PIN_NAME, WLAN_PARAM_Integer,
3707 struct hdd_config, tsf_gpio_pin,
3708 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3709 CFG_SET_TSF_GPIO_PIN_DEFAULT,
3710 CFG_SET_TSF_GPIO_PIN_MIN,
3711 CFG_SET_TSF_GPIO_PIN_MAX),
3712#endif
3713
Gupta, Kapilc68ad462016-02-01 19:17:23 +05303714 REG_VARIABLE(CFG_ROAM_DENSE_TRAFFIC_THRESHOLD, WLAN_PARAM_Integer,
3715 struct hdd_config, roam_dense_traffic_thresh,
3716 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3717 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_DEFAULT,
3718 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_MIN,
3719 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD_MAX),
3720
3721 REG_VARIABLE(CFG_ROAM_DENSE_RSSI_THRE_OFFSET, WLAN_PARAM_Integer,
3722 struct hdd_config, roam_dense_rssi_thresh_offset,
3723 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3724 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_DEFAULT,
3725 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MIN,
3726 CFG_ROAM_DENSE_RSSI_THRE_OFFSET_MAX),
3727
Abhishek Singh165bc602016-03-21 12:43:00 +05303728 REG_VARIABLE(CFG_IGNORE_PEER_HT_MODE_NAME, WLAN_PARAM_Integer,
3729 struct hdd_config, ignore_peer_ht_opmode,
3730 VAR_FLAGS_OPTIONAL |
3731 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3732 CFG_IGNORE_PEER_HT_MODE_DEFAULT,
3733 CFG_IGNORE_PEER_HT_MODE_MIN,
3734 CFG_IGNORE_PEER_HT_MODE_MAX),
3735
Gupta, Kapilc68ad462016-02-01 19:17:23 +05303736 REG_VARIABLE(CFG_ROAM_DENSE_MIN_APS, WLAN_PARAM_Integer,
3737 struct hdd_config, roam_dense_min_aps,
3738 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3739 CFG_ROAM_DENSE_MIN_APS_DEFAULT,
3740 CFG_ROAM_DENSE_MIN_APS_MIN,
3741 CFG_ROAM_DENSE_MIN_APS_MAX),
3742
Abhishek Singh5ea86532016-04-27 14:10:53 +05303743 REG_VARIABLE(CFG_ENABLE_FATAL_EVENT_TRIGGER, WLAN_PARAM_Integer,
3744 struct hdd_config, enable_fatal_event,
3745 VAR_FLAGS_OPTIONAL |
3746 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3747 CFG_ENABLE_FATAL_EVENT_TRIGGER_DEFAULT,
3748 CFG_ENABLE_FATAL_EVENT_TRIGGER_MIN,
3749 CFG_ENABLE_FATAL_EVENT_TRIGGER_MAX),
3750
Abhishek Singh10ecf582016-05-04 17:48:59 +05303751 REG_VARIABLE(CFG_ENABLE_EDCA_INI_NAME, WLAN_PARAM_Integer,
3752 struct hdd_config, enable_edca_params,
3753 VAR_FLAGS_OPTIONAL |
3754 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3755 CFG_ENABLE_EDCA_INI_DEFAULT,
3756 CFG_ENABLE_EDCA_INI_MIN,
3757 CFG_ENABLE_EDCA_INI_MAX),
3758
Agrawal Ashishb2d1a452016-05-05 12:23:58 +05303759 REG_VARIABLE(CFG_ENABLE_GO_CTS2SELF_FOR_STA, WLAN_PARAM_Integer,
3760 struct hdd_config, enable_go_cts2self_for_sta,
3761 VAR_FLAGS_OPTIONAL |
3762 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3763 CFG_ENABLE_GO_CTS2SELF_FOR_STA_DEFAULT,
3764 CFG_ENABLE_GO_CTS2SELF_FOR_STA_MIN,
3765 CFG_ENABLE_GO_CTS2SELF_FOR_STA_MAX),
3766
Abhishek Singh10ecf582016-05-04 17:48:59 +05303767 REG_VARIABLE(CFG_EDCA_VO_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
3768 struct hdd_config, edca_vo_cwmin,
3769 VAR_FLAGS_OPTIONAL |
3770 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3771 CFG_EDCA_VO_CWMIN_VALUE_DEFAULT,
3772 CFG_EDCA_VO_CWMIN_VALUE_MIN,
3773 CFG_EDCA_VO_CWMIN_VALUE_MAX),
3774
3775 REG_VARIABLE(CFG_EDCA_VI_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
3776 struct hdd_config, edca_vi_cwmin,
3777 VAR_FLAGS_OPTIONAL |
3778 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3779 CFG_EDCA_VI_CWMIN_VALUE_DEFAULT,
3780 CFG_EDCA_VI_CWMIN_VALUE_MIN,
3781 CFG_EDCA_VI_CWMIN_VALUE_MAX),
3782
3783 REG_VARIABLE(CFG_EDCA_BK_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
3784 struct hdd_config, edca_bk_cwmin,
3785 VAR_FLAGS_OPTIONAL |
3786 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3787 CFG_EDCA_BK_CWMIN_VALUE_DEFAULT,
3788 CFG_EDCA_BK_CWMIN_VALUE_MIN,
3789 CFG_EDCA_BK_CWMIN_VALUE_MAX),
3790
3791 REG_VARIABLE(CFG_EDCA_BE_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
3792 struct hdd_config, edca_be_cwmin,
3793 VAR_FLAGS_OPTIONAL |
3794 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3795 CFG_EDCA_BE_CWMIN_VALUE_DEFAULT,
3796 CFG_EDCA_BE_CWMIN_VALUE_MIN,
3797 CFG_EDCA_BE_CWMIN_VALUE_MAX),
3798
3799 REG_VARIABLE(CFG_EDCA_VO_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
3800 struct hdd_config, edca_vo_cwmax,
3801 VAR_FLAGS_OPTIONAL |
3802 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3803 CFG_EDCA_VO_CWMAX_VALUE_DEFAULT,
3804 CFG_EDCA_VO_CWMAX_VALUE_MIN,
3805 CFG_EDCA_VO_CWMAX_VALUE_MAX),
3806
3807 REG_VARIABLE(CFG_EDCA_VI_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
3808 struct hdd_config, edca_vi_cwmax,
3809 VAR_FLAGS_OPTIONAL |
3810 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3811 CFG_EDCA_VI_CWMAX_VALUE_DEFAULT,
3812 CFG_EDCA_VI_CWMAX_VALUE_MIN,
3813 CFG_EDCA_VI_CWMAX_VALUE_MAX),
3814
3815 REG_VARIABLE(CFG_EDCA_BK_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
3816 struct hdd_config, edca_bk_cwmax,
3817 VAR_FLAGS_OPTIONAL |
3818 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3819 CFG_EDCA_BK_CWMAX_VALUE_DEFAULT,
3820 CFG_EDCA_BK_CWMAX_VALUE_MIN,
3821 CFG_EDCA_BK_CWMAX_VALUE_MAX),
3822
3823 REG_VARIABLE(CFG_EDCA_BE_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
3824 struct hdd_config, edca_be_cwmax,
3825 VAR_FLAGS_OPTIONAL |
3826 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3827 CFG_EDCA_BE_CWMAX_VALUE_DEFAULT,
3828 CFG_EDCA_BE_CWMAX_VALUE_MIN,
3829 CFG_EDCA_BE_CWMAX_VALUE_MAX),
3830
3831 REG_VARIABLE(CFG_EDCA_VO_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
3832 struct hdd_config, edca_vo_aifs,
3833 VAR_FLAGS_OPTIONAL |
3834 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3835 CFG_EDCA_VO_AIFS_VALUE_DEFAULT,
3836 CFG_EDCA_VO_AIFS_VALUE_MIN,
3837 CFG_EDCA_VO_AIFS_VALUE_MAX),
3838
3839 REG_VARIABLE(CFG_EDCA_VI_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
3840 struct hdd_config, edca_vi_aifs,
3841 VAR_FLAGS_OPTIONAL |
3842 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3843 CFG_EDCA_VI_AIFS_VALUE_DEFAULT,
3844 CFG_EDCA_VI_AIFS_VALUE_MIN,
3845 CFG_EDCA_VI_AIFS_VALUE_MAX),
3846
3847 REG_VARIABLE(CFG_EDCA_BK_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
3848 struct hdd_config, edca_bk_aifs,
3849 VAR_FLAGS_OPTIONAL |
3850 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3851 CFG_EDCA_BK_AIFS_VALUE_DEFAULT,
3852 CFG_EDCA_BK_AIFS_VALUE_MIN,
3853 CFG_EDCA_BK_AIFS_VALUE_MAX),
3854
3855 REG_VARIABLE(CFG_EDCA_BE_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
3856 struct hdd_config, edca_be_aifs,
3857 VAR_FLAGS_OPTIONAL |
3858 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3859 CFG_EDCA_BE_AIFS_VALUE_DEFAULT,
3860 CFG_EDCA_BE_AIFS_VALUE_MIN,
3861 CFG_EDCA_BE_AIFS_VALUE_MAX),
Deepak Dhamdhere3385d752016-05-25 20:36:47 -07003862#ifdef WLAN_FEATURE_NAN_DATAPATH
3863 REG_VARIABLE(CFG_ENABLE_NAN_DATAPATH_NAME, WLAN_PARAM_Integer,
3864 struct hdd_config, enable_nan_datapath,
3865 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3866 CFG_ENABLE_NAN_DATAPATH_DEFAULT,
3867 CFG_ENABLE_NAN_DATAPATH_MIN,
3868 CFG_ENABLE_NAN_DATAPATH_MAX),
3869
3870 REG_VARIABLE(CFG_ENABLE_NAN_NDI_CHANNEL_NAME, WLAN_PARAM_Integer,
3871 struct hdd_config, nan_datapath_ndi_channel,
3872 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3873 CFG_ENABLE_NAN_NDI_CHANNEL_DEFAULT,
3874 CFG_ENABLE_NAN_NDI_CHANNEL_MIN,
3875 CFG_ENABLE_NAN_NDI_CHANNEL_MAX),
3876#endif
Kapil Gupta0ed58dc2016-04-22 15:35:26 +05303877 REG_VARIABLE(CFG_CREATE_BUG_REPORT_FOR_SCAN, WLAN_PARAM_Integer,
3878 struct hdd_config, bug_report_for_no_scan_results,
3879 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3880 CFG_CREATE_BUG_REPORT_FOR_SCAN_DEFAULT,
3881 CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE,
3882 CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE),
Abhishek Singh5ea86532016-04-27 14:10:53 +05303883
Nirav Shahcc1f1ae2016-04-26 11:41:29 +05303884 REG_VARIABLE(CFG_ENABLE_DP_TRACE, WLAN_PARAM_Integer,
3885 struct hdd_config, enable_dp_trace,
3886 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3887 CFG_ENABLE_DP_TRACE_DEFAULT,
3888 CFG_ENABLE_DP_TRACE_MIN,
3889 CFG_ENABLE_DP_TRACE_MAX),
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05303890
3891 REG_VARIABLE(CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer,
3892 struct hdd_config, scan_adaptive_dwell_mode,
3893 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3894 CFG_ADAPTIVE_SCAN_DWELL_MODE_DEFAULT,
3895 CFG_ADAPTIVE_SCAN_DWELL_MODE_MIN,
3896 CFG_ADAPTIVE_SCAN_DWELL_MODE_MAX),
3897
3898 REG_VARIABLE(CFG_ADAPTIVE_ROAMSCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer,
3899 struct hdd_config, roamscan_adaptive_dwell_mode,
3900 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3901 CFG_ADAPTIVE_ROAMSCAN_DWELL_MODE_DEFAULT,
3902 CFG_ADAPTIVE_ROAMSCAN_DWELL_MODE_MIN,
3903 CFG_ADAPTIVE_ROAMSCAN_DWELL_MODE_MAX),
3904
3905 REG_VARIABLE(CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_NAME, WLAN_PARAM_Integer,
3906 struct hdd_config, extscan_adaptive_dwell_mode,
3907 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3908 CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_DEFAULT,
3909 CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_MIN,
3910 CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_MAX),
3911
3912 REG_VARIABLE(CFG_ADAPTIVE_DWELL_MODE_ENABLED_NAME, WLAN_PARAM_Integer,
3913 struct hdd_config, adaptive_dwell_mode_enabled,
3914 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3915 CFG_ADAPTIVE_DWELL_MODE_ENABLED_DEFAULT,
3916 CFG_ADAPTIVE_DWELL_MODE_ENABLED_MIN,
3917 CFG_ADAPTIVE_DWELL_MODE_ENABLED_MAX),
3918
3919 REG_VARIABLE(CFG_GLOBAL_ADAPTIVE_DWELL_MODE_NAME, WLAN_PARAM_Integer,
3920 struct hdd_config, global_adapt_dwelltime_mode,
3921 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3922 CFG_GLOBAL_ADAPTIVE_DWELL_MODE_DEFAULT,
3923 CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MIN,
3924 CFG_GLOBAL_ADAPTIVE_DWELL_MODE_MAX),
3925
3926 REG_VARIABLE(CFG_ADAPT_DWELL_LPF_WEIGHT_NAME, WLAN_PARAM_Integer,
3927 struct hdd_config, adapt_dwell_lpf_weight,
3928 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3929 CFG_ADAPT_DWELL_LPF_WEIGHT_DEFAULT,
3930 CFG_ADAPT_DWELL_LPF_WEIGHT_MIN,
3931 CFG_ADAPT_DWELL_LPF_WEIGHT_MAX),
3932
Naveen Rawat64e477e2016-05-20 10:34:56 -07003933 REG_VARIABLE(CFG_SUB_20_CHANNEL_WIDTH_NAME, WLAN_PARAM_Integer,
3934 struct hdd_config, enable_sub_20_channel_width,
3935 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3936 CFG_SUB_20_CHANNEL_WIDTH_DEFAULT,
3937 CFG_SUB_20_CHANNEL_WIDTH_MIN,
3938 CFG_SUB_20_CHANNEL_WIDTH_MAX),
3939
Rajeev Kumar Sirasanagandlaaf474742016-09-06 17:54:50 +05303940 REG_VARIABLE(CFG_TGT_GTX_USR_CFG_NAME, WLAN_PARAM_Integer,
3941 struct hdd_config, tgt_gtx_usr_cfg,
3942 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3943 CFG_TGT_GTX_USR_CFG_DEFAULT,
3944 CFG_TGT_GTX_USR_CFG_MIN,
3945 CFG_TGT_GTX_USR_CFG_MAX),
3946
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05303947 REG_VARIABLE(CFG_ADAPT_DWELL_PASMON_INTVAL_NAME, WLAN_PARAM_Integer,
3948 struct hdd_config, adapt_dwell_passive_mon_intval,
3949 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3950 CFG_ADAPT_DWELL_PASMON_INTVAL_DEFAULT,
3951 CFG_ADAPT_DWELL_PASMON_INTVAL_MIN,
3952 CFG_ADAPT_DWELL_PASMON_INTVAL_MAX),
3953
3954 REG_VARIABLE(CFG_ADAPT_DWELL_WIFI_THRESH_NAME, WLAN_PARAM_Integer,
3955 struct hdd_config, adapt_dwell_wifi_act_threshold,
3956 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3957 CFG_ADAPT_DWELL_WIFI_THRESH_DEFAULT,
3958 CFG_ADAPT_DWELL_WIFI_THRESH_MIN,
3959 CFG_ADAPT_DWELL_WIFI_THRESH_MAX),
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003960
Nirav Shahbd36b062016-07-18 11:12:59 +05303961 REG_VARIABLE(CFG_RX_MODE_NAME, WLAN_PARAM_Integer,
3962 struct hdd_config, rx_mode,
3963 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3964 CFG_RX_MODE_DEFAULT,
3965 CFG_RX_MODE_MIN,
3966 CFG_RX_MODE_MAX),
3967
3968 REG_VARIABLE_STRING(CFG_RPS_RX_QUEUE_CPU_MAP_LIST_NAME,
3969 WLAN_PARAM_String,
3970 struct hdd_config, cpu_map_list,
3971 VAR_FLAGS_OPTIONAL,
3972 (void *)CFG_RPS_RX_QUEUE_CPU_MAP_LIST_DEFAULT),
3973
Amar Singhal18517882016-08-08 12:26:20 -07003974 REG_VARIABLE(CFG_INDOOR_CHANNEL_SUPPORT_NAME,
3975 WLAN_PARAM_Integer,
3976 struct hdd_config, indoor_channel_support,
3977 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3978 CFG_INDOOR_CHANNEL_SUPPORT_DEFAULT,
3979 CFG_INDOOR_CHANNEL_SUPPORT_MIN,
3980 CFG_INDOOR_CHANNEL_SUPPORT_MAX),
3981
Mukul Sharmaf7d62e12016-09-03 15:16:22 +05303982 REG_VARIABLE(CFG_BUG_ON_REINIT_FAILURE_NAME, WLAN_PARAM_Integer,
3983 struct hdd_config, bug_on_reinit_failure,
3984 VAR_FLAGS_OPTIONAL |
3985 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3986 CFG_BUG_ON_REINIT_FAILURE_DEFAULT,
3987 CFG_BUG_ON_REINIT_FAILURE_MIN,
3988 CFG_BUG_ON_REINIT_FAILURE_MAX),
3989
Rajeev Kumar Sirasanagandlab79b5462016-09-06 18:33:17 +05303990 REG_VARIABLE(CFG_SAP_FORCE_11N_FOR_11AC_NAME, WLAN_PARAM_Integer,
3991 struct hdd_config, sap_force_11n_for_11ac,
3992 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3993 CFG_SAP_FORCE_11N_FOR_11AC_DEFAULT,
3994 CFG_SAP_FORCE_11N_FOR_11AC_MIN,
3995 CFG_SAP_FORCE_11N_FOR_11AC_MAX),
3996
Arun Khandavallifae92942016-08-01 13:31:08 +05303997 REG_VARIABLE(CFG_INTERFACE_CHANGE_WAIT_NAME, WLAN_PARAM_Integer,
3998 struct hdd_config, iface_change_wait_time,
3999 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
4000 CFG_INTERFACE_CHANGE_WAIT_DEFAULT,
4001 CFG_INTERFACE_CHANGE_WAIT_MIN,
4002 CFG_INTERFACE_CHANGE_WAIT_MAX),
Ravi Joshibb8d4512016-08-22 10:14:52 -07004003
4004 REG_VARIABLE(CFG_FILTER_MULTICAST_REPLAY_NAME,
4005 WLAN_PARAM_Integer,
4006 struct hdd_config, multicast_replay_filter,
4007 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4008 CFG_FILTER_MULTICAST_REPLAY_DEFAULT,
4009 CFG_FILTER_MULTICAST_REPLAY_MIN,
4010 CFG_FILTER_MULTICAST_REPLAY_MAX),
Manjeet Singhe7ecb7c2016-09-03 12:34:53 +05304011
4012 REG_VARIABLE(CFG_SIFS_BURST_DURATION_NAME, WLAN_PARAM_Integer,
4013 struct hdd_config, sifs_burst_duration,
4014 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4015 CFG_SIFS_BURST_DURATION_DEFAULT,
4016 CFG_SIFS_BURST_DURATION_MIN,
4017 CFG_SIFS_BURST_DURATION_MAX),
Selvaraj, Sridharebda0f22016-08-29 16:05:23 +05304018 REG_VARIABLE(CFG_OPTIMIZE_CA_EVENT_NAME, WLAN_PARAM_Integer,
4019 struct hdd_config, goptimize_chan_avoid_event,
4020 VAR_FLAGS_OPTIONAL |
4021 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4022 CFG_OPTIMIZE_CA_EVENT_DEFAULT,
4023 CFG_OPTIMIZE_CA_EVENT_DISABLE,
4024 CFG_OPTIMIZE_CA_EVENT_ENABLE),
Padma, Santhosh Kumara7119672016-08-16 16:05:14 +05304025
4026 REG_VARIABLE(CFG_TX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
4027 struct hdd_config, tx_aggregation_size,
4028 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4029 CFG_TX_AGGREGATION_SIZE_DEFAULT,
4030 CFG_TX_AGGREGATION_SIZE_MIN,
4031 CFG_TX_AGGREGATION_SIZE_MAX),
4032
4033 REG_VARIABLE(CFG_RX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
4034 struct hdd_config, rx_aggregation_size,
4035 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4036 CFG_RX_AGGREGATION_SIZE_DEFAULT,
4037 CFG_RX_AGGREGATION_SIZE_MIN,
4038 CFG_RX_AGGREGATION_SIZE_MAX),
Agrawal, Ashish4e5fa1c2016-09-21 19:03:43 +05304039 REG_VARIABLE(CFG_SAP_MAX_INACTIVITY_OVERRIDE_NAME, WLAN_PARAM_Integer,
4040 struct hdd_config, sap_max_inactivity_override,
4041 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4042 CFG_SAP_MAX_INACTIVITY_OVERRIDE_DEFAULT,
4043 CFG_SAP_MAX_INACTIVITY_OVERRIDE_MIN,
Sandeep Puligillaafa52892016-10-26 19:03:16 -07004044 CFG_SAP_MAX_INACTIVITY_OVERRIDE_MAX),
4045 REG_VARIABLE(CFG_CRASH_FW_TIMEOUT_NAME, WLAN_PARAM_Integer,
4046 struct hdd_config, fw_timeout_crash,
4047 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4048 CFG_CRASH_FW_TIMEOUT_DEFAULT,
4049 CFG_CRASH_FW_TIMEOUT_DISABLE,
4050 CFG_CRASH_FW_TIMEOUT_ENABLE),
Dustin Browncd756942016-11-23 12:25:33 -08004051 REG_VARIABLE(CFG_RX_WAKELOCK_TIMEOUT_NAME, WLAN_PARAM_Integer,
4052 struct hdd_config, rx_wakelock_timeout,
4053 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
4054 CFG_RX_WAKELOCK_TIMEOUT_DEFAULT,
4055 CFG_RX_WAKELOCK_TIMEOUT_MIN,
4056 CFG_RX_WAKELOCK_TIMEOUT_MAX)
Arun Khandavallifae92942016-08-01 13:31:08 +05304057};
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004058
4059/**
4060 * get_next_line() - find and locate the new line pointer
4061 * @str: pointer to string
4062 *
4063 * This function returns a pointer to the character after the occurence
4064 * of a new line character. It also modifies the original string by replacing
4065 * the '\n' character with the null character.
4066 *
4067 * Return: the pointer to the character at new line,
4068 * or NULL if no new line character was found
4069 */
4070static char *get_next_line(char *str)
4071{
4072 char c;
4073
4074 if (str == NULL || *str == '\0') {
4075 return NULL;
4076 }
4077
4078 c = *str;
4079 while (c != '\n' && c != '\0' && c != 0xd) {
4080 str = str + 1;
4081 c = *str;
4082 }
4083
4084 if (c == '\0') {
4085 return NULL;
4086 } else {
4087 *str = '\0';
4088 return str + 1;
4089 }
4090
4091 return NULL;
4092}
4093
4094/** look for space. Ascii values to look are
4095 * 0x09 == horizontal tab
4096 * 0x0a == Newline ("\n")
4097 * 0x0b == vertical tab
4098 * 0x0c == Newpage or feed form.
4099 * 0x0d == carriage return (CR or "\r")
4100 * Null ('\0') should not considered as space.
4101 */
4102#define i_isspace(ch) (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')
4103
4104/**
4105 * i_trim() - trims any leading and trailing white spaces
4106 * @str: pointer to string
4107 *
4108 * Return: the pointer of the string
4109 */
4110static char *i_trim(char *str)
4111{
4112 char *ptr;
4113
4114 if (*str == '\0')
4115 return str;
4116
4117 /* Find the first non white-space */
4118 ptr = str;
4119 while (i_isspace(*ptr))
4120 ptr++;
4121
4122 if (*ptr == '\0')
4123 return str;
4124
4125 /* This is the new start of the string */
4126 str = ptr;
4127
4128 /* Find the last non white-space */
4129 ptr += strlen(ptr) - 1;
4130
4131 while (ptr != str && i_isspace(*ptr))
4132 ptr--;
4133
4134 /* Null terminate the following character */
4135 ptr[1] = '\0';
4136
4137 return str;
4138}
4139
4140/* Maximum length of the confgiuration name and value */
4141#define CFG_VALUE_MAX_LEN 256
4142#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
4143
4144/**
4145 * hdd_cfg_get_config() - get the configuration content
4146 * @reg_table: pointer to configuration table
4147 * @cRegTableEntries: number of the configuration entries
4148 * @ini_struct: pointer to the hdd config knob
4149 * @pHddCtx: pointer to hdd context
4150 * @pBuf: buffer to store the configuration
4151 * @buflen: size of the buffer
4152 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304153 * Return: QDF_STATUS_SUCCESS if the configuration and buffer size can carry
4154 * the content, otherwise QDF_STATUS_E_RESOURCES
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004155 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304156static QDF_STATUS hdd_cfg_get_config(REG_TABLE_ENTRY *reg_table,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004157 unsigned long cRegTableEntries,
4158 uint8_t *ini_struct,
4159 hdd_context_t *pHddCtx, char *pBuf,
4160 int buflen)
4161{
4162 unsigned int idx;
4163 REG_TABLE_ENTRY *pRegEntry = reg_table;
4164 uint32_t value;
4165 char valueStr[CFG_VALUE_MAX_LEN];
4166 char configStr[CFG_ENTRY_MAX_LEN];
4167 char *fmt;
4168 void *pField;
Anurag Chouhan6d760662016-02-20 16:05:43 +05304169 struct qdf_mac_addr *pMacAddr;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004170 char *pCur = pBuf;
4171 int curlen;
4172
4173 /* start with an empty string */
4174 *pCur = '\0';
4175
4176 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
4177 pField = ini_struct + pRegEntry->VarOffset;
4178
4179 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
4180 (WLAN_PARAM_SignedInteger == pRegEntry->RegType) ||
4181 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
4182 value = 0;
4183 memcpy(&value, pField, pRegEntry->VarSize);
4184 if (WLAN_PARAM_HexInteger == pRegEntry->RegType) {
4185 fmt = "%x";
4186 } else if (WLAN_PARAM_SignedInteger ==
4187 pRegEntry->RegType) {
4188 fmt = "%d";
4189 } else {
4190 fmt = "%u";
4191 }
4192 snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
4193 } else if (WLAN_PARAM_String == pRegEntry->RegType) {
4194 snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s",
4195 (char *)pField);
4196 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
Anurag Chouhan6d760662016-02-20 16:05:43 +05304197 pMacAddr = (struct qdf_mac_addr *) pField;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004198 snprintf(valueStr, CFG_VALUE_MAX_LEN,
4199 "%02x:%02x:%02x:%02x:%02x:%02x",
4200 pMacAddr->bytes[0],
4201 pMacAddr->bytes[1],
4202 pMacAddr->bytes[2],
4203 pMacAddr->bytes[3],
4204 pMacAddr->bytes[4], pMacAddr->bytes[5]);
4205 } else {
4206 snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
4207 }
4208 curlen = scnprintf(configStr, CFG_ENTRY_MAX_LEN,
4209 "%s=[%s]%s\n",
4210 pRegEntry->RegName,
4211 valueStr,
4212 test_bit(idx,
4213 (void *)&pHddCtx->config->
4214 bExplicitCfg) ? "*" : "");
4215
4216 /* Ideally we want to return the config to the application,
4217 * however the config is too big so we just printk() for now
4218 */
4219#ifdef RETURN_IN_BUFFER
Hanumanth Reddy Pothulaadf163e2016-09-07 15:11:58 +05304220 if (curlen < buflen) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004221 /* copy string + '\0' */
4222 memcpy(pCur, configStr, curlen + 1);
4223
4224 /* account for addition; */
4225 pCur += curlen;
4226 buflen -= curlen;
4227 } else {
4228 /* buffer space exhausted, return what we have */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304229 return QDF_STATUS_E_RESOURCES;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004230 }
4231#else
4232 printk(KERN_INFO "%s", configStr);
4233#endif /* RETURN_IN_BUFFER */
4234
4235 }
4236
4237#ifndef RETURN_IN_BUFFER
4238 /* notify application that output is in system log */
4239 snprintf(pCur, buflen, "WLAN configuration written to system log");
4240#endif /* RETURN_IN_BUFFER */
4241
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304242 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004243}
4244
4245/** struct tCfgIniEntry - ini configuration entry
4246 *
4247 * @name: name of the entry
4248 * @value: value of the entry
4249 */
4250typedef struct {
4251 char *name;
4252 char *value;
4253} tCfgIniEntry;
4254
4255/**
4256 * find_cfg_item() - find the configuration item
4257 * @iniTable: pointer to configuration table
4258 * @entries: number fo the configuration entries
4259 * @name: the interested configuration to find
4260 * @value: the value to read back
4261 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304262 * Return: QDF_STATUS_SUCCESS if the interested configuration is found,
4263 * otherwise QDF_STATUS_E_FAILURE
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004264 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304265static QDF_STATUS find_cfg_item(tCfgIniEntry *iniTable, unsigned long entries,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004266 char *name, char **value)
4267{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304268 QDF_STATUS status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004269 unsigned long i;
4270
4271 for (i = 0; i < entries; i++) {
4272 if (strcmp(iniTable[i].name, name) == 0) {
4273 *value = iniTable[i].value;
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304274 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004275 "Found %s entry for Name=[%s] Value=[%s] ",
4276 WLAN_INI_FILE, name, *value);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304277 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004278 }
4279 }
4280
4281 return status;
4282}
4283
4284/**
4285 * parse_hex_digit() - conversion to hex value
4286 * @c: the character to convert
4287 *
4288 * Return: the hex value, otherwise 0
4289 */
4290static int parse_hex_digit(char c)
4291{
4292 if (c >= '0' && c <= '9')
4293 return c - '0';
4294 if (c >= 'a' && c <= 'f')
4295 return c - 'a' + 10;
4296 if (c >= 'A' && c <= 'F')
4297 return c - 'A' + 10;
4298
4299 return 0;
4300}
4301
4302/**
4303 * update_mac_from_string() - convert string to 6 bytes mac address
4304 * @pHddCtx: the pointer to hdd context
4305 * @macTable: the macTable to carry the conversion
4306 * @num: number of the interface
4307 *
4308 * 00AA00BB00CC -> 0x00 0xAA 0x00 0xBB 0x00 0xCC
4309 *
4310 * Return: None
4311 */
4312static void update_mac_from_string(hdd_context_t *pHddCtx,
4313 tCfgIniEntry *macTable, int num)
4314{
4315 int i = 0, j = 0, res = 0;
4316 char *candidate = NULL;
Anurag Chouhan6d760662016-02-20 16:05:43 +05304317 struct qdf_mac_addr macaddr[QDF_MAX_CONCURRENCY_PERSONA];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004318
4319 memset(macaddr, 0, sizeof(macaddr));
4320
4321 for (i = 0; i < num; i++) {
4322 candidate = macTable[i].value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05304323 for (j = 0; j < QDF_MAC_ADDR_SIZE; j++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004324 res =
4325 hex2bin(&macaddr[i].bytes[j], &candidate[(j << 1)],
4326 1);
4327 if (res < 0)
4328 break;
4329 }
Anurag Chouhanc5548422016-02-24 18:33:27 +05304330 if (res == 0 && !qdf_is_macaddr_zero(&macaddr[i])) {
Anurag Chouhan600c3a02016-03-01 10:33:54 +05304331 qdf_mem_copy((uint8_t *) &pHddCtx->config->
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004332 intfMacAddr[i].bytes[0],
4333 (uint8_t *) &macaddr[i].bytes[0],
Anurag Chouhan6d760662016-02-20 16:05:43 +05304334 QDF_MAC_ADDR_SIZE);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004335 }
4336 }
4337}
4338
4339/**
4340 * hdd_apply_cfg_ini() - apply the ini configuration file
4341 * @pHddCtx: the pointer to hdd context
4342 * @iniTable: pointer to configuration table
4343 * @entries: number fo the configuration entries
4344 * It overwrites the MAC address if config file exist.
4345 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304346 * Return: QDF_STATUS_SUCCESS if the ini configuration file is correctly parsed,
4347 * otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004348 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304349static QDF_STATUS hdd_apply_cfg_ini(hdd_context_t *pHddCtx,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004350 tCfgIniEntry *iniTable,
4351 unsigned long entries)
4352{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304353 QDF_STATUS match_status = QDF_STATUS_E_FAILURE;
4354 QDF_STATUS ret_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004355 unsigned int idx;
4356 void *pField;
4357 char *value_str = NULL;
4358 unsigned long len_value_str;
4359 char *candidate;
4360 uint32_t value;
4361 int32_t svalue;
4362 void *pStructBase = pHddCtx->config;
4363 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
Anurag Chouhan6d760662016-02-20 16:05:43 +05304364 unsigned long cRegTableEntries = QDF_ARRAY_SIZE(g_registry_table);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004365 uint32_t cbOutString;
4366 int i;
4367 int rv;
4368
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004369 if (MAX_CFG_INI_ITEMS < cRegTableEntries) {
Srinivas Girigowdaba3091c2015-11-16 17:18:40 -08004370 hddLog(LOGE, FL("MAX_CFG_INI_ITEMS too small, must be at least %ld"),
4371 cRegTableEntries);
4372 WARN_ON(1);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004373 }
4374
4375 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
4376 /* Calculate the address of the destination field in the structure. */
4377 pField = ((uint8_t *) pStructBase) + pRegEntry->VarOffset;
4378
4379 match_status =
4380 find_cfg_item(iniTable, entries, pRegEntry->RegName,
4381 &value_str);
4382
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304383 if ((match_status != QDF_STATUS_SUCCESS)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004384 && (pRegEntry->Flags & VAR_FLAGS_REQUIRED)) {
4385 /* If we could not read the cfg item and it is required, this is an error. */
4386 hddLog(LOGE,
4387 "%s: Failed to read required config parameter %s",
4388 __func__, pRegEntry->RegName);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304389 ret_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004390 break;
4391 }
4392
4393 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
4394 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
4395 /* If successfully read from the registry, use the value read.
4396 * If not, use the default value.
4397 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304398 if (match_status == QDF_STATUS_SUCCESS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004399 && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
4400 rv = kstrtou32(value_str, 10, &value);
4401 if (rv < 0) {
4402 hddLog(LOGE,
4403 "%s: Reg Parameter %s invalid. Enforcing default",
4404 __func__, pRegEntry->RegName);
4405 value = pRegEntry->VarDefault;
4406 }
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304407 } else if (match_status == QDF_STATUS_SUCCESS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004408 && (WLAN_PARAM_HexInteger ==
4409 pRegEntry->RegType)) {
4410 rv = kstrtou32(value_str, 16, &value);
4411 if (rv < 0) {
4412 hddLog(LOGE,
4413 "%s: Reg paramter %s invalid. Enforcing default",
4414 __func__, pRegEntry->RegName);
4415 value = pRegEntry->VarDefault;
4416 }
4417 } else {
4418 value = pRegEntry->VarDefault;
4419 }
4420
4421 /* If this parameter needs range checking, do it here. */
4422 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
4423 if (value > pRegEntry->VarMax) {
4424 hddLog(LOGE,
4425 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Maximum",
4426 __func__, pRegEntry->RegName,
4427 value, pRegEntry->VarMax);
4428 value = pRegEntry->VarMax;
4429 }
4430
4431 if (value < pRegEntry->VarMin) {
4432 hddLog(LOGE,
4433 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Minimum",
4434 __func__, pRegEntry->RegName,
4435 value, pRegEntry->VarMin);
4436 value = pRegEntry->VarMin;
4437 }
4438 }
4439 /* If this parameter needs range checking, do it here. */
4440 else if (pRegEntry->
4441 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
4442 if (value > pRegEntry->VarMax) {
4443 hddLog(LOGE,
4444 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Default= %lu",
4445 __func__, pRegEntry->RegName,
4446 value, pRegEntry->VarMax,
4447 pRegEntry->VarDefault);
4448 value = pRegEntry->VarDefault;
4449 }
4450
4451 if (value < pRegEntry->VarMin) {
4452 hddLog(LOGE,
4453 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Default= %lu",
4454 __func__, pRegEntry->RegName,
4455 value, pRegEntry->VarMin,
4456 pRegEntry->VarDefault);
4457 value = pRegEntry->VarDefault;
4458 }
4459 }
4460 /* Move the variable into the output field. */
4461 memcpy(pField, &value, pRegEntry->VarSize);
4462 } else if (WLAN_PARAM_SignedInteger == pRegEntry->RegType) {
4463 /* If successfully read from the registry, use the value read.
4464 * If not, use the default value.
4465 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304466 if (QDF_STATUS_SUCCESS == match_status) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004467 rv = kstrtos32(value_str, 10, &svalue);
4468 if (rv < 0) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304469 hddLog(QDF_TRACE_LEVEL_WARN,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004470 "%s: Reg Parameter %s invalid. Enforcing Default",
4471 __func__, pRegEntry->RegName);
4472 svalue =
4473 (int32_t) pRegEntry->VarDefault;
4474 }
4475 } else {
4476 svalue = (int32_t) pRegEntry->VarDefault;
4477 }
4478
4479 /* If this parameter needs range checking, do it here. */
4480 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
4481 if (svalue > (int32_t) pRegEntry->VarMax) {
4482 hddLog(LOGE,
4483 "%s: Reg Parameter %s > allowed Maximum "
4484 "[%d > %d]. Enforcing Maximum",
4485 __func__, pRegEntry->RegName,
4486 svalue, (int)pRegEntry->VarMax);
4487 svalue = (int32_t) pRegEntry->VarMax;
4488 }
4489
4490 if (svalue < (int32_t) pRegEntry->VarMin) {
4491 hddLog(LOGE,
4492 "%s: Reg Parameter %s < allowed Minimum "
4493 "[%d < %d]. Enforcing Minimum",
4494 __func__, pRegEntry->RegName,
4495 svalue, (int)pRegEntry->VarMin);
4496 svalue = (int32_t) pRegEntry->VarMin;
4497 }
4498 }
4499 /* If this parameter needs range checking, do it here. */
4500 else if (pRegEntry->
4501 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
4502 if (svalue > (int32_t) pRegEntry->VarMax) {
4503 hddLog(LOGE,
4504 "%s: Reg Parameter %s > allowed Maximum "
4505 "[%d > %d]. Enforcing Default= %d",
4506 __func__, pRegEntry->RegName,
4507 svalue, (int)pRegEntry->VarMax,
4508 (int)pRegEntry->VarDefault);
4509 svalue =
4510 (int32_t) pRegEntry->VarDefault;
4511 }
4512
4513 if (svalue < (int32_t) pRegEntry->VarMin) {
4514 hddLog(LOGE,
4515 "%s: Reg Parameter %s < allowed Minimum "
4516 "[%d < %d]. Enforcing Default= %d",
4517 __func__, pRegEntry->RegName,
4518 svalue, (int)pRegEntry->VarMin,
4519 (int)pRegEntry->VarDefault);
4520 svalue = pRegEntry->VarDefault;
4521 }
4522 }
4523 /* Move the variable into the output field. */
4524 memcpy(pField, &svalue, pRegEntry->VarSize);
4525 }
4526 /* Handle string parameters */
4527 else if (WLAN_PARAM_String == pRegEntry->RegType) {
4528#ifdef WLAN_CFG_DEBUG
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304529 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004530 "RegName = %s, VarOffset %u VarSize %u VarDefault %s",
4531 pRegEntry->RegName, pRegEntry->VarOffset,
4532 pRegEntry->VarSize,
4533 (char *)pRegEntry->VarDefault);
4534#endif
4535
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304536 if (match_status == QDF_STATUS_SUCCESS) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004537 len_value_str = strlen(value_str);
4538
4539 if (len_value_str > (pRegEntry->VarSize - 1)) {
4540 hddLog(LOGE,
4541 "%s: Invalid Value=[%s] specified for Name=[%s] in %s",
4542 __func__, value_str,
4543 pRegEntry->RegName,
4544 WLAN_INI_FILE);
4545 cbOutString =
4546 util_min(strlen
4547 ((char *)pRegEntry->
4548 VarDefault),
4549 pRegEntry->VarSize - 1);
4550 memcpy(pField,
4551 (void *)(pRegEntry->VarDefault),
4552 cbOutString);
4553 ((uint8_t *) pField)[cbOutString] =
4554 '\0';
4555 } else {
4556 memcpy(pField, (void *)(value_str),
4557 len_value_str);
4558 ((uint8_t *) pField)[len_value_str] =
4559 '\0';
4560 }
4561 } else {
4562 /* Failed to read the string parameter from the registry. Use the default. */
4563 cbOutString =
4564 util_min(strlen((char *)pRegEntry->VarDefault),
4565 pRegEntry->VarSize - 1);
4566 memcpy(pField, (void *)(pRegEntry->VarDefault),
4567 cbOutString);
4568 ((uint8_t *) pField)[cbOutString] = '\0';
4569 }
4570 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
Anurag Chouhan6d760662016-02-20 16:05:43 +05304571 if (pRegEntry->VarSize != QDF_MAC_ADDR_SIZE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004572 hddLog(LOGE,
4573 "%s: Invalid VarSize %u for Name=[%s]",
4574 __func__, pRegEntry->VarSize,
4575 pRegEntry->RegName);
4576 continue;
4577 }
4578 candidate = (char *)pRegEntry->VarDefault;
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304579 if (match_status == QDF_STATUS_SUCCESS) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004580 len_value_str = strlen(value_str);
Anurag Chouhan6d760662016-02-20 16:05:43 +05304581 if (len_value_str != (QDF_MAC_ADDR_SIZE * 2)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004582 hddLog(LOGE,
4583 "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s",
4584 __func__, value_str,
4585 pRegEntry->RegName,
4586 WLAN_INI_FILE);
4587 } else
4588 candidate = value_str;
4589 }
4590 /* parse the string and store it in the byte array */
Anurag Chouhan6d760662016-02-20 16:05:43 +05304591 for (i = 0; i < QDF_MAC_ADDR_SIZE; i++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004592 ((char *)pField)[i] =
4593 (char)(parse_hex_digit(candidate[i * 2]) *
4594 16 +
4595 parse_hex_digit(candidate[i * 2 + 1]));
4596 }
4597 } else {
4598 hddLog(LOGE,
4599 "%s: Unknown param type for name[%s] in registry table",
4600 __func__, pRegEntry->RegName);
4601 }
4602
4603 /* did we successfully parse a cfg item for this parameter? */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304604 if ((match_status == QDF_STATUS_SUCCESS) &&
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004605 (idx < MAX_CFG_INI_ITEMS)) {
4606 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4607 }
4608 }
4609
4610 return ret_status;
4611}
4612
4613/**
4614 * hdd_execute_config_command() - executes an arbitrary configuration command
4615 * @reg_table: the pointer to configuration table
4616 * @tableSize: the size of the configuration table
4617 * @ini_struct: pointer to the hdd config knob
4618 * @pHddCtx: the pointer to hdd context
4619 * @command: the command to run
4620 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304621 * Return: QDF_STATUS_SUCCESS if the command is found and able to execute,
4622 * otherwise the appropriate QDF_STATUS will be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004623 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304624static QDF_STATUS hdd_execute_config_command(REG_TABLE_ENTRY *reg_table,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004625 unsigned long tableSize,
4626 uint8_t *ini_struct,
4627 hdd_context_t *pHddCtx,
4628 char *command)
4629{
4630 REG_TABLE_ENTRY *pRegEntry;
4631 char *clone;
4632 char *pCmd;
4633 void *pField;
4634 char *name;
4635 char *value_str;
4636 uint32_t value;
4637 int32_t svalue;
4638 size_t len_value_str;
4639 unsigned int idx;
4640 unsigned int i;
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304641 QDF_STATUS vstatus;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004642 int rv;
4643
4644 /* assume failure until proven otherwise */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304645 vstatus = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004646
4647 /* clone the command so that we can manipulate it */
4648 clone = kstrdup(command, GFP_ATOMIC);
4649 if (NULL == clone) {
4650 hddLog(LOGE,
4651 "%s: memory allocation failure, unable to process [%s]",
4652 __func__, command);
4653 return vstatus;
4654 }
4655 /* 'clone' will point to the beginning of the string so it can be freed
4656 * 'pCmd' will be used to walk/parse the command
4657 */
4658 pCmd = clone;
4659
4660 /* get rid of leading/trailing whitespace */
4661 pCmd = i_trim(pCmd);
4662 if ('\0' == *pCmd) {
4663 /* only whitespace */
4664 hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
4665 __func__, command);
4666 goto done;
4667 }
4668 /* parse the <name> = <value> */
4669 name = pCmd;
4670 while (('=' != *pCmd) && ('\0' != *pCmd)) {
4671 pCmd++;
4672 }
4673 if ('\0' == *pCmd) {
4674 /* did not find '=' */
4675 hddLog(LOGE, "%s: invalid command, no '=':[%s]",
4676 __func__, command);
4677 goto done;
4678 }
4679 /* replace '=' with NUL to terminate the <name> */
4680 *pCmd++ = '\0';
4681 name = i_trim(name);
4682 if ('\0' == *name) {
4683 /* did not find a name */
4684 hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
4685 __func__, command);
4686 goto done;
4687 }
4688
4689 value_str = i_trim(pCmd);
4690 if ('\0' == *value_str) {
4691 /* did not find a value */
4692 hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
4693 __func__, command);
4694 goto done;
4695 }
4696 /* lookup the configuration item */
4697 for (idx = 0; idx < tableSize; idx++) {
4698 if (0 == strcmp(name, reg_table[idx].RegName)) {
4699 /* found a match */
4700 break;
4701 }
4702 }
4703 if (tableSize == idx) {
4704 /* did not match the name */
4705 hddLog(LOGE,
4706 "%s: invalid command, unknown configuration item:[%s]",
4707 __func__, command);
4708 goto done;
4709 }
4710
4711 pRegEntry = &reg_table[idx];
4712 if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG)) {
4713 /* does not support dynamic configuration */
4714 hddLog(LOGE, "%s: Global_Registry_Table.%s does not support "
4715 "dynamic configuration", __func__, name);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304716 vstatus = QDF_STATUS_E_PERM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004717 goto done;
4718 }
4719
4720 pField = ini_struct + pRegEntry->VarOffset;
4721
4722 switch (pRegEntry->RegType) {
4723 case WLAN_PARAM_Integer:
4724 rv = kstrtou32(value_str, 10, &value);
4725 if (rv < 0)
4726 goto done;
4727 if (value < pRegEntry->VarMin) {
4728 /* out of range */
4729 hddLog(LOGE,
4730 "%s: invalid command, value %u < min value %lu",
4731 __func__, value, pRegEntry->VarMin);
4732 goto done;
4733 }
4734 if (value > pRegEntry->VarMax) {
4735 /* out of range */
4736 hddLog(LOGE,
4737 "%s: invalid command, value %u > max value %lu",
4738 __func__, value, pRegEntry->VarMax);
4739 goto done;
4740 }
4741 memcpy(pField, &value, pRegEntry->VarSize);
4742 break;
4743
4744 case WLAN_PARAM_HexInteger:
4745 rv = kstrtou32(value_str, 16, &value);
4746 if (rv < 0)
4747 goto done;
4748 if (value < pRegEntry->VarMin) {
4749 /* out of range */
4750 hddLog(LOGE,
4751 "%s: invalid command, value %x < min value %lx",
4752 __func__, value, pRegEntry->VarMin);
4753 goto done;
4754 }
4755 if (value > pRegEntry->VarMax) {
4756 /* out of range */
4757 hddLog(LOGE,
4758 "%s: invalid command, value %x > max value %lx",
4759 __func__, value, pRegEntry->VarMax);
4760 goto done;
4761 }
4762 memcpy(pField, &value, pRegEntry->VarSize);
4763 break;
4764
4765 case WLAN_PARAM_SignedInteger:
4766 rv = kstrtos32(value_str, 10, &svalue);
4767 if (rv < 0)
4768 goto done;
4769 if (svalue < (int32_t) pRegEntry->VarMin) {
4770 /* out of range */
4771 hddLog(LOGE,
4772 "%s: invalid command, value %d < min value %d",
4773 __func__, svalue, (int)pRegEntry->VarMin);
4774 goto done;
4775 }
4776 if (svalue > (int32_t) pRegEntry->VarMax) {
4777 /* out of range */
4778 hddLog(LOGE,
4779 "%s: invalid command, value %d > max value %d",
4780 __func__, svalue, (int)pRegEntry->VarMax);
4781 goto done;
4782 }
4783 memcpy(pField, &svalue, pRegEntry->VarSize);
4784 break;
4785
4786 case WLAN_PARAM_String:
4787 len_value_str = strlen(value_str);
4788 if (len_value_str > (pRegEntry->VarSize - 1)) {
4789 /* too big */
4790 hddLog(LOGE,
4791 "%s: invalid command, string [%s] length "
4792 "%zu exceeds maximum length %u",
4793 __func__, value_str,
4794 len_value_str, (pRegEntry->VarSize - 1));
4795 goto done;
4796 }
4797 /* copy string plus NUL */
4798 memcpy(pField, value_str, (len_value_str + 1));
4799 break;
4800
4801 case WLAN_PARAM_MacAddr:
4802 len_value_str = strlen(value_str);
Anurag Chouhan6d760662016-02-20 16:05:43 +05304803 if (len_value_str != (QDF_MAC_ADDR_SIZE * 2)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004804 /* out of range */
4805 hddLog(LOGE,
4806 "%s: invalid command, MAC address [%s] length "
4807 "%zu is not expected length %u",
4808 __func__, value_str,
Anurag Chouhan6d760662016-02-20 16:05:43 +05304809 len_value_str, (QDF_MAC_ADDR_SIZE * 2));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004810 goto done;
4811 }
4812 /* parse the string and store it in the byte array */
Anurag Chouhan6d760662016-02-20 16:05:43 +05304813 for (i = 0; i < QDF_MAC_ADDR_SIZE; i++) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004814 ((char *)pField)[i] = (char)
4815 ((parse_hex_digit(value_str[(i * 2)]) * 16) +
4816 parse_hex_digit(value_str[(i * 2) + 1]));
4817 }
4818 break;
4819
4820 default:
4821 goto done;
4822 }
4823
4824 /* if we get here, we had a successful modification */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05304825 vstatus = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004826
4827 /* config table has been modified, is there a notifier? */
4828 if (NULL != pRegEntry->pfnDynamicnotify) {
4829 (pRegEntry->pfnDynamicnotify)(pHddCtx, pRegEntry->notifyId);
4830 }
4831 /* note that this item was explicitly configured */
4832 if (idx < MAX_CFG_INI_ITEMS) {
4833 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4834 }
4835done:
4836 kfree(clone);
4837 return vstatus;
4838}
4839
4840/**
4841 * hdd_set_power_save_offload_config() - set power save offload configuration
4842 * @pHddCtx: the pointer to hdd context
4843 *
4844 * Return: none
4845 */
4846static void hdd_set_power_save_offload_config(hdd_context_t *pHddCtx)
4847{
4848 struct hdd_config *pConfig = pHddCtx->config;
4849 uint32_t listenInterval = 0;
4850
4851 if (strcmp(pConfig->PowerUsageControl, "Min") == 0) {
4852 listenInterval = pConfig->nBmpsMinListenInterval;
4853 } else if (strcmp(pConfig->PowerUsageControl, "Max") == 0) {
4854 listenInterval = pConfig->nBmpsMaxListenInterval;
4855 } else if (strcmp(pConfig->PowerUsageControl, "Mod") == 0) {
4856 listenInterval = pConfig->nBmpsModListenInterval;
4857 }
4858
4859 /*
4860 * Based on Mode Set the LI
4861 * Otherwise default LI value of 1 will
4862 * be taken
4863 */
4864 if (listenInterval) {
4865 /*
4866 * setcfg for listenInterval.
4867 * Make sure CFG is updated because PE reads this
4868 * from CFG at the time of assoc or reassoc
4869 */
4870 sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_LISTEN_INTERVAL,
4871 listenInterval);
4872 }
4873
4874}
4875
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07004876#ifdef FEATURE_RUNTIME_PM
4877static void hdd_cfg_print_runtime_pm(hdd_context_t *hdd_ctx)
4878{
4879 hdd_info("Name = [gRuntimePM] Value = [%u] ",
4880 hdd_ctx->config->runtime_pm);
4881
4882 hdd_info("Name = [gRuntimePMDelay] Value = [%u] ",
4883 hdd_ctx->config->runtime_pm_delay);
4884}
4885#else
4886static void hdd_cfg_print_runtime_pm(hdd_context_t *hdd_ctx)
4887{
4888}
4889#endif
4890
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004891/**
4892 * hdd_cfg_print() - print the hdd configuration
4893 * @iniTable: pointer to hdd context
4894 *
4895 * Return: None
4896 */
4897void hdd_cfg_print(hdd_context_t *pHddCtx)
4898{
4899 int i;
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 "*********Config values in HDD Adapter*******");
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304903 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004904 "Name = [RTSThreshold] Value = %u",
4905 pHddCtx->config->RTSThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304906 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004907 "Name = [OperatingChannel] Value = [%u]",
4908 pHddCtx->config->OperatingChannel);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304909 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004910 "Name = [PowerUsageControl] Value = [%s]",
4911 pHddCtx->config->PowerUsageControl);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304912 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004913 "Name = [fIsImpsEnabled] Value = [%u]",
4914 pHddCtx->config->fIsImpsEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304915 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004916 "Name = [nVccRssiTrigger] Value = [%u]",
4917 pHddCtx->config->nVccRssiTrigger);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304918 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004919 "Name = [gIbssBssid] Value =[" MAC_ADDRESS_STR "]",
4920 MAC_ADDR_ARRAY(pHddCtx->config->IbssBssid.bytes));
4921
Anurag Chouhan6d760662016-02-20 16:05:43 +05304922 for (i = 0; i < QDF_MAX_CONCURRENCY_PERSONA; i++) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304923 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004924 "Name = [Intf%dMacAddress] Value =[" MAC_ADDRESS_STR "]",
4925 i, MAC_ADDR_ARRAY(pHddCtx->config->intfMacAddr[i].bytes));
4926 }
4927
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 = [gApEnableUapsd] value = [%u]",
4930 pHddCtx->config->apUapsdEnabled);
4931
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304932 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004933 "Name = [gEnableApProt] value = [%u]",
4934 pHddCtx->config->apProtEnabled);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304935 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004936 "Name = [gAPAutoShutOff] Value = [%u]",
4937 pHddCtx->config->nAPAutoShutOff);
4938#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304939 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004940 "Name = [gWlanMccToSccSwitchMode] Value = [%u]",
4941 pHddCtx->config->WlanMccToSccSwitchMode);
4942#endif
4943#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304944 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004945 "Name = [gWlanAutoShutdown] Value = [%u]",
4946 pHddCtx->config->WlanAutoShutdown);
4947#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304948 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004949 "Name = [gApProtection] value = [%u]",
4950 pHddCtx->config->apProtection);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304951 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004952 "Name = [gEnableApOBSSProt] value = [%u]",
4953 pHddCtx->config->apOBSSProtEnabled);
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 = [%s] value = [%u]", CFG_FORCE_SAP_ACS,
4956 pHddCtx->config->force_sap_acs);
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 = [%s] value = [%u]", CFG_FORCE_SAP_ACS_START_CH,
4959 pHddCtx->config->force_sap_acs_st_ch);
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 = [%s] value = [%u]", CFG_FORCE_SAP_ACS_END_CH,
4962 pHddCtx->config->force_sap_acs_end_ch);
4963#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304964 QDF_TRACE(QDF_MODULE_ID_HDD,
4965 QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004966 "Name = [sap_channel_avoidance] value = [%u]",
4967 pHddCtx->config->sap_channel_avoidance);
4968#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
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 = [%s] value = [%u]", CFG_SAP_P2P_11AC_OVERRIDE_NAME,
4971 pHddCtx->config->sap_p2p_11ac_override);
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 = [ChannelBondingMode] Value = [%u]",
4974 pHddCtx->config->nChannelBondingMode24GHz);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304975 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004976 "Name = [ChannelBondingMode] Value = [%u]",
4977 pHddCtx->config->nChannelBondingMode5GHz);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304978 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004979 "Name = [dot11Mode] Value = [%u]",
4980 pHddCtx->config->dot11Mode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304981 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004982 "Name = [WmmMode] Value = [%u] ", pHddCtx->config->WmmMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304983 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004984 "Name = [UapsdMask] Value = [0x%x] ",
4985 pHddCtx->config->UapsdMask);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304986 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004987 "Name = [ImplicitQosIsEnabled] Value = [%u]",
4988 (int)pHddCtx->config->bImplicitQosEnabled);
4989
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304990 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004991 "Name = [InfraUapsdVoSrvIntv] Value = [%u] ",
4992 pHddCtx->config->InfraUapsdVoSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05304993 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08004994 "Name = [InfraUapsdVoSuspIntv] Value = [%u] ",
4995 pHddCtx->config->InfraUapsdVoSuspIntv);
4996
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 = [InfraUapsdViSrvIntv] Value = [%u] ",
4999 pHddCtx->config->InfraUapsdViSrvIntv);
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 = [InfraUapsdViSuspIntv] Value = [%u] ",
5002 pHddCtx->config->InfraUapsdViSuspIntv);
5003
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305004 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005005 "Name = [InfraUapsdBeSrvIntv] Value = [%u] ",
5006 pHddCtx->config->InfraUapsdBeSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305007 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005008 "Name = [InfraUapsdBeSuspIntv] Value = [%u] ",
5009 pHddCtx->config->InfraUapsdBeSuspIntv);
5010
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305011 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005012 "Name = [InfraUapsdBkSrvIntv] Value = [%u] ",
5013 pHddCtx->config->InfraUapsdBkSrvIntv);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305014 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005015 "Name = [InfraUapsdBkSuspIntv] Value = [%u] ",
5016 pHddCtx->config->InfraUapsdBkSuspIntv);
5017#ifdef FEATURE_WLAN_ESE
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 = [InfraInactivityInterval] Value = [%u] ",
5020 pHddCtx->config->InfraInactivityInterval);
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 = [EseEnabled] Value = [%u] ",
5023 pHddCtx->config->isEseIniFeatureEnabled);
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 = [FastTransitionEnabled] Value = [%u] ",
5026 pHddCtx->config->isFastTransitionEnabled);
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 = [gTxPowerCap] Value = [%u] dBm ",
5029 pHddCtx->config->nTxPowerCap);
5030#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305031 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Padma, Santhosh Kumar29df3622016-08-16 19:15:16 +05305032 "Name = [gAllowTPCfromAP] Value = [%u] ",
5033 pHddCtx->config->allow_tpc_from_ap);
5034 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005035 "Name = [FastRoamEnabled] Value = [%u] ",
5036 pHddCtx->config->isFastRoamIniFeatureEnabled);
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 = [MAWCEnabled] Value = [%u] ",
5039 pHddCtx->config->MAWCEnabled);
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 = [RoamRssiDiff] Value = [%u] ",
5042 pHddCtx->config->RoamRssiDiff);
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 = [isWESModeEnabled] Value = [%u] ",
5045 pHddCtx->config->isWESModeEnabled);
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 = [OkcEnabled] Value = [%u] ",
5048 pHddCtx->config->isOkcIniFeatureEnabled);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005049#ifdef FEATURE_WLAN_SCAN_PNO
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305050 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005051 "Name = [configPNOScanSupport] Value = [%u] ",
5052 pHddCtx->config->configPNOScanSupport);
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 = [configPNOScanTimerRepeatValue] Value = [%u] ",
5055 pHddCtx->config->configPNOScanTimerRepeatValue);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305056 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Srinivas Girigowdabdc98162015-09-17 11:06:07 -07005057 "Name = [gPNOSlowScanMultiplier] Value = [%u] ",
5058 pHddCtx->config->pno_slow_scan_multiplier);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005059#endif
5060#ifdef FEATURE_WLAN_TDLS
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305061 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005062 "Name = [fEnableTDLSSupport] Value = [%u] ",
5063 pHddCtx->config->fEnableTDLSSupport);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305064 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005065 "Name = [fEnableTDLSImplicitTrigger] Value = [%u] ",
5066 pHddCtx->config->fEnableTDLSImplicitTrigger);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305067 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005068 "Name = [fTDLSExternalControl] Value = [%u] ",
5069 pHddCtx->config->fTDLSExternalControl);
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 = [fTDLSUapsdMask] Value = [%u] ",
5072 pHddCtx->config->fTDLSUapsdMask);
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 = [fEnableTDLSBufferSta] Value = [%u] ",
5075 pHddCtx->config->fEnableTDLSBufferSta);
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 = [fEnableTDLSWmmMode] Value = [%u] ",
5078 pHddCtx->config->fEnableTDLSWmmMode);
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 = [enable_tdls_scan] Value = [%u]",
5081 pHddCtx->config->enable_tdls_scan);
5082#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305083 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005084 "Name = [InfraDirAcVo] Value = [%u] ",
5085 pHddCtx->config->InfraDirAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305086 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005087 "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",
5088 pHddCtx->config->InfraNomMsduSizeAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305089 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005090 "Name = [InfraMeanDataRateAcVo] Value = [0x%x] ",
5091 pHddCtx->config->InfraMeanDataRateAcVo);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305092 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005093 "Name = [InfraMinPhyRateAcVo] Value = [0x%x] ",
5094 pHddCtx->config->InfraMinPhyRateAcVo);
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 = [InfraSbaAcVo] Value = [0x%x] ",
5097 pHddCtx->config->InfraSbaAcVo);
5098
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305099 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005100 "Name = [InfraDirAcVi] Value = [%u] ",
5101 pHddCtx->config->InfraDirAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305102 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005103 "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",
5104 pHddCtx->config->InfraNomMsduSizeAcVi);
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 = [InfraMeanDataRateAcVi] Value = [0x%x] ",
5107 pHddCtx->config->InfraMeanDataRateAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305108 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005109 "Name = [InfraMinPhyRateAcVi] Value = [0x%x] ",
5110 pHddCtx->config->InfraMinPhyRateAcVi);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305111 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005112 "Name = [InfraSbaAcVi] Value = [0x%x] ",
5113 pHddCtx->config->InfraSbaAcVi);
5114
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305115 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005116 "Name = [InfraDirAcBe] Value = [%u] ",
5117 pHddCtx->config->InfraDirAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305118 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005119 "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",
5120 pHddCtx->config->InfraNomMsduSizeAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305121 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005122 "Name = [InfraMeanDataRateAcBe] Value = [0x%x] ",
5123 pHddCtx->config->InfraMeanDataRateAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305124 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005125 "Name = [InfraMinPhyRateAcBe] Value = [0x%x] ",
5126 pHddCtx->config->InfraMinPhyRateAcBe);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305127 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005128 "Name = [InfraSbaAcBe] Value = [0x%x] ",
5129 pHddCtx->config->InfraSbaAcBe);
5130
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 = [InfraDirAcBk] Value = [%u] ",
5133 pHddCtx->config->InfraDirAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305134 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005135 "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",
5136 pHddCtx->config->InfraNomMsduSizeAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305137 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005138 "Name = [InfraMeanDataRateAcBk] Value = [0x%x] ",
5139 pHddCtx->config->InfraMeanDataRateAcBk);
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 = [InfraMinPhyRateAcBk] Value = [0x%x] ",
5142 pHddCtx->config->InfraMinPhyRateAcBk);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305143 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005144 "Name = [InfraSbaAcBk] Value = [0x%x] ",
5145 pHddCtx->config->InfraSbaAcBk);
5146
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305147 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005148 "Name = [DelayedTriggerFrmInt] Value = [%u] ",
5149 pHddCtx->config->DelayedTriggerFrmInt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305150 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005151 "Name = [mcastBcastFilterSetting] Value = [%u] ",
5152 pHddCtx->config->mcastBcastFilterSetting);
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 = [fhostArpOffload] Value = [%u] ",
5155 pHddCtx->config->fhostArpOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305156 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005157 "Name = [ssdp] Value = [%u] ", pHddCtx->config->ssdp);
Houston Hoffmanc7c69f02016-03-24 22:45:52 -07005158 hdd_cfg_print_runtime_pm(pHddCtx);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005159#ifdef FEATURE_WLAN_RA_FILTERING
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305160 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005161 "Name = [RArateLimitInterval] Value = [%u] ",
5162 pHddCtx->config->RArateLimitInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305163 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005164 "Name = [IsRArateLimitEnabled] Value = [%u] ",
5165 pHddCtx->config->IsRArateLimitEnabled);
5166#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305167 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005168 "Name = [fFTResourceReqSupported] Value = [%u] ",
5169 pHddCtx->config->fFTResourceReqSupported);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005170
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305171 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005172 "Name = [nNeighborLookupRssiThreshold] Value = [%u] ",
5173 pHddCtx->config->nNeighborLookupRssiThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305174 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005175 "Name = [delay_before_vdev_stop] Value = [%u] ",
5176 pHddCtx->config->delay_before_vdev_stop);
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 = [nOpportunisticThresholdDiff] Value = [%u] ",
5179 pHddCtx->config->nOpportunisticThresholdDiff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305180 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005181 "Name = [nRoamRescanRssiDiff] Value = [%u] ",
5182 pHddCtx->config->nRoamRescanRssiDiff);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305183 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005184 "Name = [nNeighborScanMinChanTime] Value = [%u] ",
5185 pHddCtx->config->nNeighborScanMinChanTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305186 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005187 "Name = [nNeighborScanMaxChanTime] Value = [%u] ",
5188 pHddCtx->config->nNeighborScanMaxChanTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305189 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005190 "Name = [nMaxNeighborRetries] Value = [%u] ",
5191 pHddCtx->config->nMaxNeighborReqTries);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305192 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005193 "Name = [nNeighborScanPeriod] Value = [%u] ",
5194 pHddCtx->config->nNeighborScanPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305195 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005196 "Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",
5197 pHddCtx->config->nNeighborResultsRefreshPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305198 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005199 "Name = [nEmptyScanRefreshPeriod] Value = [%u] ",
5200 pHddCtx->config->nEmptyScanRefreshPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305201 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005202 "Name = [nRoamBmissFirstBcnt] Value = [%u] ",
5203 pHddCtx->config->nRoamBmissFirstBcnt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305204 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005205 "Name = [nRoamBmissFinalBcnt] Value = [%u] ",
5206 pHddCtx->config->nRoamBmissFinalBcnt);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305207 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005208 "Name = [nRoamBeaconRssiWeight] Value = [%u] ",
5209 pHddCtx->config->nRoamBeaconRssiWeight);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305210 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005211 "Name = [allowDFSChannelRoam] Value = [%u] ",
5212 pHddCtx->config->allowDFSChannelRoam);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305213 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005214 "Name = [nhi_rssi_scan_max_count] Value = [%u] ",
5215 pHddCtx->config->nhi_rssi_scan_max_count);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305216 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005217 "Name = [nhi_rssi_scan_rssi_delta] Value = [%u] ",
5218 pHddCtx->config->nhi_rssi_scan_rssi_delta);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305219 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005220 "Name = [nhi_rssi_scan_delay] Value = [%u] ",
5221 pHddCtx->config->nhi_rssi_scan_delay);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305222 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005223 "Name = [nhi_rssi_scan_rssi_ub] Value = [%u] ",
5224 pHddCtx->config->nhi_rssi_scan_rssi_ub);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305225 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005226 "Name = [burstSizeDefinition] Value = [0x%x] ",
5227 pHddCtx->config->burstSizeDefinition);
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 = [tsInfoAckPolicy] Value = [0x%x] ",
5230 pHddCtx->config->tsInfoAckPolicy);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305231 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005232 "Name = [rfSettlingTimeUs] Value = [%u] ",
5233 pHddCtx->config->rfSettlingTimeUs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305234 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005235 "Name = [bSingleTidRc] Value = [%u] ",
5236 pHddCtx->config->bSingleTidRc);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305237 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005238 "Name = [gDynamicPSPollvalue] Value = [%u] ",
5239 pHddCtx->config->dynamicPsPollValue);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305240 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005241 "Name = [gAddTSWhenACMIsOff] Value = [%u] ",
5242 pHddCtx->config->AddTSWhenACMIsOff);
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 = [gValidateScanList] Value = [%u] ",
5245 pHddCtx->config->fValidateScanList);
5246
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305247 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005248 "Name = [gStaKeepAlivePeriod] Value = [%u] ",
5249 pHddCtx->config->infraStaKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305250 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005251 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
5252 pHddCtx->config->apDataAvailPollPeriodInMs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305253 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005254 "Name = [BandCapability] Value = [%u] ",
5255 pHddCtx->config->nBandCapability);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305256 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005257 "Name = [teleBcnWakeupEnable] Value = [%u] ",
5258 pHddCtx->config->teleBcnWakeupEn);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305259 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005260 "Name = [transListenInterval] Value = [%u] ",
5261 pHddCtx->config->nTeleBcnTransListenInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305262 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005263 "Name = [transLiNumIdleBeacons] Value = [%u] ",
5264 pHddCtx->config->nTeleBcnTransLiNumIdleBeacons);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305265 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005266 "Name = [maxListenInterval] Value = [%u] ",
5267 pHddCtx->config->nTeleBcnMaxListenInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305268 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005269 "Name = [maxLiNumIdleBeacons] Value = [%u] ",
5270 pHddCtx->config->nTeleBcnMaxLiNumIdleBeacons);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305271 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005272 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
5273 pHddCtx->config->apDataAvailPollPeriodInMs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305274 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005275 "Name = [gEnableBypass11d] Value = [%u] ",
5276 pHddCtx->config->enableBypass11d);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305277 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005278 "Name = [gEnableDFSChnlScan] Value = [%u] ",
5279 pHddCtx->config->enableDFSChnlScan);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305280 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005281 "Name = [gEnableDFSPnoChnlScan] Value = [%u] ",
5282 pHddCtx->config->enable_dfs_pno_chnl_scan);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305283 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005284 "Name = [gReportMaxLinkSpeed] Value = [%u] ",
5285 pHddCtx->config->reportMaxLinkSpeed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305286 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005287 "Name = [thermalMitigationEnable] Value = [%u] ",
5288 pHddCtx->config->thermalMitigationEnable);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305289 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005290 "Name = [gVhtChannelWidth] value = [%u]",
5291 pHddCtx->config->vhtChannelWidth);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305292 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005293 "Name = [enableFirstScan2GOnly] Value = [%u] ",
5294 pHddCtx->config->enableFirstScan2GOnly);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305295 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005296 "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",
5297 pHddCtx->config->skipDfsChnlInP2pSearch);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305298 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005299 "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",
5300 pHddCtx->config->ignoreDynamicDtimInP2pMode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305301 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005302 "Name = [enableRxSTBC] Value = [%u] ",
5303 pHddCtx->config->enableRxSTBC);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305304 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005305 "Name = [gEnableLpwrImgTransition] Value = [%u] ",
5306 pHddCtx->config->enableLpwrImgTransition);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305307 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005308 "Name = [gEnableSSR] Value = [%u] ",
5309 pHddCtx->config->enableSSR);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305310 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005311 "Name = [gEnableVhtFor24GHzBand] Value = [%u] ",
5312 pHddCtx->config->enableVhtFor24GHzBand);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305313 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005314 "Name = [gEnableIbssHeartBeatOffload] Value = [%u] ",
5315 pHddCtx->config->enableIbssHeartBeatOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305316 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005317 "Name = [gAntennaDiversity] Value = [%u] ",
5318 pHddCtx->config->antennaDiversity);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305319 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005320 "Name = [gGoLinkMonitorPeriod] Value = [%u]",
5321 pHddCtx->config->goLinkMonitorPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305322 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005323 "Name = [gApLinkMonitorPeriod] Value = [%u]",
5324 pHddCtx->config->apLinkMonitorPeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305325 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005326 "Name = [gGoKeepAlivePeriod] Value = [%u]",
5327 pHddCtx->config->goKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305328 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005329 "Name = [gApKeepAlivePeriod]Value = [%u]",
5330 pHddCtx->config->apKeepAlivePeriod);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305331 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005332 "Name = [gAmsduSupportInAMPDU] Value = [%u] ",
5333 pHddCtx->config->isAmsduSupportInAMPDU);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305334 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005335 "Name = [nSelect5GHzMargin] Value = [%u] ",
5336 pHddCtx->config->nSelect5GHzMargin);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305337 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005338 "Name = [gCoalesingInIBSS] Value = [%u] ",
5339 pHddCtx->config->isCoalesingInIBSSAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305340 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005341 "Name = [gIbssATIMWinSize] Value = [%u] ",
5342 pHddCtx->config->ibssATIMWinSize);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305343 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005344 "Name = [gIbssIsPowerSaveAllowed] Value = [%u] ",
5345 pHddCtx->config->isIbssPowerSaveAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305346 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005347 "Name = [gIbssIsPowerCollapseAllowed] Value = [%u] ",
5348 pHddCtx->config->isIbssPowerCollapseAllowed);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305349 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005350 "Name = [gIbssAwakeOnTxRx] Value = [%u] ",
5351 pHddCtx->config->isIbssAwakeOnTxRx);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305352 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005353 "Name = [gIbssInactivityTime] Value = [%u] ",
5354 pHddCtx->config->ibssInactivityCount);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305355 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005356 "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",
5357 pHddCtx->config->ibssTxSpEndInactivityTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305358 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005359 "Name = [gIbssPsWarmupTime] Value = [%u] ",
5360 pHddCtx->config->ibssPsWarmupTime);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305361 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005362 "Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
5363 pHddCtx->config->ibssPs1RxChainInAtimEnable);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305364 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005365 "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",
5366 pHddCtx->config->fDfsPhyerrFilterOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305367 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005368 "Name = [gIgnorePeerErpInfo] Value = [%u] ",
5369 pHddCtx->config->ignore_peer_erp_info);
5370#ifdef IPA_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305371 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005372 "Name = [gIPAConfig] Value = [0x%x] ",
5373 pHddCtx->config->IpaConfig);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305374 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005375 "Name = [gIPADescSize] Value = [%u] ",
5376 pHddCtx->config->IpaDescSize);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305377 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005378 "Name = [IpaHighBandwidthMbpsg] Value = [%u] ",
5379 pHddCtx->config->IpaHighBandwidthMbps);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305380 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005381 "Name = [IpaMediumBandwidthMbps] Value = [%u] ",
5382 pHddCtx->config->IpaMediumBandwidthMbps);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305383 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005384 "Name = [IpaLowBandwidthMbps] Value = [%u] ",
5385 pHddCtx->config->IpaLowBandwidthMbps);
5386#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305387 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005388 "Name = [gEnableOverLapCh] Value = [%u] ",
5389 pHddCtx->config->gEnableOverLapCh);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305390 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005391 "Name = [gMaxOffloadPeers] Value = [%u] ",
5392 pHddCtx->config->apMaxOffloadPeers);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305393 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005394 "Name = [gMaxOffloadReorderBuffs] value = [%u] ",
5395 pHddCtx->config->apMaxOffloadReorderBuffs);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305396 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005397 "Name = [gAllowDFSChannelRoam] Value = [%u] ",
5398 pHddCtx->config->allowDFSChannelRoam);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305399 hddLog(QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005400 "Name = [gMaxConcurrentActiveSessions] Value = [%u] ",
5401 pHddCtx->config->gMaxConcurrentActiveSessions);
5402
5403#ifdef MSM_PLATFORM
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305404 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005405 "Name = [gBusBandwidthHighThreshold] Value = [%u] ",
5406 pHddCtx->config->busBandwidthHighThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305407 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005408 "Name = [gBusBandwidthMediumThreshold] Value = [%u] ",
5409 pHddCtx->config->busBandwidthMediumThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305410 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005411 "Name = [gBusBandwidthLowThreshold] Value = [%u] ",
5412 pHddCtx->config->busBandwidthLowThreshold);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305413 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005414 "Name = [gbusBandwidthComputeInterval] Value = [%u] ",
5415 pHddCtx->config->busBandwidthComputeInterval);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305416 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ravi Joshie2331e82015-07-01 18:18:54 -07005417 "Name = [%s] Value = [%u] ",
5418 CFG_ENABLE_TCP_DELACK,
5419 pHddCtx->config->enable_tcp_delack);
5420 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005421 "Name = [gTcpDelAckThresholdHigh] Value = [%u] ",
5422 pHddCtx->config->tcpDelackThresholdHigh);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305423 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005424 "Name = [gTcpDelAckThresholdLow] Value = [%u] ",
5425 pHddCtx->config->tcpDelackThresholdLow);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305426 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ravi Joshib89e7f72016-09-07 13:43:15 -07005427 "Name = [%s] Value = [%u] ",
5428 CFG_TCP_DELACK_TIMER_COUNT,
5429 pHddCtx->config->tcp_delack_timer_count);
5430 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
5431 "Name = [%s] Value = [%u] ",
5432 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME,
5433 pHddCtx->config->tcp_tx_high_tput_thres);
Mohit Khannae71e2262015-11-10 09:37:24 -08005434
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005435#endif
5436
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305437 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005438 "Name = [gIgnoreCAC] Value = [%u] ",
5439 pHddCtx->config->ignoreCAC);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305440 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005441 "Name = [gSapPreferredChanLocation] Value = [%u] ",
5442 pHddCtx->config->gSapPreferredChanLocation);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305443 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005444 "Name = [gDisableDfsJapanW53] Value = [%u] ",
5445 pHddCtx->config->gDisableDfsJapanW53);
5446#ifdef FEATURE_GREEN_AP
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305447 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005448 "Name = [gEnableGreenAp] Value = [%u] ",
5449 pHddCtx->config->enableGreenAP);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305450 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005451 "Name = [gEenableEGAP] Value = [%u] ",
5452 pHddCtx->config->enable_egap);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305453 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005454 "Name = [gEGAPInactTime] Value = [%u] ",
5455 pHddCtx->config->egap_inact_time);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305456 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005457 "Name = [gEGAPWaitTime] Value = [%u] ",
5458 pHddCtx->config->egap_wait_time);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305459 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Ryan Hsucb118cf2015-11-09 16:03:53 -08005460 "Name = [gEGAPFeatures] Value = [%u] ",
5461 pHddCtx->config->egap_feature_flag);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005462#endif
5463#ifdef WLAN_FEATURE_ROAM_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305464 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005465 "Name = [isRoamOffloadEnabled] Value = [%u]",
5466 pHddCtx->config->isRoamOffloadEnabled);
5467#endif
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305468 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005469 "Name = [gEnableSifsBurst] Value = [%u]",
5470 pHddCtx->config->enableSifsBurst);
5471
5472#ifdef WLAN_FEATURE_LPSS
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305473 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005474 "Name = [gEnableLpassSupport] Value = [%u] ",
Komal Seelamc11bb222016-01-27 18:57:10 +05305475 pHddCtx->config->enable_lpass_support);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005476#endif
5477
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305478 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005479 "Name = [gEnableSelfRecovery] Value = [%u]",
5480 pHddCtx->config->enableSelfRecovery);
5481
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305482 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005483 "Name = [gEnableSapSuspend] Value = [%u]",
5484 pHddCtx->config->enableSapSuspend);
5485
5486#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305487 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005488 "Name = [gExtWoWgotoSuspend] Value = [%u]",
5489 pHddCtx->config->extWowGotoSuspend);
5490
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305491 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005492 "Name = [gExtWowApp1WakeupPinNumber] Value = [%u]",
5493 pHddCtx->config->extWowApp1WakeupPinNumber);
5494
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305495 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005496 "Name = [gExtWowApp2WakeupPinNumber] Value = [%u]",
5497 pHddCtx->config->extWowApp2WakeupPinNumber);
5498
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305499 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005500 "Name = [gExtWoWApp2KAInitPingInterval] Value = [%u]",
5501 pHddCtx->config->extWowApp2KAInitPingInterval);
5502
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305503 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005504 "Name = [gExtWoWApp2KAMinPingInterval] Value = [%u]",
5505 pHddCtx->config->extWowApp2KAMinPingInterval);
5506
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305507 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005508 "Name = [gExtWoWApp2KAMaxPingInterval] Value = [%u]",
5509 pHddCtx->config->extWowApp2KAMaxPingInterval);
5510
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305511 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005512 "Name = [gExtWoWApp2KAIncPingInterval] Value = [%u]",
5513 pHddCtx->config->extWowApp2KAIncPingInterval);
5514
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305515 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005516 "Name = [gExtWoWApp2TcpSrcPort] Value = [%u]",
5517 pHddCtx->config->extWowApp2TcpSrcPort);
5518
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305519 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005520 "Name = [gExtWoWApp2TcpDstPort] Value = [%u]",
5521 pHddCtx->config->extWowApp2TcpDstPort);
5522
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305523 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005524 "Name = [gExtWoWApp2TcpTxTimeout] Value = [%u]",
5525 pHddCtx->config->extWowApp2TcpTxTimeout);
5526
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305527 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005528 "Name = [gExtWoWApp2TcpRxTimeout] Value = [%u]",
5529 pHddCtx->config->extWowApp2TcpRxTimeout);
5530#endif
5531
5532#ifdef DHCP_SERVER_OFFLOAD
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305533 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005534 "Name = [gDHCPServerOffloadEnable] Value = [%u]",
5535 pHddCtx->config->enableDHCPServerOffload);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305536 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005537 "Name = [gDHCPMaxNumClients] Value = [%u]",
5538 pHddCtx->config->dhcpMaxNumClients);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305539 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005540 "Name = [gDHCPServerIP] Value = [%s]",
5541 pHddCtx->config->dhcpServerIP);
5542#endif
5543
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305544 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005545 "Name = [gEnableDumpCollect] Value = [%u]",
5546 pHddCtx->config->is_ramdump_enabled);
5547
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305548 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005549 "Name = [gP2PListenDeferInterval] Value = [%u]",
5550 pHddCtx->config->p2p_listen_defer_interval);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005551 hdd_notice("Name = [is_ps_enabled] value = [%d]",
5552 pHddCtx->config->is_ps_enabled);
5553 hdd_notice("Name = [tso_enable] value = [%d]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005554 pHddCtx->config->tso_enable);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005555 hdd_notice("Name = [LROEnable] value = [%d]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005556 pHddCtx->config->lro_enable);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005557 hdd_notice("Name = [active_mode_offload] value = [%d]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005558 pHddCtx->config->active_mode_offload);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005559 hdd_notice("Name = [gfine_time_meas_cap] value = [%u]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005560 pHddCtx->config->fine_time_meas_cap);
5561#ifdef WLAN_FEATURE_FASTPATH
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305562 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005563 "Name = [fastpath_enable] Value = [%u]",
5564 pHddCtx->config->fastpath_enable);
5565#endif
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005566 hdd_notice("Name = [max_scan_count] value = [%d]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005567 pHddCtx->config->max_scan_count);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005568 hdd_notice("Name = [%s] value = [%d]",
Nirav Shahbd36b062016-07-18 11:12:59 +05305569 CFG_RX_MODE_NAME, pHddCtx->config->rx_mode);
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305570 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005571 "Name = [%s] Value = [%u]",
5572 CFG_CE_CLASSIFY_ENABLE_NAME,
5573 pHddCtx->config->ce_classify_enabled);
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005574 hdd_notice("Name = [%s] value = [%u]",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005575 CFG_DUAL_MAC_FEATURE_DISABLE,
5576 pHddCtx->config->dual_mac_feature_disable);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07005577#ifdef FEATURE_WLAN_SCAN_PNO
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005578 hdd_notice("Name = [%s] Value = [%u]",
5579 CFG_PNO_CHANNEL_PREDICTION_NAME,
5580 pHddCtx->config->pno_channel_prediction);
5581 hdd_notice("Name = [%s] Value = [%u]",
5582 CFG_TOP_K_NUM_OF_CHANNELS_NAME,
5583 pHddCtx->config->top_k_num_of_channels);
5584 hdd_notice("Name = [%s] Value = [%u]",
5585 CFG_STATIONARY_THRESHOLD_NAME,
5586 pHddCtx->config->stationary_thresh);
5587 hdd_notice("Name = [%s] Value = [%u]",
5588 CFG_CHANNEL_PREDICTION_FULL_SCAN_MS_NAME,
5589 pHddCtx->config->channel_prediction_full_scan);
5590 hdd_notice("Name = [%s] Value = [%u]",
5591 CFG_ADAPTIVE_PNOSCAN_DWELL_MODE_NAME,
5592 pHddCtx->config->pnoscan_adaptive_dwell_mode);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07005593#endif
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005594 hdd_notice("Name = [%s] Value = [%d]",
5595 CFG_EARLY_STOP_SCAN_ENABLE,
5596 pHddCtx->config->early_stop_scan_enable);
5597 hdd_notice("Name = [%s] Value = [%d]",
5598 CFG_EARLY_STOP_SCAN_MIN_THRESHOLD,
5599 pHddCtx->config->early_stop_scan_min_threshold);
5600 hdd_notice("Name = [%s] Value = [%d]",
5601 CFG_EARLY_STOP_SCAN_MAX_THRESHOLD,
5602 pHddCtx->config->early_stop_scan_max_threshold);
5603 hdd_notice("Name = [%s] Value = [%d]",
5604 CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME,
5605 pHddCtx->config->first_scan_bucket_threshold);
5606 hdd_notice("Name = [%s] Value = [%u]",
5607 CFG_HT_MPDU_DENSITY_NAME,
5608 pHddCtx->config->ht_mpdu_density);
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -08005609
Ravi Joshi742495d2015-11-09 18:56:53 -08005610
5611#ifdef FEATURE_LFR_SUBNET_DETECTION
Archana Ramachandrane87005c2016-08-23 16:57:30 -07005612 hdd_notice("Name = [%s] Value = [%d]",
5613 CFG_ENABLE_LFR_SUBNET_DETECTION,
5614 pHddCtx->config->enable_lfr_subnet_detection);
Ravi Joshi742495d2015-11-09 18:56:53 -08005615#endif
Gupta, Kapilc68ad462016-02-01 19:17:23 +05305616 hdd_info("Name = [%s] Value = [%u]",
5617 CFG_ROAM_DENSE_TRAFFIC_THRESHOLD,
5618 pHddCtx->config->roam_dense_traffic_thresh);
5619 hdd_info("Name = [%s] Value = [%u]",
5620 CFG_ROAM_DENSE_RSSI_THRE_OFFSET,
5621 pHddCtx->config->roam_dense_rssi_thresh_offset);
5622 hdd_info("Name = [%s] Value = [%u]",
Abhishek Singh165bc602016-03-21 12:43:00 +05305623 CFG_IGNORE_PEER_HT_MODE_NAME,
5624 pHddCtx->config->ignore_peer_ht_opmode);
5625 hdd_info("Name = [%s] Value = [%u]",
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05305626 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME,
5627 pHddCtx->config->enable_sap_vendor_vht);
5628 hdd_info("Name = [%s] Value = [%u]",
Abhishek Singh5ea86532016-04-27 14:10:53 +05305629 CFG_ENABLE_FATAL_EVENT_TRIGGER,
5630 pHddCtx->config->enable_fatal_event);
5631 hdd_info("Name = [%s] Value = [%u]",
Gupta, Kapilc68ad462016-02-01 19:17:23 +05305632 CFG_ROAM_DENSE_MIN_APS,
5633 pHddCtx->config->roam_dense_min_aps);
Agrawal Ashish17bb3902016-05-05 13:29:40 +05305634 hdd_info("Name = [%s] Value = [%u]",
5635 CFG_MIN_REST_TIME_NAME,
5636 pHddCtx->config->min_rest_time_conc);
5637 hdd_info("Name = [%s] Value = [%u]",
5638 CFG_IDLE_TIME_NAME,
5639 pHddCtx->config->idle_time_conc);
Mukul Sharmaf7d62e12016-09-03 15:16:22 +05305640 hdd_info("Name = [%s] Value = [%d]",
5641 CFG_BUG_ON_REINIT_FAILURE_NAME,
5642 pHddCtx->config->bug_on_reinit_failure);
Arun Khandavallifae92942016-08-01 13:31:08 +05305643 hdd_info("Name = [%s] Value = [%u]",
5644 CFG_INTERFACE_CHANGE_WAIT_NAME,
5645 pHddCtx->config->iface_change_wait_time);
Agrawal Ashish17bb3902016-05-05 13:29:40 +05305646
Abhishek Singh10ecf582016-05-04 17:48:59 +05305647 hdd_info("Name = [%s] Value = [%u]",
5648 CFG_ENABLE_EDCA_INI_NAME,
5649 pHddCtx->config->enable_edca_params);
5650
5651 hdd_info("Name = [%s] Value = [%u]",
5652 CFG_EDCA_VO_CWMIN_VALUE_NAME,
5653 pHddCtx->config->edca_vo_cwmin);
5654 hdd_info("Name = [%s] Value = [%u]",
5655 CFG_EDCA_VI_CWMIN_VALUE_NAME,
5656 pHddCtx->config->edca_vi_cwmin);
5657 hdd_info("Name = [%s] Value = [%u]",
5658 CFG_EDCA_BK_CWMIN_VALUE_NAME,
5659 pHddCtx->config->edca_bk_cwmin);
5660 hdd_info("Name = [%s] Value = [%u]",
5661 CFG_EDCA_BE_CWMIN_VALUE_NAME,
5662 pHddCtx->config->edca_be_cwmin);
5663
5664 hdd_info("Name = [%s] Value = [%u]",
5665 CFG_EDCA_VO_CWMAX_VALUE_NAME,
5666 pHddCtx->config->edca_vo_cwmax);
5667 hdd_info("Name = [%s] Value = [%u]",
5668 CFG_EDCA_VI_CWMAX_VALUE_NAME,
5669 pHddCtx->config->edca_vi_cwmax);
5670 hdd_info("Name = [%s] Value = [%u]",
5671 CFG_EDCA_BK_CWMAX_VALUE_NAME,
5672 pHddCtx->config->edca_bk_cwmax);
5673 hdd_info("Name = [%s] Value = [%u]",
5674 CFG_EDCA_BE_CWMAX_VALUE_NAME,
5675 pHddCtx->config->edca_be_cwmax);
5676
5677 hdd_info("Name = [%s] Value = [%u]",
5678 CFG_EDCA_VO_AIFS_VALUE_NAME,
5679 pHddCtx->config->edca_vo_aifs);
5680 hdd_info("Name = [%s] Value = [%u]",
5681 CFG_EDCA_VI_AIFS_VALUE_NAME,
5682 pHddCtx->config->edca_vi_aifs);
5683 hdd_info("Name = [%s] Value = [%u]",
5684 CFG_EDCA_BK_AIFS_VALUE_NAME,
5685 pHddCtx->config->edca_bk_aifs);
5686 hdd_info("Name = [%s] Value = [%u]",
5687 CFG_EDCA_BE_AIFS_VALUE_NAME,
5688 pHddCtx->config->edca_be_aifs);
Nirav Shahcc1f1ae2016-04-26 11:41:29 +05305689 hdd_info("Name = [%s] Value = [%u]",
5690 CFG_ENABLE_DP_TRACE,
5691 pHddCtx->config->enable_dp_trace);
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05305692 hdd_info("Name = [%s] Value = [%u]",
5693 CFG_ADAPTIVE_SCAN_DWELL_MODE_NAME,
5694 pHddCtx->config->scan_adaptive_dwell_mode);
5695 hdd_info("Name = [%s] Value = [%u]",
5696 CFG_ADAPTIVE_ROAMSCAN_DWELL_MODE_NAME,
5697 pHddCtx->config->roamscan_adaptive_dwell_mode);
5698 hdd_info("Name = [%s] Value = [%u]",
5699 CFG_ADAPTIVE_EXTSCAN_DWELL_MODE_NAME,
5700 pHddCtx->config->extscan_adaptive_dwell_mode);
5701 hdd_info("Name = [%s] Value = [%u]",
5702 CFG_ADAPTIVE_DWELL_MODE_ENABLED_NAME,
5703 pHddCtx->config->adaptive_dwell_mode_enabled);
5704 hdd_info("Name = [%s] Value = [%u]",
5705 CFG_GLOBAL_ADAPTIVE_DWELL_MODE_NAME,
5706 pHddCtx->config->global_adapt_dwelltime_mode);
5707 hdd_info("Name = [%s] Value = [%u]",
5708 CFG_ADAPT_DWELL_LPF_WEIGHT_NAME,
5709 pHddCtx->config->adapt_dwell_lpf_weight);
5710 hdd_info("Name = [%s] Value = [%u]",
5711 CFG_ADAPT_DWELL_PASMON_INTVAL_NAME,
5712 pHddCtx->config->adapt_dwell_passive_mon_intval);
5713 hdd_info("Name = [%s] Value = [%u]",
5714 CFG_ADAPT_DWELL_WIFI_THRESH_NAME,
5715 pHddCtx->config->adapt_dwell_wifi_act_threshold);
Naveen Rawat64e477e2016-05-20 10:34:56 -07005716 hdd_info("Name = [%s] value = [%u]",
5717 CFG_SUB_20_CHANNEL_WIDTH_NAME,
5718 pHddCtx->config->enable_sub_20_channel_width);
Rajeev Kumar Sirasanagandlaaf474742016-09-06 17:54:50 +05305719 hdd_info("Name = [%s] Value = [%u]",
5720 CFG_TGT_GTX_USR_CFG_NAME,
5721 pHddCtx->config->tgt_gtx_usr_cfg);
Agrawal, Ashish4e5fa1c2016-09-21 19:03:43 +05305722 hdd_info("Name = [%s] Value = [%u]",
5723 CFG_SAP_MAX_INACTIVITY_OVERRIDE_NAME,
5724 pHddCtx->config->sap_max_inactivity_override);
Deepak Dhamdhere3385d752016-05-25 20:36:47 -07005725 hdd_ndp_print_ini_config(pHddCtx);
Krishna Kumaar Natarajancc077c22016-08-02 10:41:53 -07005726 hdd_info("Name = [%s] Value = [%s]",
5727 CFG_RM_CAPABILITY_NAME,
5728 pHddCtx->config->rm_capability);
Rajeev Kumardd3bc602016-08-16 14:21:05 -07005729 hdd_info("Name = [%s] Value = [%d]",
Rajeev Kumar Sirasanagandlab79b5462016-09-06 18:33:17 +05305730 CFG_SAP_FORCE_11N_FOR_11AC_NAME,
5731 pHddCtx->config->sap_force_11n_for_11ac);
5732 hdd_info("Name = [%s] Value = [%d]",
Rajeev Kumardd3bc602016-08-16 14:21:05 -07005733 CFG_BPF_PACKET_FILTER_OFFLOAD,
5734 pHddCtx->config->bpf_packet_filter_enable);
Ravi Joshibb8d4512016-08-22 10:14:52 -07005735 hdd_info("Name = [%s] Value = [%d]",
5736 CFG_FILTER_MULTICAST_REPLAY_NAME,
5737 pHddCtx->config->multicast_replay_filter);
Agrawal Ashishb2d1a452016-05-05 12:23:58 +05305738 hdd_info("Name = [%s] Value = [%u]",
5739 CFG_ENABLE_GO_CTS2SELF_FOR_STA,
5740 pHddCtx->config->enable_go_cts2self_for_sta);
Sandeep Puligillaafa52892016-10-26 19:03:16 -07005741 hdd_info("Name = [%s] Value = [%u]",
5742 CFG_CRASH_FW_TIMEOUT_NAME,
5743 pHddCtx->config->fw_timeout_crash);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005744}
5745
5746
5747/**
5748 * hdd_update_mac_config() - update MAC address from cfg file
5749 * @pHddCtx: the pointer to hdd context
5750 *
5751 * It overwrites the MAC address if config file exist.
5752 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305753 * Return: QDF_STATUS_SUCCESS if the MAC address is found from cfg file
5754 * and overwritten, otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005755 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305756QDF_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005757{
5758 int status, i = 0;
5759 const struct firmware *fw = NULL;
5760 char *line, *buffer = NULL;
Yuanyuan Liu6043d3c2016-07-25 11:40:38 -07005761 char *temp = NULL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005762 char *name, *value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05305763 tCfgIniEntry macTable[QDF_MAX_CONCURRENCY_PERSONA];
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005764 tSirMacAddr customMacAddr;
5765
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305766 QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005767
5768 memset(macTable, 0, sizeof(macTable));
5769 status = request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev);
5770
5771 if (status) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305772 hddLog(QDF_TRACE_LEVEL_WARN, "%s: request_firmware failed %d",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005773 __func__, status);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305774 qdf_status = QDF_STATUS_E_FAILURE;
5775 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005776 }
5777 if (!fw || !fw->data || !fw->size) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305778 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: invalid firmware", __func__);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305779 qdf_status = QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005780 goto config_exit;
5781 }
5782
Yuanyuan Liu6043d3c2016-07-25 11:40:38 -07005783 hdd_debug("wlan_mac.bin size %zu", fw->size);
5784
5785 temp = qdf_mem_malloc(fw->size);
5786
5787 if (temp == NULL) {
5788 hdd_err("fail to alloc memory");
5789 qdf_status = QDF_STATUS_E_NOMEM;
5790 goto config_exit;
5791 }
5792 buffer = temp;
5793 qdf_mem_copy(buffer, fw->data, fw->size);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005794
5795 /* data format:
5796 * Intf0MacAddress=00AA00BB00CC
5797 * Intf1MacAddress=00AA00BB00CD
5798 * END
5799 */
5800 while (buffer != NULL) {
5801 line = get_next_line(buffer);
5802 buffer = i_trim(buffer);
5803
5804 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5805 buffer = line;
5806 continue;
5807 }
5808 if (strncmp(buffer, "END", 3) == 0)
5809 break;
5810
5811 name = buffer;
5812 buffer = strnchr(buffer, strlen(buffer), '=');
5813 if (buffer) {
5814 *buffer++ = '\0';
5815 i_trim(name);
5816 if (strlen(name) != 0) {
5817 buffer = i_trim(buffer);
5818 if (strlen(buffer) == 12) {
5819 value = buffer;
5820 macTable[i].name = name;
5821 macTable[i++].value = value;
Anurag Chouhan6d760662016-02-20 16:05:43 +05305822 if (i >= QDF_MAX_CONCURRENCY_PERSONA)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005823 break;
5824 }
5825 }
5826 }
5827 buffer = line;
5828 }
Anurag Chouhan6d760662016-02-20 16:05:43 +05305829 if (i <= QDF_MAX_CONCURRENCY_PERSONA) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305830 hddLog(QDF_TRACE_LEVEL_INFO, "%s: %d Mac addresses provided",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005831 __func__, i);
5832 } else {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305833 hddLog(QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005834 "%s: invalid number of Mac address provided, nMac = %d",
5835 __func__, i);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305836 qdf_status = QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005837 goto config_exit;
5838 }
5839
5840 update_mac_from_string(pHddCtx, &macTable[0], i);
5841
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305842 qdf_mem_copy(&customMacAddr,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005843 &pHddCtx->config->intfMacAddr[0].bytes[0],
5844 sizeof(tSirMacAddr));
5845 sme_set_custom_mac_addr(customMacAddr);
5846
5847config_exit:
Yuanyuan Liu6043d3c2016-07-25 11:40:38 -07005848 qdf_mem_free(temp);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005849 release_firmware(fw);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305850 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005851}
5852
5853/**
Manjunathappa Prakash59f861d2016-04-21 10:33:31 -07005854 * hdd_disable_runtime_pm() - Override to disable runtime_pm.
5855 * @cfg_ini: Handle to struct hdd_config
5856 *
5857 * Return: None
5858 */
5859#ifdef FEATURE_RUNTIME_PM
5860static void hdd_disable_runtime_pm(struct hdd_config *cfg_ini)
5861{
5862 cfg_ini->runtime_pm = 0;
5863}
5864#else
5865static void hdd_disable_runtime_pm(struct hdd_config *cfg_ini)
5866{
5867}
5868#endif
5869
5870/**
5871 * hdd_disable_auto_shutdown() - Override to disable auto_shutdown.
5872 * @cfg_ini: Handle to struct hdd_config
5873 *
5874 * Return: None
5875 */
5876#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
5877static void hdd_disable_auto_shutdown(struct hdd_config *cfg_ini)
5878{
5879 cfg_ini->WlanAutoShutdown = 0;
5880}
5881#else
5882static void hdd_disable_auto_shutdown(struct hdd_config *cfg_ini)
5883{
5884}
5885#endif
5886
5887/**
5888 * hdd_override_all_ps() - overrides to disables all the powersave features.
5889 * @hdd_ctx: Pointer to HDD context.
5890 * Overrides below powersave ini configurations.
5891 * gEnableImps=0
5892 * gEnableBmps=0
5893 * gRuntimePM=0
5894 * gWlanAutoShutdown = 0
5895 * gEnableSuspend=0
5896 * gEnablePowerSaveOffload=0
5897 * gEnableWoW=0
5898 *
5899 * Return: None
5900 */
5901static void hdd_override_all_ps(hdd_context_t *hdd_ctx)
5902{
5903 struct hdd_config *cfg_ini = hdd_ctx->config;
5904
5905 cfg_ini->fIsImpsEnabled = 0;
5906 cfg_ini->is_ps_enabled = 0;
5907 hdd_disable_runtime_pm(cfg_ini);
5908 hdd_disable_auto_shutdown(cfg_ini);
5909 cfg_ini->enablePowersaveOffload = 0;
5910 cfg_ini->wowEnable = 0;
5911}
5912
5913/**
Nirav Shahbd36b062016-07-18 11:12:59 +05305914 * hdd_set_rx_mode_value() - set rx_mode values
5915 * @hdd_ctx: hdd context
5916 *
5917 * Return: none
5918 */
Jeff Johnsonf1bf3a62016-10-05 15:48:13 -07005919static void hdd_set_rx_mode_value(hdd_context_t *hdd_ctx)
Nirav Shahbd36b062016-07-18 11:12:59 +05305920{
5921 if (hdd_ctx->config->rx_mode & CFG_ENABLE_RX_THREAD &&
5922 hdd_ctx->config->rx_mode & CFG_ENABLE_RPS) {
5923 hdd_err("rx_mode wrong configuration. Make it default");
5924 hdd_ctx->config->rx_mode = CFG_RX_MODE_DEFAULT;
5925 }
5926
5927 if (hdd_ctx->config->rx_mode & CFG_ENABLE_RX_THREAD)
5928 hdd_ctx->enableRxThread = true;
5929
5930 if (hdd_ctx->config->rx_mode & CFG_ENABLE_RPS)
5931 hdd_ctx->rps = true;
5932
5933 if (hdd_ctx->config->rx_mode & CFG_ENABLE_NAPI)
5934 hdd_ctx->napi_enable = true;
5935}
5936
5937/**
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005938 * hdd_parse_config_ini() - parse the ini configuration file
5939 * @pHddCtx: the pointer to hdd context
5940 *
5941 * This function reads the qcom_cfg.ini file and
5942 * parses each 'Name=Value' pair in the ini file
5943 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305944 * Return: QDF_STATUS_SUCCESS if the qcom_cfg.ini is correctly read,
5945 * otherwise QDF_STATUS_E_INVAL
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005946 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305947QDF_STATUS hdd_parse_config_ini(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005948{
5949 int status, i = 0;
5950 /** Pointer for firmware image data */
5951 const struct firmware *fw = NULL;
5952 char *buffer, *line, *pTemp = NULL;
5953 size_t size;
5954 char *name, *value;
5955 /* cfgIniTable is static to avoid excess stack usage */
5956 static tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305957 QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005958
5959 memset(cfgIniTable, 0, sizeof(cfgIniTable));
5960
5961 status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
5962
5963 if (status) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305964 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005965 __func__, status);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305966 qdf_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005967 goto config_exit;
5968 }
5969 if (!fw || !fw->data || !fw->size) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05305970 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: %s download failed",
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005971 __func__, WLAN_INI_FILE);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305972 qdf_status = QDF_STATUS_E_FAILURE;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005973 goto config_exit;
5974 }
5975
5976 hddLog(LOG1, "%s: qcom_cfg.ini Size %zu", __func__, fw->size);
5977
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305978 buffer = (char *)qdf_mem_malloc(fw->size);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005979
5980 if (NULL == buffer) {
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305981 hddLog(QDF_TRACE_LEVEL_FATAL, FL("qdf_mem_malloc failure"));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005982 release_firmware(fw);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05305983 return QDF_STATUS_E_NOMEM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005984 }
5985 pTemp = buffer;
5986
Anurag Chouhan600c3a02016-03-01 10:33:54 +05305987 qdf_mem_copy((void *)buffer, (void *)fw->data, fw->size);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08005988 size = fw->size;
5989
5990 while (buffer != NULL) {
5991 line = get_next_line(buffer);
5992 buffer = i_trim(buffer);
5993
5994 hddLog(LOG1, "%s: item", buffer);
5995
5996 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5997 buffer = line;
5998 continue;
5999 } else if (strncmp(buffer, "END", 3) == 0) {
6000 break;
6001 } else {
6002 name = buffer;
6003 while (*buffer != '=' && *buffer != '\0')
6004 buffer++;
6005 if (*buffer != '\0') {
6006 *buffer++ = '\0';
6007 i_trim(name);
6008 if (strlen(name) != 0) {
6009 buffer = i_trim(buffer);
6010 if (strlen(buffer) > 0) {
6011 value = buffer;
6012 while (!i_isspace(*buffer)
6013 && *buffer != '\0')
6014 buffer++;
6015 *buffer = '\0';
6016 cfgIniTable[i].name = name;
6017 cfgIniTable[i++].value = value;
6018 if (i >= MAX_CFG_INI_ITEMS) {
6019 hddLog(LOGE,
6020 "%s: Number of items in %s > %d",
6021 __func__,
6022 WLAN_INI_FILE,
6023 MAX_CFG_INI_ITEMS);
6024 break;
6025 }
6026 }
6027 }
6028 }
6029 }
6030 buffer = line;
6031 }
6032
6033 /* Loop through the registry table and apply all these configs */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306034 qdf_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
Nirav Shahbd36b062016-07-18 11:12:59 +05306035 hdd_set_rx_mode_value(pHddCtx);
Manjunathappa Prakash59f861d2016-04-21 10:33:31 -07006036 if (QDF_GLOBAL_MONITOR_MODE == cds_get_conparam())
6037 hdd_override_all_ps(pHddCtx);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006038
6039config_exit:
6040 release_firmware(fw);
Anurag Chouhan600c3a02016-03-01 10:33:54 +05306041 qdf_mem_free(pTemp);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306042 return qdf_status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006043}
6044
6045/**
6046 * hdd_cfg_xlate_to_csr_phy_mode() - convert PHY mode
6047 * @dot11Mode: the mode to convert
6048 *
6049 * Convert the configuration PHY mode to CSR PHY mode
6050 *
6051 * Return: the CSR phy mode value
6052 */
6053eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(eHddDot11Mode dot11Mode)
6054{
6055 switch (dot11Mode) {
6056 case (eHDD_DOT11_MODE_abg):
6057 return eCSR_DOT11_MODE_abg;
6058 case (eHDD_DOT11_MODE_11b):
6059 return eCSR_DOT11_MODE_11b;
6060 case (eHDD_DOT11_MODE_11g):
6061 return eCSR_DOT11_MODE_11g;
6062 default:
6063 case (eHDD_DOT11_MODE_11n):
6064 return eCSR_DOT11_MODE_11n;
6065 case (eHDD_DOT11_MODE_11g_ONLY):
6066 return eCSR_DOT11_MODE_11g_ONLY;
6067 case (eHDD_DOT11_MODE_11n_ONLY):
6068 return eCSR_DOT11_MODE_11n_ONLY;
6069 case (eHDD_DOT11_MODE_11b_ONLY):
6070 return eCSR_DOT11_MODE_11b_ONLY;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006071 case (eHDD_DOT11_MODE_11ac_ONLY):
6072 return eCSR_DOT11_MODE_11ac_ONLY;
6073 case (eHDD_DOT11_MODE_11ac):
6074 return eCSR_DOT11_MODE_11ac;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006075 case (eHDD_DOT11_MODE_AUTO):
6076 return eCSR_DOT11_MODE_AUTO;
6077 case (eHDD_DOT11_MODE_11a):
6078 return eCSR_DOT11_MODE_11a;
6079 }
6080
6081}
6082
6083/**
6084 * hdd_set_idle_ps_config() - set idle power save configuration
6085 * @pHddCtx: the pointer to hdd context
6086 * @val: the value to configure
6087 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306088 * Return: QDF_STATUS_SUCCESS if command set correctly,
6089 * otherwise the QDF_STATUS return from SME layer
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006090 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306091QDF_STATUS hdd_set_idle_ps_config(hdd_context_t *pHddCtx, uint32_t val)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006092{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306093 QDF_STATUS status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006094
6095 hddLog(LOG1, "hdd_set_idle_ps_config: Enter Val %d", val);
6096
Kiran Kumar Lokerefc2803d2016-01-11 19:31:38 -08006097 status = sme_set_idle_powersave_config(pHddCtx->pcds_context,
6098 pHddCtx->hHal, val);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306099 if (QDF_STATUS_SUCCESS != status)
Kiran Kumar Lokerefc2803d2016-01-11 19:31:38 -08006100 hddLog(LOGE, "Fail to Set Idle PS Config val %d", val);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006101 return status;
6102}
6103
6104/**
6105 * hdd_set_fine_time_meas_cap() - set fine timing measurement capability
6106 * @hdd_ctx: HDD context
6107 * @sme_config: pointer to SME config
6108 *
6109 * This function is used to pass fine timing measurement capability coming
6110 * from INI to SME. This function make sure that configure INI is supported
6111 * by the device. Use bit mask to mask out the unsupported capabilities.
6112 *
6113 * Return: None
6114 */
6115static void hdd_set_fine_time_meas_cap(hdd_context_t *hdd_ctx,
6116 tSmeConfigParams *sme_config)
6117{
6118 struct hdd_config *config = hdd_ctx->config;
6119 uint32_t capability = config->fine_time_meas_cap;
6120
6121 /* Make sure only supported capabilities are enabled in INI */
6122 capability &= CFG_FINE_TIME_MEAS_CAPABILITY_MAX;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006123 sme_config->csrConfig.fine_time_meas_cap = capability;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006124
6125 hddLog(LOG1, FL("fine time meas capability - INI: %04x Enabled: %04x"),
Krunal Soni1878d3a2016-01-14 13:00:44 -08006126 config->fine_time_meas_cap,
6127 sme_config->csrConfig.fine_time_meas_cap);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006128
6129 return;
6130}
6131
6132/**
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006133 * hdd_convert_string_to_u8_array() - used to convert string into u8 array
6134 * @str: String to be converted
6135 * @hex_array: Array where converted value is stored
6136 * @len: Length of the populated array
6137 * @array_max_len: Maximum length of the array
6138 * @to_hex: true, if conversion required for hex string
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006139 *
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006140 * This API is called to convert string (each byte separated by
6141 * a comma) into an u8 array
6142 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306143 * Return: QDF_STATUS
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006144 */
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006145
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306146static QDF_STATUS hdd_convert_string_to_array(char *str, uint8_t *array,
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006147 uint8_t *len, uint8_t array_max_len, bool to_hex)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006148{
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006149 char *format, *s = str;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006150
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006151 if (str == NULL || array == NULL || len == NULL)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306152 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006153
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006154 format = (to_hex) ? "%02x" : "%d";
6155
6156 *len = 0;
6157 while ((s != NULL) && (*len < array_max_len)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006158 int val;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006159 /* Increment length only if sscanf successfully extracted
6160 * one element. Any other return value means error.
6161 * Ignore it. */
6162 if (sscanf(s, format, &val) == 1) {
6163 array[*len] = (uint8_t) val;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006164 *len += 1;
6165 }
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006166
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006167 s = strpbrk(s, ",");
6168 if (s)
6169 s++;
6170 }
6171
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306172 return QDF_STATUS_SUCCESS;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006173}
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006174
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006175/**
6176 * hdd_hex_string_to_u8_array() - used to convert hex string into u8 array
6177 * @str: Hexadecimal string
6178 * @hex_array: Array where converted value is stored
6179 * @len: Length of the populated array
6180 * @array_max_len: Maximum length of the array
6181 *
6182 * This API is called to convert hexadecimal string (each byte separated by
6183 * a comma) into an u8 array
6184 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306185 * Return: QDF_STATUS
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006186 */
Jeff Johnsonf1bf3a62016-10-05 15:48:13 -07006187static QDF_STATUS hdd_hex_string_to_u8_array(char *str, uint8_t *hex_array,
6188 uint8_t *len,
6189 uint8_t array_max_len)
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006190{
6191 return hdd_convert_string_to_array(str, hex_array, len,
6192 array_max_len, true);
6193}
6194
6195/**
6196 * hdd_string_to_u8_array() - used to convert decimal string into u8 array
6197 * @str: Decimal string
6198 * @hex_array: Array where converted value is stored
6199 * @len: Length of the populated array
6200 * @array_max_len: Maximum length of the array
6201 *
6202 * This API is called to convert decimal string (each byte separated by
6203 * a comma) into an u8 array
6204 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306205 * Return: QDF_STATUS
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006206 */
6207
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306208QDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *array,
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006209 uint8_t *len, uint8_t array_max_len)
6210{
6211 return hdd_convert_string_to_array(str, array, len,
6212 array_max_len, false);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006213}
6214
6215/**
Nirav Shahbd36b062016-07-18 11:12:59 +05306216 * hdd_hex_string_to_u16_array() - convert a hex string to a uint16 array
6217 * @str: input string
6218 * @int_array: pointer to input array of type uint16
6219 * @len: pointer to number of elements which the function adds to the array
6220 * @int_array_max_len: maximum number of elements in input uint16 array
6221 *
6222 * This function is used to convert a space separated hex string to an array of
6223 * uint16_t. For example, an input string str = "a b c d" would be converted to
6224 * a unint16 array, int_array = {0xa, 0xb, 0xc, 0xd}, *len = 4.
6225 * This assumes that input value int_array_max_len >= 4.
6226 *
6227 * Return: QDF_STATUS_SUCCESS - if the conversion is successful
6228 * non zero value - if the conversion is a failure
6229 */
6230QDF_STATUS hdd_hex_string_to_u16_array(char *str,
6231 uint16_t *int_array, uint8_t *len, uint8_t int_array_max_len)
6232{
6233 char *s = str;
6234 uint32_t val = 0;
6235
6236 if (str == NULL || int_array == NULL || len == NULL)
6237 return QDF_STATUS_E_INVAL;
6238
6239 hdd_err("str %p intArray %p intArrayMaxLen %d",
6240 s, int_array, int_array_max_len);
6241
6242 *len = 0;
6243
6244 while ((s != NULL) && (*len < int_array_max_len)) {
6245 /*
6246 * Increment length only if sscanf successfully extracted one
6247 * element. Any other return value means error. Ignore it.
6248 */
6249 if (sscanf(s, "%x", &val) == 1) {
6250 int_array[*len] = (uint16_t) val;
6251 hdd_debug("s %p val %x intArray[%d]=0x%x",
6252 s, val, *len, int_array[*len]);
6253 *len += 1;
6254 }
6255 s = strpbrk(s, " ");
6256 if (s)
6257 s++;
6258 }
6259 return QDF_STATUS_SUCCESS;
6260}
6261
Nirav Shahbd36b062016-07-18 11:12:59 +05306262/**
Krunal Soni52198e42016-09-26 13:53:09 -07006263 * hdd_update_ht_cap_in_cfg() - to update HT cap in global CFG
Krunal Sonidf0f8742016-09-26 14:56:31 -07006264 * @hdd_ctx: pointer to hdd context
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006265 *
Krunal Soni52198e42016-09-26 13:53:09 -07006266 * This API will update the HT config in CFG after taking intersection
6267 * of INI and firmware capabilities provided reading CFG
6268 *
6269 * Return: true or false
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006270 */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006271static bool hdd_update_ht_cap_in_cfg(hdd_context_t *hdd_ctx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006272{
Krunal Soni5c390162016-09-26 15:07:05 -07006273 uint32_t val32;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006274 uint16_t val16;
Krunal Soni5c390162016-09-26 15:07:05 -07006275 bool status = true;
Krunal Sonidf0f8742016-09-26 14:56:31 -07006276 tSirMacHTCapabilityInfo *ht_cap_info;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006277
Krunal Sonidf0f8742016-09-26 14:56:31 -07006278 if (sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
Krunal Soni5c390162016-09-26 15:07:05 -07006279 &val32) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306280 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006281 status = false;
Krunal Soni5c390162016-09-26 15:07:05 -07006282 hdd_err("Could not get WNI_CFG_HT_CAP_INFO");
Sandeep Puligilla607f34a2016-05-25 14:37:47 -07006283 }
Krunal Soni5c390162016-09-26 15:07:05 -07006284 val16 = (uint16_t) val32;
Krunal Sonidf0f8742016-09-26 14:56:31 -07006285 ht_cap_info = (tSirMacHTCapabilityInfo *) &val16;
Krunal Soni5c390162016-09-26 15:07:05 -07006286 ht_cap_info->advCodingCap &= hdd_ctx->config->enableRxLDPC;
6287 ht_cap_info->rxSTBC = QDF_MIN(ht_cap_info->rxSTBC,
6288 hdd_ctx->config->enableRxSTBC);
6289 ht_cap_info->txSTBC &= hdd_ctx->config->enableTxSTBC;
6290 ht_cap_info->shortGI20MHz &= hdd_ctx->config->ShortGI20MhzEnable;
6291 ht_cap_info->shortGI40MHz &= hdd_ctx->config->ShortGI40MhzEnable;
6292 val32 = val16;
6293 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO, val32) ==
6294 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006295 status = false;
Krunal Soni5c390162016-09-26 15:07:05 -07006296 hdd_err("Could not set WNI_CFG_HT_CAP_INFO");
Krunal Soni52198e42016-09-26 13:53:09 -07006297 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006298 return status;
Krunal Soni52198e42016-09-26 13:53:09 -07006299}
6300
6301/**
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006302 * hdd_update_vht_cap_in_cfg() - to update VHT cap in global CFG
Krunal Sonidf0f8742016-09-26 14:56:31 -07006303 * @hdd_ctx: pointer to hdd context
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006304 *
6305 * This API will update the VHT config in CFG after taking intersection
6306 * of INI and firmware capabilities provided reading CFG
6307 *
6308 * Return: true or false
6309 */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006310static bool hdd_update_vht_cap_in_cfg(hdd_context_t *hdd_ctx)
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006311{
Krunal Sonidf0f8742016-09-26 14:56:31 -07006312 bool status = true;
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006313 uint32_t val;
Krunal Sonidf0f8742016-09-26 14:56:31 -07006314 struct hdd_config *config = hdd_ctx->config;
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006315
Krunal Sonidf0f8742016-09-26 14:56:31 -07006316 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_ENABLE_TXBF_20MHZ,
6317 config->enableTxBFin20MHz) ==
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006318 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006319 status = false;
6320 hdd_err("Couldn't set value for WNI_CFG_VHT_ENABLE_TXBF_20MHZ");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006321 }
6322 /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map
6323 * in the cfg.dat. Valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9)
6324 * we update only the least significant 2 bits in the
6325 * corresponding fields.
6326 */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006327 if ((config->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
6328 (config->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
6329 (config->dot11Mode == eHDD_DOT11_MODE_11ac)) {
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006330 /* Currently shortGI40Mhz is used for shortGI80Mhz */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006331 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_SHORT_GI_80MHZ,
6332 config->ShortGI40MhzEnable) == QDF_STATUS_E_FAILURE) {
6333 status = false;
6334 hdd_err("Couldn't pass WNI_VHT_SHORT_GI_80MHZ to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006335 }
6336 /* Hardware is capable of doing
6337 * 128K AMPDU in 11AC mode */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006338 if (sme_cfg_set_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006339 WNI_CFG_VHT_AMPDU_LEN_EXPONENT,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006340 config->fVhtAmpduLenExponent) ==
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006341 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006342 status = false;
6343 hdd_err("Couldn't pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006344 }
6345 /* Change MU Bformee only when TxBF is enabled */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006346 if (config->enableTxBF) {
6347 sme_cfg_get_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006348 WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &val);
6349
Krunal Sonidf0f8742016-09-26 14:56:31 -07006350 if (val != config->enableMuBformee) {
6351 if (sme_cfg_set_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006352 WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006353 config->enableMuBformee
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006354 ) == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006355 status = false;
6356 hdd_err("Couldn't pass on WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006357 }
6358 }
6359 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006360 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_MAX_MPDU_LENGTH,
6361 config->vhtMpduLen) == QDF_STATUS_E_FAILURE) {
6362 status = false;
6363 hdd_err("Couldn't pass on WNI_CFG_VHT_MAX_MPDU_LENGTH to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006364 }
6365
Krunal Sonidf0f8742016-09-26 14:56:31 -07006366 if (config->enable2x2 && config->enable_su_tx_bformer) {
6367 if (sme_cfg_set_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006368 WNI_CFG_VHT_SU_BEAMFORMER_CAP,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006369 config->enable_su_tx_bformer) ==
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006370 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006371 status = false;
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006372 hdd_err("set SU_BEAMFORMER_CAP to CFG failed");
6373 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006374 if (sme_cfg_set_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006375 WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
6376 NUM_OF_SOUNDING_DIMENSIONS) ==
6377 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006378 status = false;
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006379 hdd_err("failed to set NUM_OF_SOUNDING_DIM");
6380 }
6381 }
6382 }
6383
Krunal Sonidf0f8742016-09-26 14:56:31 -07006384 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_RXSTBC,
6385 config->enableRxSTBC) == QDF_STATUS_E_FAILURE) {
6386 status = false;
6387 hdd_err("Couldn't pass on WNI_CFG_VHT_RXSTBC to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006388 }
6389
Krunal Sonidf0f8742016-09-26 14:56:31 -07006390 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_TXSTBC,
6391 config->enableTxSTBC) == QDF_STATUS_E_FAILURE) {
6392 status = false;
6393 hdd_err("Couldn't pass on WNI_CFG_VHT_TXSTBC to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006394 }
6395
Krunal Soni5c390162016-09-26 15:07:05 -07006396 if (sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP, &val) ==
6397 QDF_STATUS_E_FAILURE) {
6398 status &= false;
6399 hdd_err("Could not get WNI_CFG_VHT_LDPC_CODING_CAP");
6400 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006401 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP,
Krunal Soni5c390162016-09-26 15:07:05 -07006402 config->enableRxLDPC & val) == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006403 status = false;
6404 hdd_err("Couldn't pass on WNI_CFG_VHT_LDPC_CODING_CAP to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006405 }
6406
Krunal Sonidf0f8742016-09-26 14:56:31 -07006407 if (sme_cfg_set_int(hdd_ctx->hHal,
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006408 WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006409 config->txBFCsnValue) ==
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006410 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006411 status = false;
6412 hdd_err("Couldn't pass on WNI_CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED to CFG");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006413 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006414 return status;
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006415
6416}
6417
6418/**
Krunal Sonidf0f8742016-09-26 14:56:31 -07006419 * hdd_update_config_cfg() - API to update INI setting based on hw/fw caps
6420 * @hdd_ctx: pointer to hdd_ctx
Krunal Soni52198e42016-09-26 13:53:09 -07006421 *
Krunal Sonidf0f8742016-09-26 14:56:31 -07006422 * This API reads the cfg file which is updated with hardware/firmware
6423 * capabilities and intersect it with INI setting provided by user. After
6424 * taking intersection it adjust cfg it self. For example, if user has enabled
6425 * RX LDPC through INI but hardware/firmware doesn't support it then disable
6426 * it in CFG file here.
6427 *
6428 * Return: true or false based on outcome.
Krunal Soni52198e42016-09-26 13:53:09 -07006429 */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006430bool hdd_update_config_cfg(hdd_context_t *hdd_ctx)
Krunal Soni52198e42016-09-26 13:53:09 -07006431{
Krunal Sonidf0f8742016-09-26 14:56:31 -07006432 bool status = true;
Krunal Soni52198e42016-09-26 13:53:09 -07006433 uint32_t val;
Krunal Sonidf0f8742016-09-26 14:56:31 -07006434 struct hdd_config *config = hdd_ctx->config;
Krunal Soni52198e42016-09-26 13:53:09 -07006435
6436 /*
6437 * During the initialization both 2G and 5G capabilities should be same.
6438 * So read 5G HT capablity and update 2G and 5G capablities.
6439 */
Krunal Sonidf0f8742016-09-26 14:56:31 -07006440 if (!hdd_update_ht_cap_in_cfg(hdd_ctx)) {
6441 status = false;
6442 hdd_err("Couldn't set HT CAP in cfg");
Krunal Soni52198e42016-09-26 13:53:09 -07006443 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006444
Krunal Sonidf0f8742016-09-26 14:56:31 -07006445 if (!hdd_update_vht_cap_in_cfg(hdd_ctx)) {
6446 status = false;
6447 hdd_err("Couldn't set VHT CAP in cfg");
Krunal Soni6c7c39f2016-09-26 14:30:34 -07006448 }
6449
Krunal Sonidf0f8742016-09-26 14:56:31 -07006450 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_FIXED_RATE, config->TxRate)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306451 == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006452 status = false;
6453 hdd_err("Couldn't pass on WNI_CFG_FIXED_RATE to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006454 }
6455
Krunal Sonidf0f8742016-09-26 14:56:31 -07006456 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
6457 config->MaxRxAmpduFactor) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306458 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006459 status = false;
6460 hdd_err("Couldn't pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006461 }
6462
Krunal Sonidf0f8742016-09-26 14:56:31 -07006463 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MPDU_DENSITY,
6464 config->ht_mpdu_density) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306465 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006466 status = false;
6467 hdd_err("Couldn't pass on WNI_CFG_MPDU_DENSITY to CFG");
Krishna Kumaar Natarajan22b59a72015-11-23 18:54:58 -08006468 }
6469
Krunal Sonidf0f8742016-09-26 14:56:31 -07006470 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_SHORT_PREAMBLE,
6471 config->fIsShortPreamble) == QDF_STATUS_E_FAILURE) {
6472 status = false;
6473 hdd_err("Couldn't pass on WNI_CFG_SHORT_PREAMBLE to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006474 }
6475
Krunal Sonidf0f8742016-09-26 14:56:31 -07006476 if (sme_cfg_set_int(hdd_ctx->hHal,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006477 WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006478 config->nPassiveMinChnTime)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306479 == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006480 status = false;
6481 hdd_err("Couldn't pass on WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006482 }
6483
Krunal Sonidf0f8742016-09-26 14:56:31 -07006484 if (sme_cfg_set_int(hdd_ctx->hHal,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006485 WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006486 config->nPassiveMaxChnTime)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306487 == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006488 status = false;
6489 hdd_err("Couldn't pass on WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006490 }
6491
Krunal Sonidf0f8742016-09-26 14:56:31 -07006492 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_BEACON_INTERVAL,
6493 config->nBeaconInterval) == QDF_STATUS_E_FAILURE) {
6494 status = false;
6495 hdd_err("Couldn't pass on WNI_CFG_BEACON_INTERVAL to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006496 }
6497
Krunal Sonidf0f8742016-09-26 14:56:31 -07006498 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MAX_PS_POLL,
6499 config->nMaxPsPoll) == QDF_STATUS_E_FAILURE) {
6500 status = false;
6501 hdd_err("Couldn't pass on WNI_CFG_MAX_PS_POLL to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006502 }
6503
Krunal Sonidf0f8742016-09-26 14:56:31 -07006504 if (sme_cfg_set_int (hdd_ctx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE,
6505 config->fIsLowGainOverride) == QDF_STATUS_E_FAILURE) {
6506 status = false;
6507 hdd_err("Couldn't pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006508 }
6509
Krunal Sonidf0f8742016-09-26 14:56:31 -07006510 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_RSSI_FILTER_PERIOD,
6511 config->nRssiFilterPeriod) == QDF_STATUS_E_FAILURE) {
6512 status = false;
6513 hdd_err("Couldn't pass on WNI_CFG_RSSI_FILTER_PERIOD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006514 }
6515
Krunal Sonidf0f8742016-09-26 14:56:31 -07006516 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_IGNORE_DTIM,
6517 config->fIgnoreDtim) == QDF_STATUS_E_FAILURE) {
6518 status = false;
6519 hdd_err("Couldn't pass on WNI_IGNORE_DTIM to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006520 }
6521
Krunal Sonidf0f8742016-09-26 14:56:31 -07006522 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT,
6523 config->fEnableFwHeartBeatMonitoring)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306524 == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006525 status = false;
6526 hdd_err("Couldn't pass on WNI_CFG_PS_HEART_BEAT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006527 }
6528
Krunal Sonidf0f8742016-09-26 14:56:31 -07006529 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER,
6530 config->fEnableFwBeaconFiltering) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306531 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006532 status = false;
6533 hdd_err("Couldn't pass on WNI_CFG_PS_BCN_FILTER to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006534 }
6535
Krunal Sonidf0f8742016-09-26 14:56:31 -07006536 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR,
6537 config->fEnableFwRssiMonitoring) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306538 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006539 status = false;
6540 hdd_err("Couldn't pass on WNI_CFG_PS_RSSI_MONITOR to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006541 }
6542
Krunal Sonidf0f8742016-09-26 14:56:31 -07006543 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT,
6544 config->nDataInactivityTimeout) == QDF_STATUS_E_FAILURE) {
6545 status = false;
6546 hdd_err("Couldn't pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006547 }
6548
Krunal Sonidf0f8742016-09-26 14:56:31 -07006549 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ENABLE_LTE_COEX,
6550 config->enableLTECoex) == QDF_STATUS_E_FAILURE) {
6551 status = false;
6552 hdd_err("Couldn't pass on WNI_CFG_ENABLE_LTE_COEX to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006553 }
6554
Krunal Sonidf0f8742016-09-26 14:56:31 -07006555 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT,
6556 config->apKeepAlivePeriod) == QDF_STATUS_E_FAILURE) {
6557 status = false;
6558 hdd_err("Couldn't pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006559 }
6560
Krunal Sonidf0f8742016-09-26 14:56:31 -07006561 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
6562 config->goKeepAlivePeriod) == QDF_STATUS_E_FAILURE) {
6563 status = false;
6564 hdd_err("Couldn't pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006565 }
6566
Krunal Sonidf0f8742016-09-26 14:56:31 -07006567 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
6568 config->apLinkMonitorPeriod) == QDF_STATUS_E_FAILURE) {
6569 status = false;
6570 hdd_err("Couldn't pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006571 }
6572
Krunal Sonidf0f8742016-09-26 14:56:31 -07006573 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
6574 config->goLinkMonitorPeriod) == QDF_STATUS_E_FAILURE) {
6575 status = false;
6576 hdd_err("Couldn't pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006577 }
6578
Krunal Sonidf0f8742016-09-26 14:56:31 -07006579 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING,
6580 config->mcastBcastFilterSetting) == QDF_STATUS_E_FAILURE)
6581 status = false;
6582 hdd_err("Couldn't pass on WNI_CFG_MCAST_BCAST_FILTER_SETTING to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006583
Krunal Sonidf0f8742016-09-26 14:56:31 -07006584 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_SINGLE_TID_RC,
6585 config->bSingleTidRc) == QDF_STATUS_E_FAILURE) {
6586 status = false;
6587 hdd_err("Couldn't pass on WNI_CFG_SINGLE_TID_RC to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006588 }
6589
Krunal Sonidf0f8742016-09-26 14:56:31 -07006590 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN,
6591 config->teleBcnWakeupEn) == QDF_STATUS_E_FAILURE) {
6592 status = false;
6593 hdd_err("Couldn't pass on WNI_CFG_TELE_BCN_WAKEUP_EN to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006594 }
6595
Krunal Sonidf0f8742016-09-26 14:56:31 -07006596 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TELE_BCN_TRANS_LI,
6597 config->nTeleBcnTransListenInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306598 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006599 status = false;
6600 hdd_err("Couldn't pass on WNI_CFG_TELE_BCN_TRANS_LI to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006601 }
6602
Krunal Sonidf0f8742016-09-26 14:56:31 -07006603 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TELE_BCN_MAX_LI,
6604 config->nTeleBcnMaxListenInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306605 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006606 status = false;
6607 hdd_err("Couldn't pass on WNI_CFG_TELE_BCN_MAX_LI to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006608 }
6609
Krunal Sonidf0f8742016-09-26 14:56:31 -07006610 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS,
6611 config->nTeleBcnTransLiNumIdleBeacons) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306612 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006613 status = false;
6614 hdd_err("Couldn't pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006615 }
6616
Krunal Sonidf0f8742016-09-26 14:56:31 -07006617 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS,
6618 config->nTeleBcnMaxLiNumIdleBeacons) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306619 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006620 status = false;
6621 hdd_err("Couldn't pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006622 }
6623
Krunal Sonidf0f8742016-09-26 14:56:31 -07006624 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK,
6625 config->rfSettlingTimeUs) == QDF_STATUS_E_FAILURE) {
6626 status = false;
6627 hdd_err("Couldn't pass on WNI_CFG_RF_SETTLING_TIME_CLK to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006628 }
6629
Krunal Sonidf0f8742016-09-26 14:56:31 -07006630 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD,
6631 config->infraStaKeepAlivePeriod) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306632 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006633 status = false;
6634 hdd_err("Couldn't pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006635 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006636 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE,
6637 config->dynamicPsPollValue) == QDF_STATUS_E_FAILURE) {
6638 status = false;
6639 hdd_err("Couldn't pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006640 }
6641
Krunal Sonidf0f8742016-09-26 14:56:31 -07006642 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT,
6643 config->nNullDataApRespTimeout) == QDF_STATUS_E_FAILURE) {
6644 status = false;
6645 hdd_err("Couldn't pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006646 }
6647
Krunal Sonidf0f8742016-09-26 14:56:31 -07006648 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
6649 config->apDataAvailPollPeriodInMs) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306650 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006651 status = false;
6652 hdd_err("Couldn't pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006653 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006654 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD,
6655 config->FragmentationThreshold) == QDF_STATUS_E_FAILURE) {
6656 status = false;
6657 hdd_err("Couldn't pass on WNI_CFG_FRAGMENTATION_THRESHOLD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006658 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006659 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_RTS_THRESHOLD,
6660 config->RTSThreshold) == QDF_STATUS_E_FAILURE) {
6661 status = false;
6662 hdd_err("Couldn't pass on WNI_CFG_RTS_THRESHOLD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006663 }
6664
Krunal Sonidf0f8742016-09-26 14:56:31 -07006665 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_11D_ENABLED,
6666 config->Is11dSupportEnabled) == QDF_STATUS_E_FAILURE) {
6667 status = false;
6668 hdd_err("Couldn't pass on WNI_CFG_11D_ENABLED to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006669 }
6670
Krunal Sonidf0f8742016-09-26 14:56:31 -07006671 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DFS_MASTER_ENABLED,
6672 config->enableDFSMasterCap) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306673 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006674 status = false;
6675 hdd_err("Failure: Couldn't set value for WNI_CFG_DFS_MASTER_ENABLED");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006676 }
6677
Krunal Sonidf0f8742016-09-26 14:56:31 -07006678 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD,
6679 config->HeartbeatThresh24) == QDF_STATUS_E_FAILURE) {
6680 status = false;
6681 hdd_err("Couldn't pass on WNI_CFG_HEART_BEAT_THRESHOLD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006682 }
6683
Krunal Sonidf0f8742016-09-26 14:56:31 -07006684 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
6685 config->apDataAvailPollPeriodInMs) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306686 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006687 status = false;
6688 hdd_err("Couldn't pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006689 }
6690
Krunal Sonidf0f8742016-09-26 14:56:31 -07006691 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST,
6692 config->fEnableMCAddrList) == QDF_STATUS_E_FAILURE) {
6693 status = false;
6694 hdd_err("Couldn't pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006695 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006696
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006697#ifdef WLAN_SOFTAP_VSTA_FEATURE
Krunal Sonidf0f8742016-09-26 14:56:31 -07006698 if (config->fEnableVSTASupport) {
6699 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_ASSOC_STA_LIMIT, &val);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006700 if (val <= WNI_CFG_ASSOC_STA_LIMIT_STADEF)
6701 val = WNI_CFG_ASSOC_STA_LIMIT_STAMAX;
6702 } else {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006703 val = config->maxNumberOfPeers;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006704
6705 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006706 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ASSOC_STA_LIMIT, val) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306707 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006708 status = false;
6709 hdd_err("Couldn't pass on WNI_CFG_ASSOC_STA_LIMIT to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006710 }
6711#endif
Krunal Sonidf0f8742016-09-26 14:56:31 -07006712 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
6713 config->enableLpwrImgTransition)
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306714 == QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006715 status = false;
6716 hdd_err("Couldn't pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006717 }
6718
Krunal Sonidf0f8742016-09-26 14:56:31 -07006719 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
6720 config->enableMCCAdaptiveScheduler) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306721 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006722 status = false;
6723 hdd_err("Couldn't pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006724 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006725 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,
6726 config->disableLDPCWithTxbfAP) == QDF_STATUS_E_FAILURE) {
6727 status = false;
6728 hdd_err("Couldn't pass on WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006729 }
6730
Krunal Sonidf0f8742016-09-26 14:56:31 -07006731 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ZERO,
6732 config->retryLimitZero) == QDF_STATUS_E_FAILURE) {
6733 status = false;
6734 hdd_err("Couldn't pass on WNI_CFG_DYNAMIC_THRESHOLD_ZERO to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006735 }
6736
Krunal Sonidf0f8742016-09-26 14:56:31 -07006737 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ONE,
6738 config->retryLimitOne) == QDF_STATUS_E_FAILURE) {
6739 status = false;
6740 hdd_err("Couldn't pass on WNI_CFG_DYNAMIC_THRESHOLD_ONE to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006741 }
6742
Krunal Sonidf0f8742016-09-26 14:56:31 -07006743 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_TWO,
6744 config->retryLimitTwo) == QDF_STATUS_E_FAILURE) {
6745 status = false;
6746 hdd_err("Couldn't pass on WNI_CFG_DYNAMIC_THRESHOLD_TWO to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006747 }
6748
Krunal Sonidf0f8742016-09-26 14:56:31 -07006749 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_MAX_MEDIUM_TIME,
6750 config->cfgMaxMediumTime) == QDF_STATUS_E_FAILURE) {
6751 status = false;
6752 hdd_err("Couldn't pass on WNI_CFG_MAX_MEDIUM_TIME to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006753 }
6754#ifdef FEATURE_WLAN_TDLS
6755
Krunal Sonidf0f8742016-09-26 14:56:31 -07006756 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,
6757 config->fTDLSUapsdMask) == QDF_STATUS_E_FAILURE) {
6758 status = false;
6759 hdd_err("Couldn't pass on WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006760 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006761 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_BUF_STA_ENABLED,
6762 config->fEnableTDLSBufferSta) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306763 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006764 status = false;
6765 hdd_err("Couldn't pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006766 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006767 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_PUAPSD_INACT_TIME,
6768 config->fTDLSPuapsdInactivityTimer) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306769 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006770 status = false;
6771 hdd_err("Couldn't pass on WNI_CFG_TDLS_PUAPSD_INACT_TIME to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006772 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006773 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_RX_FRAME_THRESHOLD,
6774 config->fTDLSRxFrameThreshold) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306775 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006776 status = false;
6777 hdd_err("Couldn't pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006778 }
6779
Krunal Sonidf0f8742016-09-26 14:56:31 -07006780 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,
6781 config->fEnableTDLSOffChannel) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306782 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006783 status = false;
6784 hdd_err("Couldn't pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006785 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006786 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TDLS_WMM_MODE_ENABLED,
6787 config->fEnableTDLSWmmMode) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306788 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006789 status = false;
6790 hdd_err("Couldn't pass on WNI_CFG_TDLS_WMM_MODE_ENABLED to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006791 }
6792#endif
6793
Krunal Sonidf0f8742016-09-26 14:56:31 -07006794 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN,
6795 config->fEnableAdaptRxDrain) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306796 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006797 status = false;
6798 hdd_err("Couldn't pass on WNI_CFG_ENABLE_ADAPT_RX_DRAIN to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006799 }
6800
Krunal Sonidf0f8742016-09-26 14:56:31 -07006801 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_ANTENNA_DIVESITY,
6802 config->antennaDiversity) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306803 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006804 status = false;
6805 hdd_err("Couldn't pass on WNI_CFG_ANTENNA_DIVESITY to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006806 }
6807
Krunal Sonidf0f8742016-09-26 14:56:31 -07006808 if (sme_cfg_set_int(hdd_ctx->hHal,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006809 WNI_CFG_DEFAULT_RATE_INDEX_24GHZ,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006810 config->defaultRateIndex24Ghz) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306811 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006812 status = false;
6813 hdd_err("Couldn't pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006814 }
6815
Krunal Sonidf0f8742016-09-26 14:56:31 -07006816 if (sme_cfg_set_int(hdd_ctx->hHal,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006817 WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
Krunal Sonidf0f8742016-09-26 14:56:31 -07006818 config->debugP2pRemainOnChannel) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306819 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006820 status = false;
6821 hdd_err("Couldn't pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006822 }
6823#ifdef WLAN_FEATURE_11W
Krunal Sonidf0f8742016-09-26 14:56:31 -07006824 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
6825 config->pmfSaQueryMaxRetries) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306826 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006827 status = false;
6828 hdd_err("Couldn't pass on WNI_CFG_SA_QUERY_MAX_RETRIES to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006829 }
6830
Krunal Sonidf0f8742016-09-26 14:56:31 -07006831 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
6832 config->pmfSaQueryRetryInterval) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306833 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006834 status = false;
6835 hdd_err("Couldn't pass on WNI_CFG_SA_QUERY_RETRY_INTERVAL to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006836 }
6837#endif
6838
Krunal Sonidf0f8742016-09-26 14:56:31 -07006839 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_IBSS_ATIM_WIN_SIZE,
6840 config->ibssATIMWinSize) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306841 QDF_STATUS_E_FAILURE) {
Krunal Sonidf0f8742016-09-26 14:56:31 -07006842 status = false;
6843 hdd_err("Couldn't pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CFG");
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006844 }
Krunal Soni53993f72016-07-08 18:20:03 -07006845
Krunal Sonidf0f8742016-09-26 14:56:31 -07006846 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_TGT_GTX_USR_CFG,
6847 config->tgt_gtx_usr_cfg) == QDF_STATUS_E_FAILURE) {
6848 status = false;
6849 hdd_err("Couldn't pass on WNI_CFG_TGT_GTX_USR_CFG to CCM");
Rajeev Kumar Sirasanagandlaaf474742016-09-06 17:54:50 +05306850 }
Krunal Sonidf0f8742016-09-26 14:56:31 -07006851 return status;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006852}
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006853#ifdef FEATURE_WLAN_SCAN_PNO
6854/**
6855 * hdd_set_pno_channel_prediction_config() - Set PNO configuration
6856 * @sme_config: Config params from SME Context
6857 * @hdd_ctx: Config params from HDD Context
6858 *
6859 * Copy the PNO Channel prediction feature configuration parameters
6860 * from HDD context to SME context.
6861 *
6862 * Return: None
6863 */
6864void hdd_set_pno_channel_prediction_config(
6865 tpSmeConfigParams sme_config, hdd_context_t *hdd_ctx)
6866{
Krunal Soni1878d3a2016-01-14 13:00:44 -08006867 sme_config->csrConfig.dual_mac_feature_disable =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006868 hdd_ctx->config->dual_mac_feature_disable;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006869 sme_config->csrConfig.pno_channel_prediction =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006870 hdd_ctx->config->pno_channel_prediction;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006871 sme_config->csrConfig.top_k_num_of_channels =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006872 hdd_ctx->config->top_k_num_of_channels;
Krunal Soni1878d3a2016-01-14 13:00:44 -08006873 sme_config->csrConfig.stationary_thresh =
6874 hdd_ctx->config->stationary_thresh;
6875 sme_config->csrConfig.channel_prediction_full_scan =
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006876 hdd_ctx->config->channel_prediction_full_scan;
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05306877 sme_config->csrConfig.pnoscan_adaptive_dwell_mode =
6878 hdd_ctx->config->pnoscan_adaptive_dwell_mode;
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07006879}
6880#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006881/**
6882 * hdd_set_sme_config() -initializes the sme configuration parameters
6883 *
6884 * @pHddCtx: the pointer to hdd context
6885 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306886 * Return: QDF_STATUS_SUCCESS if configuration is correctly applied,
6887 * otherwise the appropriate QDF_STATUS would be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006888 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306889QDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006890{
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306891 QDF_STATUS status = QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006892 tSmeConfigParams *smeConfig;
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006893 uint8_t rrm_capab_len;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006894
6895 struct hdd_config *pConfig = pHddCtx->config;
6896
Anurag Chouhan600c3a02016-03-01 10:33:54 +05306897 smeConfig = qdf_mem_malloc(sizeof(*smeConfig));
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006898 if (NULL == smeConfig) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306899 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_ERROR,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006900 "%s: unable to allocate smeConfig", __func__);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05306901 return QDF_STATUS_E_NOMEM;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006902 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006903
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05306904 QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO_HIGH,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006905 "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d",
6906 __func__, pConfig->WmmMode, pConfig->b80211eIsEnabled,
6907 pConfig->dot11Mode);
6908
6909 /* Config params obtained from the registry
6910 * To Do: set regulatory information here
6911 */
6912
6913 smeConfig->csrConfig.RTSThreshold = pConfig->RTSThreshold;
6914 smeConfig->csrConfig.FragmentationThreshold =
6915 pConfig->FragmentationThreshold;
6916 smeConfig->csrConfig.shortSlotTime = pConfig->ShortSlotTimeEnabled;
6917 smeConfig->csrConfig.Is11dSupportEnabled = pConfig->Is11dSupportEnabled;
6918 smeConfig->csrConfig.HeartbeatThresh24 = pConfig->HeartbeatThresh24;
6919
6920 smeConfig->csrConfig.phyMode =
6921 hdd_cfg_xlate_to_csr_phy_mode(pConfig->dot11Mode);
6922
6923 if (pConfig->dot11Mode == eHDD_DOT11_MODE_abg ||
6924 pConfig->dot11Mode == eHDD_DOT11_MODE_11b ||
6925 pConfig->dot11Mode == eHDD_DOT11_MODE_11g ||
6926 pConfig->dot11Mode == eHDD_DOT11_MODE_11b_ONLY ||
6927 pConfig->dot11Mode == eHDD_DOT11_MODE_11g_ONLY) {
6928 smeConfig->csrConfig.channelBondingMode24GHz = 0;
6929 smeConfig->csrConfig.channelBondingMode5GHz = 0;
6930 } else {
6931 smeConfig->csrConfig.channelBondingMode24GHz =
6932 pConfig->nChannelBondingMode24GHz;
6933 smeConfig->csrConfig.channelBondingMode5GHz =
6934 pConfig->nChannelBondingMode5GHz;
6935 }
6936 smeConfig->csrConfig.TxRate = pConfig->TxRate;
6937 smeConfig->csrConfig.nScanResultAgeCount = pConfig->ScanResultAgeCount;
6938 smeConfig->csrConfig.scanAgeTimeNCNPS = pConfig->nScanAgeTimeNCNPS;
6939 smeConfig->csrConfig.scanAgeTimeNCPS = pConfig->nScanAgeTimeNCPS;
6940 smeConfig->csrConfig.scanAgeTimeCNPS = pConfig->nScanAgeTimeCNPS;
6941 smeConfig->csrConfig.scanAgeTimeCPS = pConfig->nScanAgeTimeCPS;
6942 smeConfig->csrConfig.AdHocChannel24 = pConfig->OperatingChannel;
6943 smeConfig->csrConfig.fSupplicantCountryCodeHasPriority =
6944 pConfig->fSupplicantCountryCodeHasPriority;
6945 smeConfig->csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
6946 smeConfig->csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
6947 smeConfig->csrConfig.vccUlMacLossThreshold =
6948 pConfig->nVccUlMacLossThreshold;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006949 smeConfig->csrConfig.nInitialDwellTime = pConfig->nInitialDwellTime;
6950 smeConfig->csrConfig.initial_scan_no_dfs_chnl =
6951 pConfig->initial_scan_no_dfs_chnl;
6952 smeConfig->csrConfig.nActiveMaxChnTime = pConfig->nActiveMaxChnTime;
6953 smeConfig->csrConfig.nActiveMinChnTime = pConfig->nActiveMinChnTime;
6954 smeConfig->csrConfig.nPassiveMaxChnTime = pConfig->nPassiveMaxChnTime;
6955 smeConfig->csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
6956#ifdef WLAN_AP_STA_CONCURRENCY
6957 smeConfig->csrConfig.nActiveMaxChnTimeConc =
6958 pConfig->nActiveMaxChnTimeConc;
6959 smeConfig->csrConfig.nActiveMinChnTimeConc =
6960 pConfig->nActiveMinChnTimeConc;
6961 smeConfig->csrConfig.nPassiveMaxChnTimeConc =
6962 pConfig->nPassiveMaxChnTimeConc;
6963 smeConfig->csrConfig.nPassiveMinChnTimeConc =
6964 pConfig->nPassiveMinChnTimeConc;
6965 smeConfig->csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
Agrawal Ashish17bb3902016-05-05 13:29:40 +05306966 smeConfig->csrConfig.min_rest_time_conc = pConfig->min_rest_time_conc;
6967 smeConfig->csrConfig.idle_time_conc = pConfig->idle_time_conc;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006968 smeConfig->csrConfig.nNumStaChanCombinedConc =
6969 pConfig->nNumStaChanCombinedConc;
6970 smeConfig->csrConfig.nNumP2PChanCombinedConc =
6971 pConfig->nNumP2PChanCombinedConc;
6972
6973#endif
6974 smeConfig->csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
6975 smeConfig->csrConfig.WMMSupportMode = pConfig->WmmMode;
6976
Krishna Kumaar Natarajanf599c6e2015-11-03 11:44:03 -08006977 smeConfig->rrmConfig.rrm_enabled = pConfig->fRrmEnable;
6978 smeConfig->rrmConfig.max_randn_interval = pConfig->nRrmRandnIntvl;
6979 hdd_hex_string_to_u8_array(pConfig->rm_capability,
6980 smeConfig->rrmConfig.rm_capability, &rrm_capab_len,
6981 DOT11F_IE_RRMENABLEDCAP_MAX_LEN);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006982 /* Remaining config params not obtained from registry
6983 * On RF EVB beacon using channel 1.
6984 */
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006985 smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
6986 smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
Kiran Kumar Lokere5302ab62015-12-16 16:03:16 -08006987 smeConfig->csrConfig.enable_txbf_sap_mode =
6988 pConfig->enable_txbf_sap_mode;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006989 smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
6990 smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
Kapil Gupta4b2efbb2016-10-03 13:07:20 +05306991 smeConfig->csrConfig.vendor_vht_sap =
6992 pConfig->enable_sap_vendor_vht;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006993 smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee;
6994 smeConfig->csrConfig.enableVhtpAid = pConfig->enableVhtpAid;
6995 smeConfig->csrConfig.enableVhtGid = pConfig->enableVhtGid;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08006996 smeConfig->csrConfig.enableAmpduPs = pConfig->enableAmpduPs;
6997 smeConfig->csrConfig.enableHtSmps = pConfig->enableHtSmps;
6998 smeConfig->csrConfig.htSmps = pConfig->htSmps;
Archana Ramachandranfec24812016-02-16 16:31:56 -08006999 /* This param cannot be configured from INI */
7000 smeConfig->csrConfig.send_smps_action = true;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007001 smeConfig->csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G;
7002 smeConfig->csrConfig.AdHocChannel24 = pConfig->AdHocChannel24G;
7003 smeConfig->csrConfig.ProprietaryRatesEnabled = 0;
7004 smeConfig->csrConfig.HeartbeatThresh50 = 40;
7005 smeConfig->csrConfig.bandCapability = pConfig->nBandCapability;
7006 if (pConfig->nBandCapability == eCSR_BAND_24) {
7007 smeConfig->csrConfig.Is11hSupportEnabled = 0;
7008 } else {
7009 smeConfig->csrConfig.Is11hSupportEnabled =
7010 pConfig->Is11hSupportEnabled;
7011 }
7012 smeConfig->csrConfig.cbChoice = 0;
7013 smeConfig->csrConfig.eBand = pConfig->nBandCapability;
7014 smeConfig->csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
Padma, Santhosh Kumar29df3622016-08-16 19:15:16 +05307015 smeConfig->csrConfig.allow_tpc_from_ap = pConfig->allow_tpc_from_ap;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007016 smeConfig->csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
7017 smeConfig->csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007018 smeConfig->csrConfig.nRoamPrefer5GHz = pConfig->nRoamPrefer5GHz;
7019 smeConfig->csrConfig.nRoamIntraBand = pConfig->nRoamIntraBand;
7020 smeConfig->csrConfig.nProbes = pConfig->nProbes;
7021
7022 smeConfig->csrConfig.nRoamScanHomeAwayTime =
7023 pConfig->nRoamScanHomeAwayTime;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007024 smeConfig->csrConfig.fFirstScanOnly2GChnl =
7025 pConfig->enableFirstScan2GOnly;
7026
Peng Xuf5d60c82015-10-02 17:17:03 -07007027 smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007028
7029 hdd_set_power_save_offload_config(pHddCtx);
7030
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007031 smeConfig->csrConfig.csr11rConfig.IsFTResourceReqSupported =
7032 pConfig->fFTResourceReqSupported;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007033 smeConfig->csrConfig.isFastRoamIniFeatureEnabled =
7034 pConfig->isFastRoamIniFeatureEnabled;
7035 smeConfig->csrConfig.MAWCEnabled = pConfig->MAWCEnabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007036#ifdef FEATURE_WLAN_ESE
7037 smeConfig->csrConfig.isEseIniFeatureEnabled =
7038 pConfig->isEseIniFeatureEnabled;
7039 if (pConfig->isEseIniFeatureEnabled) {
7040 pConfig->isFastTransitionEnabled = true;
7041 }
7042#endif
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007043 smeConfig->csrConfig.isFastTransitionEnabled =
7044 pConfig->isFastTransitionEnabled;
7045 smeConfig->csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
7046 smeConfig->csrConfig.isWESModeEnabled = pConfig->isWESModeEnabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007047 smeConfig->csrConfig.isRoamOffloadScanEnabled =
7048 pConfig->isRoamOffloadScanEnabled;
7049 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled =
7050 pConfig->bFastRoamInConIniFeatureEnabled;
7051
7052 if (0 == smeConfig->csrConfig.isRoamOffloadScanEnabled) {
7053 /* Disable roaming in concurrency if roam scan offload is disabled */
7054 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled = 0;
7055 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007056 smeConfig->csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold =
7057 pConfig->nNeighborLookupRssiThreshold;
7058 smeConfig->csrConfig.neighborRoamConfig.delay_before_vdev_stop =
7059 pConfig->delay_before_vdev_stop;
7060 smeConfig->csrConfig.neighborRoamConfig.nOpportunisticThresholdDiff =
7061 pConfig->nOpportunisticThresholdDiff;
7062 smeConfig->csrConfig.neighborRoamConfig.nRoamRescanRssiDiff =
7063 pConfig->nRoamRescanRssiDiff;
7064 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime =
7065 pConfig->nNeighborScanMaxChanTime;
7066 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMinChanTime =
7067 pConfig->nNeighborScanMinChanTime;
7068 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod =
7069 pConfig->nNeighborScanPeriod;
7070 smeConfig->csrConfig.neighborRoamConfig.nMaxNeighborRetries =
7071 pConfig->nMaxNeighborReqTries;
7072 smeConfig->csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod =
7073 pConfig->nNeighborResultsRefreshPeriod;
7074 smeConfig->csrConfig.neighborRoamConfig.nEmptyScanRefreshPeriod =
7075 pConfig->nEmptyScanRefreshPeriod;
7076 hdd_string_to_u8_array(pConfig->neighborScanChanList,
7077 smeConfig->csrConfig.neighborRoamConfig.
7078 neighborScanChanList.channelList,
7079 &smeConfig->csrConfig.neighborRoamConfig.
7080 neighborScanChanList.numChannels,
7081 WNI_CFG_VALID_CHANNEL_LIST_LEN);
7082 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFirstBcnt =
7083 pConfig->nRoamBmissFirstBcnt;
7084 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFinalBcnt =
7085 pConfig->nRoamBmissFinalBcnt;
7086 smeConfig->csrConfig.neighborRoamConfig.nRoamBeaconRssiWeight =
7087 pConfig->nRoamBeaconRssiWeight;
7088 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_max_count =
7089 pConfig->nhi_rssi_scan_max_count;
7090 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_delta =
7091 pConfig->nhi_rssi_scan_rssi_delta;
7092 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_delay =
7093 pConfig->nhi_rssi_scan_delay;
7094 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_ub =
7095 pConfig->nhi_rssi_scan_rssi_ub;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007096 smeConfig->csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
7097 smeConfig->csrConfig.fValidateList = pConfig->fValidateScanList;
7098 smeConfig->csrConfig.allowDFSChannelRoam = pConfig->allowDFSChannelRoam;
7099
7100 /* Enable/Disable MCC */
7101 smeConfig->csrConfig.fEnableMCCMode = pConfig->enableMCC;
7102 smeConfig->csrConfig.mcc_rts_cts_prot_enable =
7103 pConfig->mcc_rts_cts_prot_enable;
7104 smeConfig->csrConfig.mcc_bcast_prob_resp_enable =
7105 pConfig->mcc_bcast_prob_resp_enable;
7106 smeConfig->csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
7107
7108 /* Scan Results Aging Time out value */
7109 smeConfig->csrConfig.scanCfgAgingTime = pConfig->scanAgingTimeout;
7110
7111 smeConfig->csrConfig.enableTxLdpc = pConfig->enableTxLdpc;
Krunal Soni0193b6f2016-08-15 15:53:43 -07007112 smeConfig->csrConfig.enableRxLDPC = pConfig->enableRxLDPC;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007113#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
7114 smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode;
7115#endif
7116
7117 smeConfig->csrConfig.isAmsduSupportInAMPDU =
7118 pConfig->isAmsduSupportInAMPDU;
7119 smeConfig->csrConfig.nSelect5GHzMargin = pConfig->nSelect5GHzMargin;
7120
7121 smeConfig->csrConfig.isCoalesingInIBSSAllowed =
7122 pHddCtx->config->isCoalesingInIBSSAllowed;
7123 smeConfig->csrConfig.ignore_peer_erp_info =
7124 pConfig->ignore_peer_erp_info;
7125 /* update SSR config */
7126 sme_update_enable_ssr((tHalHandle) (pHddCtx->hHal),
7127 pHddCtx->config->enableSSR);
7128
7129#ifdef FEATURE_WLAN_SCAN_PNO
7130 /* Update PNO offoad status */
Krunal Soni1878d3a2016-01-14 13:00:44 -08007131 smeConfig->csrConfig.pnoOffload = pHddCtx->config->PnoOffload;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007132#endif
7133
7134 /* Update maximum interfaces information */
Krunal Soni1878d3a2016-01-14 13:00:44 -08007135 smeConfig->csrConfig.max_intf_count = pHddCtx->max_intf_count;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007136
Krunal Soni1878d3a2016-01-14 13:00:44 -08007137 smeConfig->csrConfig.fEnableDebugLog = pHddCtx->config->gEnableDebugLog;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007138
Krunal Soni1878d3a2016-01-14 13:00:44 -08007139 smeConfig->csrConfig.enable5gEBT = pHddCtx->config->enable5gEBT;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007140
Krunal Soni1878d3a2016-01-14 13:00:44 -08007141 smeConfig->csrConfig.enableSelfRecovery =
7142 pHddCtx->config->enableSelfRecovery;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007143#ifdef WLAN_FEATURE_ROAM_OFFLOAD
7144 smeConfig->csrConfig.isRoamOffloadEnabled =
7145 pHddCtx->config->isRoamOffloadEnabled;
7146#endif
7147 smeConfig->csrConfig.conc_custom_rule1 =
7148 pHddCtx->config->conc_custom_rule1;
7149 smeConfig->csrConfig.conc_custom_rule2 =
7150 pHddCtx->config->conc_custom_rule2;
7151 smeConfig->csrConfig.is_sta_connection_in_5gz_enabled =
7152 pHddCtx->config->is_sta_connection_in_5gz_enabled;
7153
Krunal Soni1878d3a2016-01-14 13:00:44 -08007154 smeConfig->csrConfig.f_sta_miracast_mcc_rest_time_val =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007155 pHddCtx->config->sta_miracast_mcc_rest_time_val;
7156
7157#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
Krunal Soni1878d3a2016-01-14 13:00:44 -08007158 smeConfig->csrConfig.sap_channel_avoidance =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007159 pHddCtx->config->sap_channel_avoidance;
7160#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
7161
Krunal Soni1878d3a2016-01-14 13:00:44 -08007162 smeConfig->csrConfig.f_prefer_non_dfs_on_radar =
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007163 pHddCtx->config->prefer_non_dfs_on_radar;
7164
Krunal Soni1878d3a2016-01-14 13:00:44 -08007165 smeConfig->csrConfig.is_ps_enabled = pHddCtx->config->is_ps_enabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007166 hdd_set_fine_time_meas_cap(pHddCtx, smeConfig);
7167
7168 cds_set_multicast_logging(pHddCtx->config->multicast_host_fw_msgs);
7169
7170 smeConfig->csrConfig.sendDeauthBeforeCon = pConfig->sendDeauthBeforeCon;
7171
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007172 smeConfig->csrConfig.max_scan_count =
7173 pHddCtx->config->max_scan_count;
7174
7175 /* Update 802.11p config */
7176 smeConfig->csrConfig.enable_dot11p =
7177 (pHddCtx->config->dot11p_mode != WLAN_HDD_11P_DISABLED);
Varun Reddy Yeturub43fda12015-09-10 18:16:21 -07007178 hdd_set_pno_channel_prediction_config(smeConfig, pHddCtx);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007179
Krunal Soni1878d3a2016-01-14 13:00:44 -08007180 smeConfig->csrConfig.early_stop_scan_enable =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07007181 pHddCtx->config->early_stop_scan_enable;
Krunal Soni1878d3a2016-01-14 13:00:44 -08007182 smeConfig->csrConfig.early_stop_scan_min_threshold =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07007183 pHddCtx->config->early_stop_scan_min_threshold;
Krunal Soni1878d3a2016-01-14 13:00:44 -08007184 smeConfig->csrConfig.early_stop_scan_max_threshold =
Varun Reddy Yeturu05186292015-09-28 17:12:33 -07007185 pHddCtx->config->early_stop_scan_max_threshold;
Varun Reddy Yeturu044bda22015-11-21 22:03:40 -08007186 smeConfig->csrConfig.first_scan_bucket_threshold =
7187 pHddCtx->config->first_scan_bucket_threshold;
Gupta, Kapilc68ad462016-02-01 19:17:23 +05307188
7189 smeConfig->csrConfig.roam_dense_rssi_thresh_offset =
7190 pHddCtx->config->roam_dense_rssi_thresh_offset;
7191 smeConfig->csrConfig.roam_dense_min_aps =
7192 pHddCtx->config->roam_dense_min_aps;
7193 smeConfig->csrConfig.roam_dense_traffic_thresh =
7194 pHddCtx->config->roam_dense_traffic_thresh;
Sandeep Puligilla93a29ec2016-02-12 16:10:56 -08007195 smeConfig->csrConfig.obss_width_interval =
7196 pHddCtx->config->obss_width_trigger_interval;
7197 smeConfig->csrConfig.obss_active_dwelltime =
7198 pHddCtx->config->obss_active_dwelltime;
7199 smeConfig->csrConfig.obss_passive_dwelltime =
7200 pHddCtx->config->obss_passive_dwelltime;
Abhishek Singh165bc602016-03-21 12:43:00 +05307201 smeConfig->csrConfig.ignore_peer_ht_opmode =
7202 pConfig->ignore_peer_ht_opmode;
Abhishek Singh5ea86532016-04-27 14:10:53 +05307203 smeConfig->csrConfig.enable_fatal_event =
7204 pConfig->enable_fatal_event;
Gupta, Kapil96c7f2f2016-04-25 19:13:41 +05307205 smeConfig->csrConfig.scan_adaptive_dwell_mode =
7206 pHddCtx->config->scan_adaptive_dwell_mode;
7207 smeConfig->csrConfig.roamscan_adaptive_dwell_mode =
7208 pHddCtx->config->roamscan_adaptive_dwell_mode;
Gupta, Kapilc68ad462016-02-01 19:17:23 +05307209
Abhishek Singh10ecf582016-05-04 17:48:59 +05307210 smeConfig->csrConfig.enable_edca_params =
7211 pConfig->enable_edca_params;
7212
7213 smeConfig->csrConfig.edca_vo_cwmin =
7214 pConfig->edca_vo_cwmin;
7215 smeConfig->csrConfig.edca_vi_cwmin =
7216 pConfig->edca_vi_cwmin;
7217 smeConfig->csrConfig.edca_bk_cwmin =
7218 pConfig->edca_bk_cwmin;
7219 smeConfig->csrConfig.edca_be_cwmin =
7220 pConfig->edca_be_cwmin;
7221
7222 smeConfig->csrConfig.edca_vo_cwmax =
7223 pConfig->edca_vo_cwmax;
7224 smeConfig->csrConfig.edca_vi_cwmax =
7225 pConfig->edca_vi_cwmax;
7226 smeConfig->csrConfig.edca_bk_cwmax =
7227 pConfig->edca_bk_cwmax;
7228 smeConfig->csrConfig.edca_be_cwmax =
7229 pConfig->edca_be_cwmax;
7230
7231 smeConfig->csrConfig.edca_vo_aifs =
7232 pConfig->edca_vo_aifs;
7233 smeConfig->csrConfig.edca_vi_aifs =
7234 pConfig->edca_vi_aifs;
7235 smeConfig->csrConfig.edca_bk_aifs =
7236 pConfig->edca_bk_aifs;
7237 smeConfig->csrConfig.edca_be_aifs =
7238 pConfig->edca_be_aifs;
Agrawal Ashish21ba2572016-09-03 16:40:10 +05307239 smeConfig->csrConfig.sta_roam_policy_params.dfs_mode =
7240 CSR_STA_ROAM_POLICY_DFS_ENABLED;
7241 smeConfig->csrConfig.sta_roam_policy_params.skip_unsafe_channels = 0;
Abhishek Singh10ecf582016-05-04 17:48:59 +05307242
Padma, Santhosh Kumara7119672016-08-16 16:05:14 +05307243 smeConfig->csrConfig.tx_aggregation_size =
7244 pHddCtx->config->tx_aggregation_size;
7245 smeConfig->csrConfig.rx_aggregation_size =
7246 pHddCtx->config->rx_aggregation_size;
7247
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007248 status = sme_update_config(pHddCtx->hHal, smeConfig);
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307249 if (!QDF_IS_STATUS_SUCCESS(status)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007250 hddLog(LOGE, "sme_update_config() return failure %d",
7251 status);
7252 }
7253
Anurag Chouhan600c3a02016-03-01 10:33:54 +05307254 qdf_mem_free(smeConfig);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007255 return status;
7256}
7257
7258/**
7259 * hdd_execute_global_config_command() - execute the global config command
7260 * @pHddCtx: the pointer to hdd context
7261 * @command: the command to run
7262 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307263 * Return: the QDF_STATUS return from hdd_execute_config_command
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007264 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307265QDF_STATUS hdd_execute_global_config_command(hdd_context_t *pHddCtx,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007266 char *command)
7267{
7268 return hdd_execute_config_command(g_registry_table,
7269 ARRAY_SIZE(g_registry_table),
7270 (uint8_t *) pHddCtx->config,
7271 pHddCtx, command);
7272}
7273
7274/**
7275 * hdd_cfg_get_global_config() - get the configuration table
7276 * @pHddCtx: pointer to hdd context
7277 * @pBuf: buffer to store the configuration
7278 * @buflen: size of the buffer
7279 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307280 * Return: QDF_STATUS_SUCCESS if the configuration and buffer size can carry
7281 * the content, otherwise QDF_STATUS_E_RESOURCES
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007282 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307283QDF_STATUS hdd_cfg_get_global_config(hdd_context_t *pHddCtx, char *pBuf,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007284 int buflen)
7285{
7286 return hdd_cfg_get_config(g_registry_table,
7287 ARRAY_SIZE(g_registry_table),
7288 (uint8_t *) pHddCtx->config, pHddCtx, pBuf,
7289 buflen);
7290}
7291
7292/**
7293 * hdd_is_okc_mode_enabled() - returns whether OKC mode is enabled or not
7294 * @pHddCtx: the pointer to hdd context
7295 *
7296 * Return: true if OKC is enabled, otherwise false
7297 */
7298bool hdd_is_okc_mode_enabled(hdd_context_t *pHddCtx)
7299{
7300 if (NULL == pHddCtx) {
Anurag Chouhanb2dc16f2016-02-25 11:47:37 +05307301 hddLog(QDF_TRACE_LEVEL_FATAL, "%s: pHddCtx is NULL", __func__);
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007302 return -EINVAL;
7303 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007304 return pHddCtx->config->isOkcIniFeatureEnabled;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007305}
7306
7307/**
7308 * hdd_update_nss() - Update the number of spatial streams supported.
7309 * Ensure that nss is either 1 or 2 before calling this.
7310 *
7311 * @hdd_ctx: the pointer to hdd context
7312 * @nss: the number of spatial streams to be updated
7313 *
7314 * This function is used to modify the number of spatial streams
7315 * supported when not in connected state.
7316 *
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307317 * Return: QDF_STATUS_SUCCESS if nss is correctly updated,
7318 * otherwise QDF_STATUS_E_FAILURE would be returned
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007319 */
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307320QDF_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss)
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007321{
7322 struct hdd_config *hdd_config = hdd_ctx->config;
7323 uint32_t temp = 0;
7324 uint32_t rx_supp_data_rate, tx_supp_data_rate;
7325 bool status = true;
7326 tSirMacHTCapabilityInfo *ht_cap_info;
7327 uint8_t mcs_set[SIZE_OF_SUPPORTED_MCS_SET] = {0};
7328 uint8_t mcs_set_temp[SIZE_OF_SUPPORTED_MCS_SET];
Sandeep Puligilla98917432016-06-10 13:50:28 -07007329 uint32_t val, val32;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007330 uint16_t val16;
7331 uint8_t enable2x2;
7332
7333 if ((nss == 2) && (hdd_ctx->num_rf_chains != 2)) {
7334 hddLog(LOGE, "No support for 2 spatial streams");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307335 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007336 }
7337
7338 enable2x2 = (nss == 1) ? 0 : 1;
7339
7340 if (hdd_config->enable2x2 == enable2x2) {
7341 hddLog(LOGE, "NSS same as requested");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307342 return QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007343 }
7344
7345 if (true == sme_is_any_session_in_connected_state(hdd_ctx->hHal)) {
7346 hddLog(LOGE, "Connected sessions present, Do not change NSS");
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307347 return QDF_STATUS_E_INVAL;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007348 }
7349
7350 hdd_config->enable2x2 = enable2x2;
7351
7352 if (!hdd_config->enable2x2) {
7353 /* 1x1 */
Kiran Kumar Lokere666bf852016-05-02 12:23:02 -07007354 rx_supp_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
7355 tx_supp_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007356 } else {
7357 /* 2x2 */
Kiran Kumar Lokere666bf852016-05-02 12:23:02 -07007358 rx_supp_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
7359 tx_supp_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007360 }
7361
7362 /* Update Rx Highest Long GI data Rate */
7363 if (sme_cfg_set_int(hdd_ctx->hHal,
7364 WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307365 rx_supp_data_rate) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007366 status = false;
7367 hddLog(LOGE,
7368 "Could not pass on WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
7369 }
7370
7371 /* Update Tx Highest Long GI data Rate */
7372 if (sme_cfg_set_int(hdd_ctx->hHal,
7373 WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307374 tx_supp_data_rate) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007375 status = false;
7376 hddLog(LOGE,
7377 "Could not pass on WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
7378 }
7379
7380 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO, &temp);
7381 val16 = (uint16_t)temp;
7382 ht_cap_info = (tSirMacHTCapabilityInfo *)&val16;
Sandeep Puligilla98917432016-06-10 13:50:28 -07007383 if (!(hdd_ctx->ht_tx_stbc_supported && hdd_config->enable2x2)) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007384 ht_cap_info->txSTBC = 0;
Sandeep Puligilla98917432016-06-10 13:50:28 -07007385 } else {
7386 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_TXSTBC, &val32);
7387 hddLog(LOG1, FL("STBC %d"), val32);
7388 ht_cap_info->txSTBC = val32;
7389 }
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007390 temp = val16;
7391 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307392 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007393 status = false;
7394 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
7395 }
7396
7397 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
7398 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
7399 if (hdd_config->enable2x2)
7400 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
7401 else
7402 temp |= 0x000C;
7403
7404 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307405 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007406 status = false;
7407 hddLog(LOGE,
7408 "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
7409 }
7410
7411 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
7412 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
7413 if (hdd_config->enable2x2)
7414 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
7415 else
7416 temp |= 0x000C;
7417
7418 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307419 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007420 status = false;
7421 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
7422 }
7423
7424 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
7425 temp = (temp & 0xFFFC) | hdd_config->vhtTxMCS;
7426 if (hdd_config->enable2x2)
7427 temp = (temp & 0xFFF3) | (hdd_config->vhtTxMCS2x2 << 2);
7428 else
7429 temp |= 0x000C;
7430
7431 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307432 temp) == QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007433 status = false;
7434 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
7435 }
7436
7437#define WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES 0xff
7438 val = SIZE_OF_SUPPORTED_MCS_SET;
7439 sme_cfg_get_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
7440 mcs_set_temp, &val);
7441
7442 mcs_set[0] = mcs_set_temp[0];
7443 if (hdd_config->enable2x2)
7444 for (val = 0; val < nss; val++)
7445 mcs_set[val] = WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES;
7446
7447 if (sme_cfg_set_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
7448 mcs_set,
7449 SIZE_OF_SUPPORTED_MCS_SET) ==
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307450 QDF_STATUS_E_FAILURE) {
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007451 status = false;
7452 hddLog(LOGE, "Could not pass on MCS SET to CFG");
7453 }
7454#undef WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES
7455
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307456 if (QDF_STATUS_SUCCESS != sme_update_nss(hdd_ctx->hHal, nss))
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007457 status = false;
7458
Anurag Chouhanfb54ab02016-02-18 18:00:46 +05307459 return (status == false) ? QDF_STATUS_E_FAILURE : QDF_STATUS_SUCCESS;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08007460}