blob: 734bd4ba4e5d5fa5a6e9bd7b68c5a97cf12511d5 [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
2 * Copyright (c) 2012-2015 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * 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>
43#include <cdf_types.h>
44#include <csr_api.h>
45#include <wlan_hdd_misc.h>
46#include <wlan_hdd_napi.h>
47
48#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
49static 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}
98#endif
99
100#ifdef FEATURE_WLAN_OKC
101static void
102cb_notify_set_okc_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
103{
104 /* At the point this routine is called, the value in the hdd config
105 table has already been updated */
106}
107#endif
108
109#ifdef FEATURE_WLAN_LFR
110static void
111notify_is_fast_roam_ini_feature_enabled(hdd_context_t *pHddCtx,
112 unsigned long notifyId)
113{
114 /* At the point this routine is called, the value in the hdd config
115 table has already been updated */
116 sme_update_is_fast_roam_ini_feature_enabled(pHddCtx->hHal, 0,
117 pHddCtx->config->
118 isFastRoamIniFeatureEnabled);
119}
120
121static void
122notify_is_mawc_ini_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
123{
124 /* At the point this routine is called, the value in the hdd config
125 table has already been updated */
126 sme_update_is_mawc_ini_feature_enabled(pHddCtx->hHal,
127 pHddCtx->config->MAWCEnabled);
128}
129#endif
130
131#ifdef FEATURE_WLAN_ESE
132static void
133cb_notify_set_ese_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
134{
135 /* At the point this routine is called, the value in the hdd config
136 table has already been updated */
137 sme_update_is_ese_feature_enabled(pHddCtx->hHal, 0,
138 pHddCtx->config->isEseIniFeatureEnabled);
139}
140#endif
141
142static void
143cb_notify_set_fw_rssi_monitoring(hdd_context_t *pHddCtx, unsigned long notifyId)
144{
145 /* At the point this routine is called, the value in the hdd config
146 table has already been updated */
147 sme_update_config_fw_rssi_monitoring(pHddCtx->hHal,
148 pHddCtx->config->
149 fEnableFwRssiMonitoring);
150}
151
152#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
153static void cb_notify_set_opportunistic_scan_threshold_diff(hdd_context_t *pHddCtx,
154 unsigned long notifyId)
155{
156 /* At the point this routine is called, the value in the hdd config
157 table has already been updated */
158 sme_set_roam_opportunistic_scan_threshold_diff(pHddCtx->hHal, 0,
159 pHddCtx->config->
160 nOpportunisticThresholdDiff);
161}
162
163static void cb_notify_set_roam_rescan_rssi_diff(hdd_context_t *pHddCtx,
164 unsigned long notifyId)
165{
166 /* At the point this routine is called, the value in the hdd config
167 table has already been updated */
168 sme_set_roam_rescan_rssi_diff(pHddCtx->hHal,
169 0, pHddCtx->config->nRoamRescanRssiDiff);
170}
171
172static void
173cb_notify_set_neighbor_lookup_rssi_threshold(hdd_context_t *pHddCtx,
174 unsigned long notifyId)
175{
176 /* At the point this routine is called, the value in the hdd config
177 table has already been updated */
178 sme_set_neighbor_lookup_rssi_threshold(pHddCtx->hHal, 0,
179 pHddCtx->config->
180 nNeighborLookupRssiThreshold);
181}
182
183static void
184cb_notify_set_delay_before_vdev_stop(hdd_context_t *hdd_ctx,
185 unsigned long notify_id)
186{
187 /*
188 * At the point this routine is called, the value in the cfg_ini
189 * table has already been updated
190 */
191 sme_set_delay_before_vdev_stop(hdd_ctx->hHal, 0,
192 hdd_ctx->config->delay_before_vdev_stop);
193}
194
195static void
196cb_notify_set_neighbor_scan_period(hdd_context_t *pHddCtx, unsigned long notifyId)
197{
198 /* At the point this routine is called, the value in the hdd config
199 table has already been updated */
200 sme_set_neighbor_scan_period(pHddCtx->hHal, 0,
201 pHddCtx->config->nNeighborScanPeriod);
202}
203
204static void
205cb_notify_set_neighbor_results_refresh_period(hdd_context_t *pHddCtx,
206 unsigned long notifyId)
207{
208 /* At the point this routine is called, the value in the hdd config
209 table has already been updated */
210 sme_set_neighbor_scan_refresh_period(pHddCtx->hHal, 0,
211 pHddCtx->config->
212 nNeighborResultsRefreshPeriod);
213}
214
215static void
216cb_notify_set_empty_scan_refresh_period(hdd_context_t *pHddCtx,
217 unsigned long notifyId)
218{
219 /* At the point this routine is called, the value in the hdd config
220 table has already been updated */
221 sme_update_empty_scan_refresh_period(pHddCtx->hHal, 0,
222 pHddCtx->config->
223 nEmptyScanRefreshPeriod);
224}
225
226static void
227cb_notify_set_neighbor_scan_min_chan_time(hdd_context_t *pHddCtx,
228 unsigned long notifyId)
229{
230 /* At the point this routine is called, the value in the hdd config
231 table has already been updated */
232 sme_set_neighbor_scan_min_chan_time(pHddCtx->hHal,
233 pHddCtx->config->
234 nNeighborScanMinChanTime, 0);
235}
236
237static void
238cb_notify_set_neighbor_scan_max_chan_time(hdd_context_t *pHddCtx,
239 unsigned long notifyId)
240{
241 sme_set_neighbor_scan_max_chan_time(pHddCtx->hHal, 0,
242 pHddCtx->config->
243 nNeighborScanMaxChanTime);
244}
245
246static void cb_notify_set_roam_bmiss_first_bcnt(hdd_context_t *pHddCtx,
247 unsigned long notifyId)
248{
249 /* At the point this routine is called, the value in the hdd config
250 table has already been updated */
251 sme_set_roam_bmiss_first_bcnt(pHddCtx->hHal,
252 0, pHddCtx->config->nRoamBmissFirstBcnt);
253}
254
255static void cb_notify_set_roam_bmiss_final_bcnt(hdd_context_t *pHddCtx,
256 unsigned long notifyId)
257{
258 sme_set_roam_bmiss_final_bcnt(pHddCtx->hHal, 0,
259 pHddCtx->config->nRoamBmissFinalBcnt);
260}
261
262static void cb_notify_set_roam_beacon_rssi_weight(hdd_context_t *pHddCtx,
263 unsigned long notifyId)
264{
265 sme_set_roam_beacon_rssi_weight(pHddCtx->hHal, 0,
266 pHddCtx->config->nRoamBeaconRssiWeight);
267}
268
269static void
270cb_notify_set_dfs_scan_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
271{
272 /* At the point this routine is called, the value in the hdd config
273 table has already been updated */
274 sme_update_dfs_scan_mode(pHddCtx->hHal, 0,
275 pHddCtx->config->allowDFSChannelRoam);
276}
277
278#endif
279
280static void cb_notify_set_enable_ssr(hdd_context_t *pHddCtx,
281 unsigned long notifyId)
282{
283 sme_update_enable_ssr(pHddCtx->hHal, pHddCtx->config->enableSSR);
284}
285
286static void cb_notify_set_g_sap_preferred_chan_location(hdd_context_t *pHddCtx,
287 unsigned long notifyId)
288{
289 wlansap_set_dfs_preferred_channel_location(pHddCtx->hHal,
290 pHddCtx->config->
291 gSapPreferredChanLocation);
292}
293static void ch_notify_set_g_disable_dfs_japan_w53(hdd_context_t *pHddCtx,
294 unsigned long notifyId)
295{
296 wlansap_set_dfs_restrict_japan_w53(pHddCtx->hHal,
297 pHddCtx->config->
298 gDisableDfsJapanW53);
299}
300static void
301cb_notify_update_roam_scan_offload_enabled(hdd_context_t *pHddCtx,
302 unsigned long notifyId)
303{
304 sme_update_roam_scan_offload_enabled(pHddCtx->hHal,
305 pHddCtx->config->
306 isRoamOffloadScanEnabled);
307 if (0 == pHddCtx->config->isRoamOffloadScanEnabled) {
308 pHddCtx->config->bFastRoamInConIniFeatureEnabled = 0;
309 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
310 pHddCtx->config->
311 bFastRoamInConIniFeatureEnabled);
312 }
313}
314
315static void
316cb_notify_set_enable_fast_roam_in_concurrency(hdd_context_t *pHddCtx,
317 unsigned long notifyId)
318{
319 sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
320 pHddCtx->config->
321 bFastRoamInConIniFeatureEnabled);
322}
323
324/**
325 * cb_notify_set_roam_scan_hi_rssi_scan_params() - configure hi rssi
326 * scan params from cfg to sme.
327 * @hdd_ctx: HDD context data structure
328 * @notify_id: Identifies 1 of the 4 parameters to be modified
329 *
330 * Picks up the value from hdd configuration and passes it to SME.
331 * Return: void
332 */
333
334static void
335cb_notify_set_roam_scan_hi_rssi_scan_params(hdd_context_t *hdd_ctx,
336 unsigned long notify_id)
337{
338 int32_t val;
339
340 if (wlan_hdd_validate_context(hdd_ctx)) {
341 hddLog(LOGE, FL("HDD context is invalid"));
342 return;
343 }
344
345 switch (notify_id) {
346 case eCSR_HI_RSSI_SCAN_MAXCOUNT_ID:
347 val = hdd_ctx->config->nhi_rssi_scan_max_count;
348 break;
349
350 case eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID:
351 val = hdd_ctx->config->nhi_rssi_scan_rssi_delta;
352 break;
353
354 case eCSR_HI_RSSI_SCAN_DELAY_ID:
355 val = hdd_ctx->config->nhi_rssi_scan_delay;
356 break;
357
358 case eCSR_HI_RSSI_SCAN_RSSI_UB_ID:
359 val = hdd_ctx->config->nhi_rssi_scan_rssi_ub;
360 break;
361
362 default:
363 return;
364 }
365
366 sme_update_roam_scan_hi_rssi_scan_params(hdd_ctx->hHal, 0,
367 notify_id, val);
368}
369
370
371REG_TABLE_ENTRY g_registry_table[] = {
372 REG_VARIABLE(CFG_RTS_THRESHOLD_NAME, WLAN_PARAM_Integer,
373 struct hdd_config, RTSThreshold,
374 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
375 CFG_RTS_THRESHOLD_DEFAULT,
376 CFG_RTS_THRESHOLD_MIN,
377 CFG_RTS_THRESHOLD_MAX),
378
379 REG_VARIABLE(CFG_FRAG_THRESHOLD_NAME, WLAN_PARAM_Integer,
380 struct hdd_config, FragmentationThreshold,
381 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
382 CFG_FRAG_THRESHOLD_DEFAULT,
383 CFG_FRAG_THRESHOLD_MIN,
384 CFG_FRAG_THRESHOLD_MAX),
385
386 REG_VARIABLE(CFG_OPERATING_CHANNEL_NAME, WLAN_PARAM_Integer,
387 struct hdd_config, OperatingChannel,
388 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
389 CFG_OPERATING_CHANNEL_DEFAULT,
390 CFG_OPERATING_CHANNEL_MIN,
391 CFG_OPERATING_CHANNEL_MAX),
392
393 REG_VARIABLE(CFG_SHORT_SLOT_TIME_ENABLED_NAME, WLAN_PARAM_Integer,
394 struct hdd_config, ShortSlotTimeEnabled,
395 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
396 CFG_SHORT_SLOT_TIME_ENABLED_DEFAULT,
397 CFG_SHORT_SLOT_TIME_ENABLED_MIN,
398 CFG_SHORT_SLOT_TIME_ENABLED_MAX),
399
400 REG_VARIABLE(CFG_11D_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
401 struct hdd_config, Is11dSupportEnabled,
402 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
403 CFG_11D_SUPPORT_ENABLED_DEFAULT,
404 CFG_11D_SUPPORT_ENABLED_MIN,
405 CFG_11D_SUPPORT_ENABLED_MAX),
406
407 REG_VARIABLE(CFG_11H_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
408 struct hdd_config, Is11hSupportEnabled,
409 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
410 CFG_11H_SUPPORT_ENABLED_DEFAULT,
411 CFG_11H_SUPPORT_ENABLED_MIN,
412 CFG_11H_SUPPORT_ENABLED_MAX),
413
414 REG_VARIABLE(CFG_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
415 struct hdd_config, fSupplicantCountryCodeHasPriority,
416 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
417 CFG_COUNTRY_CODE_PRIORITY_DEFAULT,
418 CFG_COUNTRY_CODE_PRIORITY_MIN,
419 CFG_COUNTRY_CODE_PRIORITY_MAX),
420
421 REG_VARIABLE(CFG_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
422 struct hdd_config, HeartbeatThresh24,
423 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
424 CFG_HEARTBEAT_THRESH_24_DEFAULT,
425 CFG_HEARTBEAT_THRESH_24_MIN,
426 CFG_HEARTBEAT_THRESH_24_MAX),
427
428 REG_VARIABLE_STRING(CFG_POWER_USAGE_NAME, WLAN_PARAM_String,
429 struct hdd_config, PowerUsageControl,
430 VAR_FLAGS_OPTIONAL,
431 (void *)CFG_POWER_USAGE_DEFAULT),
432
433 REG_VARIABLE(CFG_ENABLE_LOGP_NAME, WLAN_PARAM_Integer,
434 struct hdd_config, fIsLogpEnabled,
435 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
436 CFG_ENABLE_LOGP_DEFAULT,
437 CFG_ENABLE_LOGP_MIN,
438 CFG_ENABLE_LOGP_MAX),
439
440 REG_VARIABLE(CFG_ENABLE_IMPS_NAME, WLAN_PARAM_Integer,
441 struct hdd_config, fIsImpsEnabled,
442 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
443 CFG_ENABLE_IMPS_DEFAULT,
444 CFG_ENABLE_IMPS_MIN,
445 CFG_ENABLE_IMPS_MAX),
446
447 REG_VARIABLE(CFG_ENABLE_PS_NAME, WLAN_PARAM_Integer,
448 struct hdd_config, is_ps_enabled,
449 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
450 CFG_ENABLE_PS_DEFAULT,
451 CFG_ENABLE_PS_MIN,
452 CFG_ENABLE_PS_MAX),
453
454 REG_VARIABLE(CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
455 struct hdd_config, nBmpsMinListenInterval,
456 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
457 CFG_BMPS_MINIMUM_LI_DEFAULT,
458 CFG_BMPS_MINIMUM_LI_MIN,
459 CFG_BMPS_MINIMUM_LI_MAX),
460
461 REG_VARIABLE(CFG_BMPS_MAXIMUM_LI_NAME, WLAN_PARAM_Integer,
462 struct hdd_config, nBmpsMaxListenInterval,
463 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
464 CFG_BMPS_MAXIMUM_LI_DEFAULT,
465 CFG_BMPS_MAXIMUM_LI_MIN,
466 CFG_BMPS_MAXIMUM_LI_MAX),
467
468 REG_VARIABLE(CFG_BMPS_MODERATE_LI_NAME, WLAN_PARAM_Integer,
469 struct hdd_config, nBmpsModListenInterval,
470 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
471 CFG_BMPS_MODERATE_LI_DEFAULT,
472 CFG_BMPS_MODERATE_LI_MIN,
473 CFG_BMPS_MODERATE_LI_MAX),
474
475 REG_VARIABLE(CFG_DOT11_MODE_NAME, WLAN_PARAM_Integer,
476 struct hdd_config, dot11Mode,
477 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
478 CFG_DOT11_MODE_DEFAULT,
479 CFG_DOT11_MODE_MIN,
480 CFG_DOT11_MODE_MAX),
481
482 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_24GHZ_NAME, WLAN_PARAM_Integer,
483 struct hdd_config, nChannelBondingMode24GHz,
484 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
485 CFG_CHANNEL_BONDING_MODE_DEFAULT,
486 CFG_CHANNEL_BONDING_MODE_MIN,
487 CFG_CHANNEL_BONDING_MODE_MAX),
488
489 REG_VARIABLE(CFG_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
490 struct hdd_config, nChannelBondingMode5GHz,
491 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
492 CFG_CHANNEL_BONDING_MODE_DEFAULT,
493 CFG_CHANNEL_BONDING_MODE_MIN,
494 CFG_CHANNEL_BONDING_MODE_MAX),
495
496 REG_VARIABLE(CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
497 struct hdd_config, MaxRxAmpduFactor,
498 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
499 CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
500 CFG_MAX_RX_AMPDU_FACTOR_MIN,
501 CFG_MAX_RX_AMPDU_FACTOR_MAX),
502
503 REG_VARIABLE(CFG_FIXED_RATE_NAME, WLAN_PARAM_Integer,
504 struct hdd_config, TxRate,
505 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
506 CFG_FIXED_RATE_DEFAULT,
507 CFG_FIXED_RATE_MIN,
508 CFG_FIXED_RATE_MAX),
509
510 REG_VARIABLE(CFG_SHORT_GI_20MHZ_NAME, WLAN_PARAM_Integer,
511 struct hdd_config, ShortGI20MhzEnable,
512 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
513 CFG_SHORT_GI_20MHZ_DEFAULT,
514 CFG_SHORT_GI_20MHZ_MIN,
515 CFG_SHORT_GI_20MHZ_MAX),
516
517 REG_VARIABLE(CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
518 struct hdd_config, ScanResultAgeCount,
519 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
520 CFG_SCAN_RESULT_AGE_COUNT_DEFAULT,
521 CFG_SCAN_RESULT_AGE_COUNT_MIN,
522 CFG_SCAN_RESULT_AGE_COUNT_MAX),
523
524 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCNPS_NAME, WLAN_PARAM_Integer,
525 struct hdd_config, nScanAgeTimeNCNPS,
526 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
527 CFG_SCAN_RESULT_AGE_TIME_NCNPS_DEFAULT,
528 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MIN,
529 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MAX),
530
531 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_NCPS_NAME, WLAN_PARAM_Integer,
532 struct hdd_config, nScanAgeTimeNCPS,
533 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
534 CFG_SCAN_RESULT_AGE_TIME_NCPS_DEFAULT,
535 CFG_SCAN_RESULT_AGE_TIME_NCPS_MIN,
536 CFG_SCAN_RESULT_AGE_TIME_NCPS_MAX),
537
538 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CNPS_NAME, WLAN_PARAM_Integer,
539 struct hdd_config, nScanAgeTimeCNPS,
540 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
541 CFG_SCAN_RESULT_AGE_TIME_CNPS_DEFAULT,
542 CFG_SCAN_RESULT_AGE_TIME_CNPS_MIN,
543 CFG_SCAN_RESULT_AGE_TIME_CNPS_MAX),
544
545 REG_VARIABLE(CFG_SCAN_RESULT_AGE_TIME_CPS_NAME, WLAN_PARAM_Integer,
546 struct hdd_config, nScanAgeTimeCPS,
547 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
548 CFG_SCAN_RESULT_AGE_TIME_CPS_DEFAULT,
549 CFG_SCAN_RESULT_AGE_TIME_CPS_MIN,
550 CFG_SCAN_RESULT_AGE_TIME_CPS_MAX),
551
552 REG_VARIABLE(CFG_RSSI_CATEGORY_GAP_NAME, WLAN_PARAM_Integer,
553 struct hdd_config, nRssiCatGap,
554 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
555 CFG_RSSI_CATEGORY_GAP_DEFAULT,
556 CFG_RSSI_CATEGORY_GAP_MIN,
557 CFG_RSSI_CATEGORY_GAP_MAX),
558
559 REG_VARIABLE(CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
560 struct hdd_config, fIsShortPreamble,
561 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
562 CFG_SHORT_PREAMBLE_DEFAULT,
563 CFG_SHORT_PREAMBLE_MIN,
564 CFG_SHORT_PREAMBLE_MAX),
565
566 REG_VARIABLE_STRING(CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
567 struct hdd_config, IbssBssid,
568 VAR_FLAGS_OPTIONAL,
569 (void *)CFG_IBSS_BSSID_DEFAULT),
570
571 REG_VARIABLE_STRING(CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
572 struct hdd_config, intfMacAddr[0],
573 VAR_FLAGS_OPTIONAL,
574 (void *)CFG_INTF0_MAC_ADDR_DEFAULT),
575
576 REG_VARIABLE_STRING(CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
577 struct hdd_config, intfMacAddr[1],
578 VAR_FLAGS_OPTIONAL,
579 (void *)CFG_INTF1_MAC_ADDR_DEFAULT),
580
581 REG_VARIABLE_STRING(CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
582 struct hdd_config, intfMacAddr[2],
583 VAR_FLAGS_OPTIONAL,
584 (void *)CFG_INTF2_MAC_ADDR_DEFAULT),
585
586 REG_VARIABLE_STRING(CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
587 struct hdd_config, intfMacAddr[3],
588 VAR_FLAGS_OPTIONAL,
589 (void *)CFG_INTF3_MAC_ADDR_DEFAULT),
590
591 REG_VARIABLE(CFG_AP_QOS_UAPSD_MODE_NAME, WLAN_PARAM_Integer,
592 struct hdd_config, apUapsdEnabled,
593 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
594 CFG_AP_QOS_UAPSD_MODE_DEFAULT,
595 CFG_AP_QOS_UAPSD_MODE_MIN,
596 CFG_AP_QOS_UAPSD_MODE_MAX),
597
598
599 REG_VARIABLE(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
600 struct hdd_config, apRandomBssidEnabled,
601 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
602 CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT,
603 CFG_AP_ENABLE_RANDOM_BSSID_MIN,
604 CFG_AP_ENABLE_RANDOM_BSSID_MAX),
605
606 REG_VARIABLE(CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
607 struct hdd_config, apProtEnabled,
608 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
609 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
610 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
611 CFG_AP_ENABLE_PROTECTION_MODE_MAX),
612
613 REG_VARIABLE(CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
614 struct hdd_config, apProtection,
615 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
616 CFG_AP_PROTECTION_MODE_DEFAULT,
617 CFG_AP_PROTECTION_MODE_MIN,
618 CFG_AP_PROTECTION_MODE_MAX),
619
620 REG_VARIABLE(CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
621 struct hdd_config, apOBSSProtEnabled,
622 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
623 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
624 CFG_AP_OBSS_PROTECTION_MODE_MIN,
625 CFG_AP_OBSS_PROTECTION_MODE_MAX),
626
627 REG_VARIABLE(CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
628 struct hdd_config, apDisableIntraBssFwd,
629 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
630 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
631 CFG_AP_STA_SECURITY_SEPERATION_MIN,
632 CFG_AP_STA_SECURITY_SEPERATION_MAX),
633
634 REG_VARIABLE(CFG_ENABLE_LTE_COEX, WLAN_PARAM_Integer,
635 struct hdd_config, enableLTECoex,
636 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
637 CFG_ENABLE_LTE_COEX_DEFAULT,
638 CFG_ENABLE_LTE_COEX_MIN,
639 CFG_ENABLE_LTE_COEX_MAX),
640 REG_VARIABLE(CFG_FORCE_SAP_ACS, WLAN_PARAM_Integer,
641 struct hdd_config, force_sap_acs,
642 VAR_FLAGS_DYNAMIC_CFG |
643 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
644 CFG_FORCE_SAP_ACS_DEFAULT,
645 CFG_FORCE_SAP_ACS_MIN,
646 CFG_FORCE_SAP_ACS_MAX),
647
648 REG_VARIABLE(CFG_FORCE_SAP_ACS_START_CH, WLAN_PARAM_Integer,
649 struct hdd_config, force_sap_acs_st_ch,
650 VAR_FLAGS_DYNAMIC_CFG |
651 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
652 CFG_FORCE_SAP_ACS_START_CH_DEFAULT,
653 CFG_FORCE_SAP_ACS_START_CH_MIN,
654 CFG_FORCE_SAP_ACS_START_CH_MAX),
655
656 REG_VARIABLE(CFG_FORCE_SAP_ACS_END_CH, WLAN_PARAM_Integer,
657 struct hdd_config, force_sap_acs_end_ch,
658 VAR_FLAGS_DYNAMIC_CFG |
659 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
660 CFG_FORCE_SAP_ACS_END_CH_DEFAULT,
661 CFG_FORCE_SAP_ACS_END_CH_MIN,
662 CFG_FORCE_SAP_ACS_END_CH_MAX),
663
664 REG_VARIABLE(CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
665 struct hdd_config, apKeepAlivePeriod,
666 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
667 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
668 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
669 CFG_AP_KEEP_ALIVE_PERIOD_MAX),
670
671 REG_VARIABLE(CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
672 struct hdd_config, goKeepAlivePeriod,
673 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
674 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
675 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
676 CFG_GO_KEEP_ALIVE_PERIOD_MAX),
677
678 REG_VARIABLE(CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
679 struct hdd_config, apLinkMonitorPeriod,
680 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
681 CFG_AP_LINK_MONITOR_PERIOD_DEFAULT,
682 CFG_AP_LINK_MONITOR_PERIOD_MIN,
683 CFG_AP_LINK_MONITOR_PERIOD_MAX),
684
685 REG_VARIABLE(CFG_GO_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
686 struct hdd_config, goLinkMonitorPeriod,
687 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
688 CFG_GO_LINK_MONITOR_PERIOD_DEFAULT,
689 CFG_GO_LINK_MONITOR_PERIOD_MIN,
690 CFG_GO_LINK_MONITOR_PERIOD_MAX),
691
692 REG_VARIABLE(CFG_DISABLE_PACKET_FILTER, WLAN_PARAM_Integer,
693 struct hdd_config, disablePacketFilter,
694 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
695 CFG_DISABLE_PACKET_FILTER_DEFAULT,
696 CFG_DISABLE_PACKET_FILTER_MIN,
697 CFG_DISABLE_PACKET_FILTER_MAX),
698
699 REG_VARIABLE(CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
700 struct hdd_config, nBeaconInterval,
701 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
702 CFG_BEACON_INTERVAL_DEFAULT,
703 CFG_BEACON_INTERVAL_MIN,
704 CFG_BEACON_INTERVAL_MAX),
705
706 REG_VARIABLE(CFG_ROAMING_TIME_NAME, WLAN_PARAM_Integer,
707 struct hdd_config, nRoamingTime,
708 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
709 CFG_ROAMING_TIME_DEFAULT,
710 CFG_ROAMING_TIME_MIN,
711 CFG_ROAMING_TIME_MAX),
712
713 REG_VARIABLE(CFG_VCC_RSSI_TRIGGER_NAME, WLAN_PARAM_Integer,
714 struct hdd_config, nVccRssiTrigger,
715 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
716 CFG_VCC_RSSI_TRIGGER_DEFAULT,
717 CFG_VCC_RSSI_TRIGGER_MIN,
718 CFG_VCC_RSSI_TRIGGER_MAX),
719
720 REG_VARIABLE(CFG_VCC_UL_MAC_LOSS_THRESH_NAME, WLAN_PARAM_Integer,
721 struct hdd_config, nVccUlMacLossThreshold,
722 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
723 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
724 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
725 CFG_VCC_UL_MAC_LOSS_THRESH_MAX),
726
727 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
728 struct hdd_config, nPassiveMaxChnTime,
729 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
730 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
731 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
732 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX),
733
734 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
735 struct hdd_config, nPassiveMinChnTime,
736 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
737 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
738 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
739 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX),
740
741 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
742 struct hdd_config, nActiveMaxChnTime,
743 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
744 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
745 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
746 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX),
747
748 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
749 struct hdd_config, nActiveMinChnTime,
750 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
751 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
752 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
753 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX),
754
755 REG_VARIABLE(CFG_RETRY_LIMIT_ZERO_NAME, WLAN_PARAM_Integer,
756 struct hdd_config, retryLimitZero,
757 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
758 CFG_RETRY_LIMIT_ZERO_DEFAULT,
759 CFG_RETRY_LIMIT_ZERO_MIN,
760 CFG_RETRY_LIMIT_ZERO_MAX),
761
762 REG_VARIABLE(CFG_RETRY_LIMIT_ONE_NAME, WLAN_PARAM_Integer,
763 struct hdd_config, retryLimitOne,
764 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
765 CFG_RETRY_LIMIT_ONE_DEFAULT,
766 CFG_RETRY_LIMIT_ONE_MIN,
767 CFG_RETRY_LIMIT_ONE_MAX),
768
769 REG_VARIABLE(CFG_RETRY_LIMIT_TWO_NAME, WLAN_PARAM_Integer,
770 struct hdd_config, retryLimitTwo,
771 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
772 CFG_RETRY_LIMIT_TWO_DEFAULT,
773 CFG_RETRY_LIMIT_TWO_MIN,
774 CFG_RETRY_LIMIT_TWO_MAX),
775
776#ifdef WLAN_AP_STA_CONCURRENCY
777 REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
778 struct hdd_config, nPassiveMaxChnTimeConc,
779 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
780 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
781 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MIN,
782 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MAX),
783
784 REG_VARIABLE(CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
785 struct hdd_config, nPassiveMinChnTimeConc,
786 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
787 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
788 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MIN,
789 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MAX),
790
791 REG_VARIABLE(CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
792 struct hdd_config, nActiveMaxChnTimeConc,
793 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
794 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
795 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MIN,
796 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MAX),
797
798 REG_VARIABLE(CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
799 struct hdd_config, nActiveMinChnTimeConc,
800 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
801 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
802 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MIN,
803 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MAX),
804
805 REG_VARIABLE(CFG_REST_TIME_CONC_NAME, WLAN_PARAM_Integer,
806 struct hdd_config, nRestTimeConc,
807 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
808 CFG_REST_TIME_CONC_DEFAULT,
809 CFG_REST_TIME_CONC_MIN,
810 CFG_REST_TIME_CONC_MAX),
811
812 REG_VARIABLE(CFG_NUM_STA_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
813 struct hdd_config, nNumStaChanCombinedConc,
814 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
815 CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT,
816 CFG_NUM_STA_CHAN_COMBINED_CONC_MIN,
817 CFG_NUM_STA_CHAN_COMBINED_CONC_MAX),
818
819 REG_VARIABLE(CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
820 struct hdd_config, nNumP2PChanCombinedConc,
821 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
822 CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT,
823 CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN,
824 CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX),
825#endif
826
827 REG_VARIABLE(CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
828 struct hdd_config, nMaxPsPoll,
829 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
830 CFG_MAX_PS_POLL_DEFAULT,
831 CFG_MAX_PS_POLL_MIN,
832 CFG_MAX_PS_POLL_MAX),
833
834 REG_VARIABLE(CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
835 struct hdd_config, nTxPowerCap,
836 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
837 CFG_MAX_TX_POWER_DEFAULT,
838 CFG_MAX_TX_POWER_MIN,
839 CFG_MAX_TX_POWER_MAX),
840
841 REG_VARIABLE(CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
842 struct hdd_config, fIsLowGainOverride,
843 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
844 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
845 CFG_LOW_GAIN_OVERRIDE_MIN,
846 CFG_LOW_GAIN_OVERRIDE_MAX),
847
848 REG_VARIABLE(CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
849 struct hdd_config, nRssiFilterPeriod,
850 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
851 CFG_RSSI_FILTER_PERIOD_DEFAULT,
852 CFG_RSSI_FILTER_PERIOD_MIN,
853 CFG_RSSI_FILTER_PERIOD_MAX),
854
855 REG_VARIABLE(CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
856 struct hdd_config, fIgnoreDtim,
857 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
858 CFG_IGNORE_DTIM_DEFAULT,
859 CFG_IGNORE_DTIM_MIN,
860 CFG_IGNORE_DTIM_MAX),
861
862 REG_VARIABLE(CFG_MAX_LI_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
863 struct hdd_config, fMaxLIModulatedDTIM,
864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
865 CFG_MAX_LI_MODULATED_DTIM_DEFAULT,
866 CFG_MAX_LI_MODULATED_DTIM_MIN,
867 CFG_MAX_LI_MODULATED_DTIM_MAX),
868
869 REG_VARIABLE(CFG_RX_ANT_CONFIGURATION_NAME, WLAN_PARAM_Integer,
870 struct hdd_config, nRxAnt,
871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
872 CFG_RX_ANT_CONFIGURATION_NAME_DEFAULT,
873 CFG_RX_ANT_CONFIGURATION_NAME_MIN,
874 CFG_RX_ANT_CONFIGURATION_NAME_MAX),
875
876 REG_VARIABLE(CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
877 struct hdd_config, fEnableFwHeartBeatMonitoring,
878 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
879 CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
880 CFG_FW_HEART_BEAT_MONITORING_MIN,
881 CFG_FW_HEART_BEAT_MONITORING_MAX),
882
883 REG_VARIABLE(CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
884 struct hdd_config, fEnableFwBeaconFiltering,
885 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
886 CFG_FW_BEACON_FILTERING_DEFAULT,
887 CFG_FW_BEACON_FILTERING_MIN,
888 CFG_FW_BEACON_FILTERING_MAX),
889
890 REG_DYNAMIC_VARIABLE(CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
891 struct hdd_config, fEnableFwRssiMonitoring,
892 VAR_FLAGS_OPTIONAL |
893 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
894 CFG_FW_RSSI_MONITORING_DEFAULT,
895 CFG_FW_RSSI_MONITORING_MIN,
896 CFG_FW_RSSI_MONITORING_MAX,
897 cb_notify_set_fw_rssi_monitoring, 0),
898
899 REG_VARIABLE(CFG_FW_MCC_RTS_CTS_PROT_NAME, WLAN_PARAM_Integer,
900 struct hdd_config, mcc_rts_cts_prot_enable,
901 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
902 CFG_FW_MCC_RTS_CTS_PROT_DEFAULT,
903 CFG_FW_MCC_RTS_CTS_PROT_MIN,
904 CFG_FW_MCC_RTS_CTS_PROT_MAX),
905
906 REG_VARIABLE(CFG_FW_MCC_BCAST_PROB_RESP_NAME, WLAN_PARAM_Integer,
907 struct hdd_config, mcc_bcast_prob_resp_enable,
908 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
909 CFG_FW_MCC_BCAST_PROB_RESP_DEFAULT,
910 CFG_FW_MCC_BCAST_PROB_RESP_MIN,
911 CFG_FW_MCC_BCAST_PROB_RESP_MAX),
912
913 REG_VARIABLE(CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
914 struct hdd_config, nDataInactivityTimeout,
915 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
916 CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
917 CFG_DATA_INACTIVITY_TIMEOUT_MIN,
918 CFG_DATA_INACTIVITY_TIMEOUT_MAX),
919
920 REG_VARIABLE(CFG_QOS_WMM_MODE_NAME, WLAN_PARAM_Integer,
921 struct hdd_config, WmmMode,
922 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
923 CFG_QOS_WMM_MODE_DEFAULT,
924 CFG_QOS_WMM_MODE_MIN,
925 CFG_QOS_WMM_MODE_MAX),
926
927 REG_VARIABLE(CFG_QOS_WMM_80211E_ENABLED_NAME, WLAN_PARAM_Integer,
928 struct hdd_config, b80211eIsEnabled,
929 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
930 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
931 CFG_QOS_WMM_80211E_ENABLED_MIN,
932 CFG_QOS_WMM_80211E_ENABLED_MAX),
933
934 REG_VARIABLE(CFG_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
935 struct hdd_config, UapsdMask,
936 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
937 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
938 CFG_QOS_WMM_UAPSD_MASK_MIN,
939 CFG_QOS_WMM_UAPSD_MASK_MAX),
940
941 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME,
942 WLAN_PARAM_Integer,
943 struct hdd_config, InfraUapsdVoSrvIntv,
944 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
945 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
946 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
947 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX),
948
949 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME,
950 WLAN_PARAM_Integer,
951 struct hdd_config, InfraUapsdVoSuspIntv,
952 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
953 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
954 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
955 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX),
956
957 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME,
958 WLAN_PARAM_Integer,
959 struct hdd_config, InfraUapsdViSrvIntv,
960 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
961 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
962 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
963 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX),
964
965 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME,
966 WLAN_PARAM_Integer,
967 struct hdd_config, InfraUapsdViSuspIntv,
968 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
969 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
970 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
971 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX),
972
973 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME,
974 WLAN_PARAM_Integer,
975 struct hdd_config, InfraUapsdBeSrvIntv,
976 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
977 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
978 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
979 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX),
980
981 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME,
982 WLAN_PARAM_Integer,
983 struct hdd_config, InfraUapsdBeSuspIntv,
984 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
985 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
986 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
987 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX),
988
989 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME,
990 WLAN_PARAM_Integer,
991 struct hdd_config, InfraUapsdBkSrvIntv,
992 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
993 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
994 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
995 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX),
996
997 REG_VARIABLE(CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME,
998 WLAN_PARAM_Integer,
999 struct hdd_config, InfraUapsdBkSuspIntv,
1000 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1001 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
1002 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
1003 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX),
1004
1005#ifdef FEATURE_WLAN_ESE
1006 REG_VARIABLE(CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME,
1007 WLAN_PARAM_Integer,
1008 struct hdd_config, InfraInactivityInterval,
1009 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1010 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
1011 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
1012 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
1013
1014 REG_DYNAMIC_VARIABLE(CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1015 struct hdd_config, isEseIniFeatureEnabled,
1016 VAR_FLAGS_OPTIONAL |
1017 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1018 CFG_ESE_FEATURE_ENABLED_DEFAULT,
1019 CFG_ESE_FEATURE_ENABLED_MIN,
1020 CFG_ESE_FEATURE_ENABLED_MAX,
1021 cb_notify_set_ese_feature_enabled, 0),
1022#endif /* FEATURE_WLAN_ESE */
1023
1024#ifdef FEATURE_WLAN_LFR
1025 /* flag to turn ON/OFF Legacy Fast Roaming */
1026 REG_DYNAMIC_VARIABLE(CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1027 struct hdd_config, isFastRoamIniFeatureEnabled,
1028 VAR_FLAGS_OPTIONAL |
1029 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1030 CFG_LFR_FEATURE_ENABLED_DEFAULT,
1031 CFG_LFR_FEATURE_ENABLED_MIN,
1032 CFG_LFR_FEATURE_ENABLED_MAX,
1033 notify_is_fast_roam_ini_feature_enabled, 0),
1034
1035 /* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */
1036 REG_DYNAMIC_VARIABLE(CFG_LFR_MAWC_FEATURE_ENABLED_NAME,
1037 WLAN_PARAM_Integer,
1038 struct hdd_config, MAWCEnabled,
1039 VAR_FLAGS_OPTIONAL |
1040 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1041 CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT,
1042 CFG_LFR_MAWC_FEATURE_ENABLED_MIN,
1043 CFG_LFR_MAWC_FEATURE_ENABLED_MAX,
1044 notify_is_mawc_ini_feature_enabled, 0),
1045
1046#endif /* FEATURE_WLAN_LFR */
1047
1048#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
1049 /* flag to turn ON/OFF 11r and ESE FastTransition */
1050 REG_DYNAMIC_VARIABLE(CFG_FAST_TRANSITION_ENABLED_NAME,
1051 WLAN_PARAM_Integer,
1052 struct hdd_config, isFastTransitionEnabled,
1053 VAR_FLAGS_OPTIONAL |
1054 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1055 CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
1056 CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
1057 CFG_FAST_TRANSITION_ENABLED_NAME_MAX,
1058 cb_notify_set_fast_transition_enabled, 0),
1059
1060 /* Variable to specify the delta/difference between the RSSI of current AP
1061 * and roamable AP while roaming */
1062 REG_DYNAMIC_VARIABLE(CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1063 struct hdd_config, RoamRssiDiff,
1064 VAR_FLAGS_OPTIONAL |
1065 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1066 CFG_ROAM_RSSI_DIFF_DEFAULT,
1067 CFG_ROAM_RSSI_DIFF_MIN,
1068 CFG_ROAM_RSSI_DIFF_MAX,
1069 cb_notify_set_roam_rssi_diff, 0),
1070
1071 REG_DYNAMIC_VARIABLE(CFG_ENABLE_WES_MODE_NAME, WLAN_PARAM_Integer,
1072 struct hdd_config, isWESModeEnabled,
1073 VAR_FLAGS_OPTIONAL |
1074 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1075 CFG_ENABLE_WES_MODE_NAME_DEFAULT,
1076 CFG_ENABLE_WES_MODE_NAME_MIN,
1077 CFG_ENABLE_WES_MODE_NAME_MAX,
1078 cb_notify_set_wes_mode, 0),
1079#endif
1080#ifdef FEATURE_WLAN_OKC
1081 REG_DYNAMIC_VARIABLE(CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
1082 struct hdd_config, isOkcIniFeatureEnabled,
1083 VAR_FLAGS_OPTIONAL |
1084 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1085 CFG_OKC_FEATURE_ENABLED_DEFAULT,
1086 CFG_OKC_FEATURE_ENABLED_MIN,
1087 CFG_OKC_FEATURE_ENABLED_MAX,
1088 cb_notify_set_okc_feature_enabled, 0),
1089#endif
1090 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer,
1091 struct hdd_config, isRoamOffloadScanEnabled,
1092 VAR_FLAGS_OPTIONAL |
1093 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1094 CFG_ROAM_SCAN_OFFLOAD_ENABLED_DEFAULT,
1095 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MIN,
1096 CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
1097 cb_notify_update_roam_scan_offload_enabled, 0),
1098 REG_VARIABLE(CFG_QOS_WMM_PKT_CLASSIFY_BASIS_NAME, WLAN_PARAM_Integer,
1099 struct hdd_config, PktClassificationBasis,
1100 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1101 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_DEFAULT,
1102 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MIN,
1103 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MAX),
1104
1105 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME, WLAN_PARAM_Integer,
1106 struct hdd_config, InfraDirAcVo,
1107 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1108 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
1109 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
1110 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX),
1111
1112 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME,
1113 WLAN_PARAM_HexInteger,
1114 struct hdd_config, InfraNomMsduSizeAcVo,
1115 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1116 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
1117 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
1118 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX),
1119
1120 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME,
1121 WLAN_PARAM_HexInteger,
1122 struct hdd_config, InfraMeanDataRateAcVo,
1123 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1124 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
1125 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
1126 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX),
1127
1128 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME,
1129 WLAN_PARAM_HexInteger,
1130 struct hdd_config, InfraMinPhyRateAcVo,
1131 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1132 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
1133 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
1134 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX),
1135
1136 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME, WLAN_PARAM_HexInteger,
1137 struct hdd_config, InfraSbaAcVo,
1138 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1139 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
1140 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
1141 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX),
1142
1143 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME, WLAN_PARAM_Integer,
1144 struct hdd_config, InfraDirAcVi,
1145 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1146 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
1147 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
1148 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX),
1149
1150 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME,
1151 WLAN_PARAM_HexInteger,
1152 struct hdd_config, InfraNomMsduSizeAcVi,
1153 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1154 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
1155 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
1156 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX),
1157
1158 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME,
1159 WLAN_PARAM_HexInteger,
1160 struct hdd_config, InfraMeanDataRateAcVi,
1161 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1162 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
1163 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
1164 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX),
1165
1166 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME,
1167 WLAN_PARAM_HexInteger,
1168 struct hdd_config, InfraMinPhyRateAcVi,
1169 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1170 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
1171 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
1172 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX),
1173
1174 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME, WLAN_PARAM_HexInteger,
1175 struct hdd_config, InfraSbaAcVi,
1176 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1177 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
1178 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
1179 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX),
1180
1181 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME, WLAN_PARAM_Integer,
1182 struct hdd_config, InfraDirAcBe,
1183 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1184 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
1185 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
1186 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX),
1187
1188 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME,
1189 WLAN_PARAM_HexInteger,
1190 struct hdd_config, InfraNomMsduSizeAcBe,
1191 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1192 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
1193 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
1194 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX),
1195
1196 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME,
1197 WLAN_PARAM_HexInteger,
1198 struct hdd_config, InfraMeanDataRateAcBe,
1199 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1200 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
1201 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
1202 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX),
1203
1204 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME,
1205 WLAN_PARAM_HexInteger,
1206 struct hdd_config, InfraMinPhyRateAcBe,
1207 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1208 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
1209 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
1210 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX),
1211
1212 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME, WLAN_PARAM_HexInteger,
1213 struct hdd_config, InfraSbaAcBe,
1214 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1215 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
1216 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
1217 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX),
1218
1219 REG_VARIABLE(CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME, WLAN_PARAM_Integer,
1220 struct hdd_config, InfraDirAcBk,
1221 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1222 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
1223 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
1224 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX),
1225
1226 REG_VARIABLE(CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME,
1227 WLAN_PARAM_HexInteger,
1228 struct hdd_config, InfraNomMsduSizeAcBk,
1229 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1230 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
1231 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
1232 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX),
1233
1234 REG_VARIABLE(CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME,
1235 WLAN_PARAM_HexInteger,
1236 struct hdd_config, InfraMeanDataRateAcBk,
1237 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1238 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
1239 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
1240 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX),
1241
1242 REG_VARIABLE(CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME,
1243 WLAN_PARAM_HexInteger,
1244 struct hdd_config, InfraMinPhyRateAcBk,
1245 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1246 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
1247 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
1248 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX),
1249
1250 REG_VARIABLE(CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME, WLAN_PARAM_HexInteger,
1251 struct hdd_config, InfraSbaAcBk,
1252 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1253 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
1254 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
1255 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX),
1256
1257 REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer,
1258 struct hdd_config, DelayedTriggerFrmInt,
1259 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1260 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
1261 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
1262 CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
1263
1264 REG_VARIABLE_STRING(CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
1265 struct hdd_config, wowlPattern,
1266 VAR_FLAGS_OPTIONAL,
1267 (void *)CFG_WOWL_PATTERN_DEFAULT),
1268
1269 REG_VARIABLE(CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME, WLAN_PARAM_Integer,
1270 struct hdd_config, bImplicitQosEnabled,
1271 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1272 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
1273 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
1274 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX),
1275
1276 REG_VARIABLE(CFG_AP_LISTEN_MODE_NAME, WLAN_PARAM_Integer,
1277 struct hdd_config, nEnableListenMode,
1278 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1279 CFG_AP_LISTEN_MODE_DEFAULT,
1280 CFG_AP_LISTEN_MODE_MIN,
1281 CFG_AP_LISTEN_MODE_MAX),
1282
1283 REG_VARIABLE(CFG_AP_AUTO_SHUT_OFF, WLAN_PARAM_Integer,
1284 struct hdd_config, nAPAutoShutOff,
1285 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1286 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
1287 CFG_AP_AUTO_SHUT_OFF_MIN,
1288 CFG_AP_AUTO_SHUT_OFF_MAX),
1289
1290#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
1291 REG_VARIABLE(CFG_WLAN_MCC_TO_SCC_SWITCH_MODE, WLAN_PARAM_Integer,
1292 struct hdd_config, WlanMccToSccSwitchMode,
1293 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1294 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_DEFAULT,
1295 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MIN,
1296 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MAX),
1297#endif
1298#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
1299 REG_VARIABLE(CFG_WLAN_AUTO_SHUTDOWN, WLAN_PARAM_Integer,
1300 struct hdd_config, WlanAutoShutdown,
1301 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1302 CFG_WLAN_AUTO_SHUTDOWN_DEFAULT,
1303 CFG_WLAN_AUTO_SHUTDOWN_MIN,
1304 CFG_WLAN_AUTO_SHUTDOWN_MAX),
1305#endif
1306#if defined WLAN_FEATURE_VOWIFI
1307 REG_VARIABLE(CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
1308 struct hdd_config, fRrmEnable,
1309 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1310 CFG_RRM_ENABLE_DEFAULT,
1311 CFG_RRM_ENABLE_MIN,
1312 CFG_RRM_ENABLE_MAX),
1313
1314 REG_VARIABLE(CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME,
1315 WLAN_PARAM_Integer,
1316 struct hdd_config, nInChanMeasMaxDuration,
1317 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1318 CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1319 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN,
1320 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX),
1321
1322 REG_VARIABLE(CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME,
1323 WLAN_PARAM_Integer,
1324 struct hdd_config, nOutChanMeasMaxDuration,
1325 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1326 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT,
1327 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN,
1328 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX),
1329
1330 REG_VARIABLE(CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
1331 struct hdd_config, nRrmRandnIntvl,
1332 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1333 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
1334 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
1335 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX),
1336#endif
1337
1338#ifdef WLAN_FEATURE_VOWIFI_11R
1339 REG_VARIABLE(CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
1340 struct hdd_config, fFTResourceReqSupported,
1341 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1342 CFG_FT_RESOURCE_REQ_DEFAULT,
1343 CFG_FT_RESOURCE_REQ_MIN,
1344 CFG_FT_RESOURCE_REQ_MAX),
1345#endif
1346
1347#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
1348 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME,
1349 WLAN_PARAM_Integer,
1350 struct hdd_config, nNeighborScanPeriod,
1351 VAR_FLAGS_OPTIONAL |
1352 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1353 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
1354 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
1355 CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX,
1356 cb_notify_set_neighbor_scan_period, 0),
1357
1358 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME,
1359 WLAN_PARAM_Integer,
1360 struct hdd_config, nNeighborLookupRssiThreshold,
1361 VAR_FLAGS_OPTIONAL |
1362 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1363 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
1364 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
1365 CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX,
1366 cb_notify_set_neighbor_lookup_rssi_threshold, 0),
1367
1368 REG_DYNAMIC_VARIABLE(CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME,
1369 WLAN_PARAM_Integer,
1370 struct hdd_config, nOpportunisticThresholdDiff,
1371 VAR_FLAGS_OPTIONAL |
1372 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1373 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT,
1374 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN,
1375 CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX,
1376 cb_notify_set_opportunistic_scan_threshold_diff, 0),
1377
1378 REG_DYNAMIC_VARIABLE(CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
1379 struct hdd_config, nRoamRescanRssiDiff,
1380 VAR_FLAGS_OPTIONAL |
1381 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1382 CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT,
1383 CFG_ROAM_RESCAN_RSSI_DIFF_MIN,
1384 CFG_ROAM_RESCAN_RSSI_DIFF_MAX,
1385 cb_notify_set_roam_rescan_rssi_diff, 0),
1386
1387 REG_VARIABLE_STRING(CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
1388 struct hdd_config, neighborScanChanList,
1389 VAR_FLAGS_OPTIONAL,
1390 (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT),
1391
1392 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME,
1393 WLAN_PARAM_Integer,
1394 struct hdd_config, nNeighborScanMinChanTime,
1395 VAR_FLAGS_OPTIONAL |
1396 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1397 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
1398 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
1399 CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX,
1400 cb_notify_set_neighbor_scan_min_chan_time, 0),
1401
1402 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME,
1403 WLAN_PARAM_Integer,
1404 struct hdd_config, nNeighborScanMaxChanTime,
1405 VAR_FLAGS_OPTIONAL |
1406 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1407 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
1408 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
1409 CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX,
1410 cb_notify_set_neighbor_scan_max_chan_time, 0),
1411
1412 REG_VARIABLE(CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
1413 struct hdd_config, nMaxNeighborReqTries,
1414 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1415 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
1416 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
1417 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),
1418
1419 REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME,
1420 WLAN_PARAM_Integer,
1421 struct hdd_config, nNeighborResultsRefreshPeriod,
1422 VAR_FLAGS_OPTIONAL |
1423 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1424 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
1425 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
1426 CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX,
1427 cb_notify_set_neighbor_results_refresh_period, 0),
1428
1429 REG_DYNAMIC_VARIABLE(CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME,
1430 WLAN_PARAM_Integer,
1431 struct hdd_config, nEmptyScanRefreshPeriod,
1432 VAR_FLAGS_OPTIONAL |
1433 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1434 CFG_EMPTY_SCAN_REFRESH_PERIOD_DEFAULT,
1435 CFG_EMPTY_SCAN_REFRESH_PERIOD_MIN,
1436 CFG_EMPTY_SCAN_REFRESH_PERIOD_MAX,
1437 cb_notify_set_empty_scan_refresh_period, 0),
1438
1439 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer,
1440 struct hdd_config, nRoamBmissFirstBcnt,
1441 VAR_FLAGS_OPTIONAL |
1442 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1443 CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT,
1444 CFG_ROAM_BMISS_FIRST_BCNT_MIN,
1445 CFG_ROAM_BMISS_FIRST_BCNT_MAX,
1446 cb_notify_set_roam_bmiss_first_bcnt, 0),
1447
1448 REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer,
1449 struct hdd_config, nRoamBmissFinalBcnt,
1450 VAR_FLAGS_OPTIONAL |
1451 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1452 CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT,
1453 CFG_ROAM_BMISS_FINAL_BCNT_MIN,
1454 CFG_ROAM_BMISS_FINAL_BCNT_MAX,
1455 cb_notify_set_roam_bmiss_final_bcnt, 0),
1456
1457 REG_DYNAMIC_VARIABLE(CFG_ROAM_BEACON_RSSI_WEIGHT_NAME,
1458 WLAN_PARAM_Integer,
1459 struct hdd_config, nRoamBeaconRssiWeight,
1460 VAR_FLAGS_OPTIONAL |
1461 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1462 CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT,
1463 CFG_ROAM_BEACON_RSSI_WEIGHT_MIN,
1464 CFG_ROAM_BEACON_RSSI_WEIGHT_MAX,
1465 cb_notify_set_roam_beacon_rssi_weight, 0),
1466
1467 REG_DYNAMIC_VARIABLE(CFG_ROAMING_DFS_CHANNEL_NAME, WLAN_PARAM_Integer,
1468 struct hdd_config, allowDFSChannelRoam,
1469 VAR_FLAGS_OPTIONAL |
1470 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1471 CFG_ROAMING_DFS_CHANNEL_DEFAULT,
1472 CFG_ROAMING_DFS_CHANNEL_MIN,
1473 CFG_ROAMING_DFS_CHANNEL_MAX,
1474 cb_notify_set_dfs_scan_mode, 0),
1475
1476 REG_DYNAMIC_VARIABLE(CFG_DELAY_BEFORE_VDEV_STOP_NAME,
1477 WLAN_PARAM_Integer,
1478 struct hdd_config,
1479 delay_before_vdev_stop,
1480 VAR_FLAGS_OPTIONAL |
1481 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1482 CFG_DELAY_BEFORE_VDEV_STOP_DEFAULT,
1483 CFG_DELAY_BEFORE_VDEV_STOP_MIN,
1484 CFG_DELAY_BEFORE_VDEV_STOP_MAX,
1485 cb_notify_set_delay_before_vdev_stop,
1486 0),
1487
1488 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_NAME,
1489 WLAN_PARAM_Integer,
1490 struct hdd_config,
1491 nhi_rssi_scan_max_count,
1492 VAR_FLAGS_OPTIONAL |
1493 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1494 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_DEFAULT,
1495 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MIN,
1496 CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MAX,
1497 cb_notify_set_roam_scan_hi_rssi_scan_params,
1498 eCSR_HI_RSSI_SCAN_MAXCOUNT_ID),
1499
1500 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELTA_NAME,
1501 WLAN_PARAM_Integer,
1502 struct hdd_config,
1503 nhi_rssi_scan_rssi_delta,
1504 VAR_FLAGS_OPTIONAL |
1505 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1506 CFG_ROAM_SCAN_HI_RSSI_DELTA_DEFAULT,
1507 CFG_ROAM_SCAN_HI_RSSI_DELTA_MIN,
1508 CFG_ROAM_SCAN_HI_RSSI_DELTA_MAX,
1509 cb_notify_set_roam_scan_hi_rssi_scan_params,
1510 eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID),
1511
1512 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELAY_NAME,
1513 WLAN_PARAM_Integer,
1514 struct hdd_config,
1515 nhi_rssi_scan_delay,
1516 VAR_FLAGS_OPTIONAL |
1517 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1518 CFG_ROAM_SCAN_HI_RSSI_DELAY_DEFAULT,
1519 CFG_ROAM_SCAN_HI_RSSI_DELAY_MIN,
1520 CFG_ROAM_SCAN_HI_RSSI_DELAY_MAX,
1521 cb_notify_set_roam_scan_hi_rssi_scan_params,
1522 eCSR_HI_RSSI_SCAN_DELAY_ID),
1523
1524 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_UB_NAME,
1525 WLAN_PARAM_SignedInteger,
1526 struct hdd_config,
1527 nhi_rssi_scan_rssi_ub,
1528 VAR_FLAGS_OPTIONAL |
1529 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1530 CFG_ROAM_SCAN_HI_RSSI_UB_DEFAULT,
1531 CFG_ROAM_SCAN_HI_RSSI_UB_MIN,
1532 CFG_ROAM_SCAN_HI_RSSI_UB_MAX,
1533 cb_notify_set_roam_scan_hi_rssi_scan_params,
1534 eCSR_HI_RSSI_SCAN_RSSI_UB_ID),
1535
1536#endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */
1537
1538 REG_VARIABLE(CFG_QOS_WMM_BURST_SIZE_DEFN_NAME, WLAN_PARAM_Integer,
1539 struct hdd_config, burstSizeDefinition,
1540 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1541 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
1542 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
1543 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX),
1544
1545 REG_VARIABLE(CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
1546 struct hdd_config, mcastBcastFilterSetting,
1547 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1548 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
1549 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
1550 CFG_MCAST_BCAST_FILTER_SETTING_MAX),
1551
1552 REG_VARIABLE(CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
1553 struct hdd_config, fhostArpOffload,
1554 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1555 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
1556 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
1557 CFG_ENABLE_HOST_ARPOFFLOAD_MAX),
1558
1559#ifdef FEATURE_WLAN_RA_FILTERING
1560 REG_VARIABLE(CFG_RA_FILTER_ENABLE_NAME, WLAN_PARAM_Integer,
1561 struct hdd_config, IsRArateLimitEnabled,
1562 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1563 CFG_RA_FILTER_ENABLE_DEFAULT,
1564 CFG_RA_FILTER_ENABLE_MIN,
1565 CFG_RA_FILTER_ENABLE_MAX),
1566
1567 REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
1568 struct hdd_config, RArateLimitInterval,
1569 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1570 CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT,
1571 CFG_RA_RATE_LIMIT_INTERVAL_MIN,
1572 CFG_RA_RATE_LIMIT_INTERVAL_MAX),
1573#endif
1574
1575 REG_VARIABLE(CFG_IGNORE_PEER_ERP_INFO_NAME, WLAN_PARAM_Integer,
1576 struct hdd_config, ignore_peer_erp_info,
1577 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1578 CFG_IGNORE_PEER_ERP_INFO_DEFAULT,
1579 CFG_IGNORE_PEER_ERP_INFO_MIN,
1580 CFG_IGNORE_PEER_ERP_INFO_MAX),
1581
1582 REG_VARIABLE(CFG_ENABLE_HOST_SSDP_NAME, WLAN_PARAM_Integer,
1583 struct hdd_config, ssdp,
1584 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1585 CFG_ENABLE_HOST_SSDP_DEFAULT,
1586 CFG_ENABLE_HOST_SSDP_MIN,
1587 CFG_ENABLE_HOST_SSDP_MAX),
1588
1589 REG_VARIABLE(CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer,
1590 struct hdd_config, fhostNSOffload,
1591 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1592 CFG_ENABLE_HOST_NSOFFLOAD_DEFAULT,
1593 CFG_ENABLE_HOST_NSOFFLOAD_MIN,
1594 CFG_ENABLE_HOST_NSOFFLOAD_MAX),
1595
1596 REG_VARIABLE(CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME, WLAN_PARAM_HexInteger,
1597 struct hdd_config, tsInfoAckPolicy,
1598 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1599 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
1600 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
1601 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX),
1602
1603 REG_VARIABLE(CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
1604 struct hdd_config, bSingleTidRc,
1605 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1606 CFG_SINGLE_TID_RC_DEFAULT,
1607 CFG_SINGLE_TID_RC_MIN,
1608 CFG_SINGLE_TID_RC_MAX),
1609
1610 REG_VARIABLE(CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
1611 struct hdd_config, dynamicPsPollValue,
1612 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1613 CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
1614 CFG_DYNAMIC_PSPOLL_VALUE_MIN,
1615 CFG_DYNAMIC_PSPOLL_VALUE_MAX),
1616
1617 REG_VARIABLE(CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
1618 struct hdd_config, teleBcnWakeupEn,
1619 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1620 CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
1621 CFG_TELE_BCN_WAKEUP_EN_MIN,
1622 CFG_TELE_BCN_WAKEUP_EN_MAX),
1623
1624 REG_VARIABLE(CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
1625 struct hdd_config, infraStaKeepAlivePeriod,
1626 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1627 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
1628 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
1629 CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),
1630
1631 REG_VARIABLE(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME, WLAN_PARAM_Integer,
1632 struct hdd_config, AddTSWhenACMIsOff,
1633 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1634 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
1635 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
1636 CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX),
1637
1638 REG_VARIABLE(CFG_VALIDATE_SCAN_LIST_NAME, WLAN_PARAM_Integer,
1639 struct hdd_config, fValidateScanList,
1640 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1641 CFG_VALIDATE_SCAN_LIST_DEFAULT,
1642 CFG_VALIDATE_SCAN_LIST_MIN,
1643 CFG_VALIDATE_SCAN_LIST_MAX),
1644
1645 REG_VARIABLE(CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
1646 struct hdd_config, nNullDataApRespTimeout,
1647 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1648 CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
1649 CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
1650 CFG_NULLDATA_AP_RESP_TIMEOUT_MAX),
1651
1652 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1653 struct hdd_config, apDataAvailPollPeriodInMs,
1654 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1655 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1656 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1657 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1658
1659 REG_VARIABLE(CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
1660 struct hdd_config, nBandCapability,
1661 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1662 CFG_BAND_CAPABILITY_DEFAULT,
1663 CFG_BAND_CAPABILITY_MIN,
1664 CFG_BAND_CAPABILITY_MAX),
1665
1666 REG_VARIABLE(CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME,
1667 WLAN_PARAM_Integer,
1668 struct hdd_config, fEnableBeaconEarlyTermination,
1669 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1670 CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
1671 CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
1672 CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX),
1673
1674/* CFG_CDF_TRACE_ENABLE Parameters */
1675 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
1676 struct hdd_config, cdf_trace_enable_wdi,
1677 VAR_FLAGS_OPTIONAL,
1678 CFG_CDF_TRACE_ENABLE_DEFAULT,
1679 CFG_CDF_TRACE_ENABLE_MIN,
1680 CFG_CDF_TRACE_ENABLE_MAX),
1681
1682 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
1683 struct hdd_config, cdf_trace_enable_hdd,
1684 VAR_FLAGS_OPTIONAL,
1685 CFG_CDF_TRACE_ENABLE_DEFAULT,
1686 CFG_CDF_TRACE_ENABLE_MIN,
1687 CFG_CDF_TRACE_ENABLE_MAX),
1688
1689 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_BMI_NAME, WLAN_PARAM_Integer,
1690 struct hdd_config, cdf_trace_enable_bmi,
1691 VAR_FLAGS_OPTIONAL,
1692 CFG_CDF_TRACE_ENABLE_DEFAULT,
1693 CFG_CDF_TRACE_ENABLE_MIN,
1694 CFG_CDF_TRACE_ENABLE_MAX),
1695
1696 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
1697 struct hdd_config, cdf_trace_enable_sme,
1698 VAR_FLAGS_OPTIONAL,
1699 CFG_CDF_TRACE_ENABLE_DEFAULT,
1700 CFG_CDF_TRACE_ENABLE_MIN,
1701 CFG_CDF_TRACE_ENABLE_MAX),
1702
1703 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
1704 struct hdd_config, cdf_trace_enable_pe,
1705 VAR_FLAGS_OPTIONAL,
1706 CFG_CDF_TRACE_ENABLE_DEFAULT,
1707 CFG_CDF_TRACE_ENABLE_MIN,
1708 CFG_CDF_TRACE_ENABLE_MAX),
1709
1710 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_WMA_NAME, WLAN_PARAM_Integer,
1711 struct hdd_config, cdf_trace_enable_wma,
1712 VAR_FLAGS_OPTIONAL,
1713 CFG_CDF_TRACE_ENABLE_DEFAULT,
1714 CFG_CDF_TRACE_ENABLE_MIN,
1715 CFG_CDF_TRACE_ENABLE_MAX),
1716
1717 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
1718 struct hdd_config, cdf_trace_enable_sys,
1719 VAR_FLAGS_OPTIONAL,
1720 CFG_CDF_TRACE_ENABLE_DEFAULT,
1721 CFG_CDF_TRACE_ENABLE_MIN,
1722 CFG_CDF_TRACE_ENABLE_MAX),
1723
1724 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_CDF_NAME, WLAN_PARAM_Integer,
1725 struct hdd_config, cdf_trace_enable_cdf,
1726 VAR_FLAGS_OPTIONAL,
1727 CFG_CDF_TRACE_ENABLE_DEFAULT,
1728 CFG_CDF_TRACE_ENABLE_MIN,
1729 CFG_CDF_TRACE_ENABLE_MAX),
1730
1731 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
1732 struct hdd_config, cdf_trace_enable_sap,
1733 VAR_FLAGS_OPTIONAL,
1734 CFG_CDF_TRACE_ENABLE_DEFAULT,
1735 CFG_CDF_TRACE_ENABLE_MIN,
1736 CFG_CDF_TRACE_ENABLE_MAX),
1737
1738 REG_VARIABLE(CFG_CDF_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
1739 struct hdd_config, cdf_trace_enable_hdd_sap,
1740 VAR_FLAGS_OPTIONAL,
1741 CFG_CDF_TRACE_ENABLE_DEFAULT,
1742 CFG_CDF_TRACE_ENABLE_MIN,
1743 CFG_CDF_TRACE_ENABLE_MAX),
1744
1745 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
1746 struct hdd_config, nTeleBcnTransListenInterval,
1747 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1748 CFG_TELE_BCN_TRANS_LI_DEFAULT,
1749 CFG_TELE_BCN_TRANS_LI_MIN,
1750 CFG_TELE_BCN_TRANS_LI_MAX),
1751
1752 REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME,
1753 WLAN_PARAM_Integer,
1754 struct hdd_config, nTeleBcnTransLiNumIdleBeacons,
1755 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1756 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
1757 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
1758 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX),
1759
1760 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
1761 struct hdd_config, nTeleBcnMaxListenInterval,
1762 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1763 CFG_TELE_BCN_MAX_LI_DEFAULT,
1764 CFG_TELE_BCN_MAX_LI_MIN,
1765 CFG_TELE_BCN_MAX_LI_MAX),
1766
1767 REG_VARIABLE(CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
1768 struct hdd_config, nTeleBcnMaxLiNumIdleBeacons,
1769 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1770 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
1771 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
1772 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX),
1773
1774 REG_VARIABLE(CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer,
1775 struct hdd_config, bcnEarlyTermWakeInterval,
1776 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1777 CFG_BCN_EARLY_TERM_WAKE_DEFAULT,
1778 CFG_BCN_EARLY_TERM_WAKE_MIN,
1779 CFG_BCN_EARLY_TERM_WAKE_MAX),
1780
1781 REG_VARIABLE(CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
1782 struct hdd_config, apDataAvailPollPeriodInMs,
1783 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1784 CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
1785 CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
1786 CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX),
1787
1788 REG_VARIABLE(CFG_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer,
1789 struct hdd_config, enableCloseLoop,
1790 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1791 CFG_ENABLE_CLOSE_LOOP_DEFAULT,
1792 CFG_ENABLE_CLOSE_LOOP_MIN,
1793 CFG_ENABLE_CLOSE_LOOP_MAX),
1794
1795 REG_VARIABLE(CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
1796 struct hdd_config, enableBypass11d,
1797 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1798 CFG_ENABLE_BYPASS_11D_DEFAULT,
1799 CFG_ENABLE_BYPASS_11D_MIN,
1800 CFG_ENABLE_BYPASS_11D_MAX),
1801
1802 REG_VARIABLE(CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1803 struct hdd_config, enableDFSChnlScan,
1804 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1805 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
1806 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
1807 CFG_ENABLE_DFS_CHNL_SCAN_MAX),
1808
1809 REG_VARIABLE(CFG_ENABLE_DFS_PNO_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
1810 struct hdd_config, enable_dfs_pno_chnl_scan,
1811 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1812 CFG_ENABLE_DFS_PNO_CHNL_SCAN_DEFAULT,
1813 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MIN,
1814 CFG_ENABLE_DFS_PNO_CHNL_SCAN_MAX),
1815
1816 REG_VARIABLE(CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
1817 struct hdd_config, enableDynamicDTIM,
1818 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1819 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
1820 CFG_ENABLE_DYNAMIC_DTIM_MIN,
1821 CFG_ENABLE_DYNAMIC_DTIM_MAX),
1822
1823 REG_VARIABLE(CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME,
1824 WLAN_PARAM_Integer,
1825 struct hdd_config, enableAutomaticTxPowerControl,
1826 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1827 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT,
1828 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN,
1829 CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX),
1830
1831 REG_VARIABLE(CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
1832 struct hdd_config, ShortGI40MhzEnable,
1833 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1834 CFG_SHORT_GI_40MHZ_DEFAULT,
1835 CFG_SHORT_GI_40MHZ_MIN,
1836 CFG_SHORT_GI_40MHZ_MAX),
1837
1838 REG_DYNAMIC_VARIABLE(CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
1839 struct hdd_config, reportMaxLinkSpeed,
1840 VAR_FLAGS_OPTIONAL |
1841 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1842 CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
1843 CFG_REPORT_MAX_LINK_SPEED_MIN,
1844 CFG_REPORT_MAX_LINK_SPEED_MAX,
1845 NULL, 0),
1846
1847 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
1848 struct hdd_config, linkSpeedRssiHigh,
1849 VAR_FLAGS_OPTIONAL |
1850 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1851 CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
1852 CFG_LINK_SPEED_RSSI_HIGH_MIN,
1853 CFG_LINK_SPEED_RSSI_HIGH_MAX,
1854 NULL, 0),
1855
1856 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger,
1857 struct hdd_config, linkSpeedRssiMid,
1858 VAR_FLAGS_OPTIONAL |
1859 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1860 CFG_LINK_SPEED_RSSI_MID_DEFAULT,
1861 CFG_LINK_SPEED_RSSI_MID_MIN,
1862 CFG_LINK_SPEED_RSSI_MID_MAX,
1863 NULL, 0),
1864
1865 REG_DYNAMIC_VARIABLE(CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
1866 struct hdd_config, linkSpeedRssiLow,
1867 VAR_FLAGS_OPTIONAL |
1868 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1869 CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
1870 CFG_LINK_SPEED_RSSI_LOW_MIN,
1871 CFG_LINK_SPEED_RSSI_LOW_MAX,
1872 NULL, 0),
1873
1874#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
1875 REG_DYNAMIC_VARIABLE(CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
1876 struct hdd_config, nRoamPrefer5GHz,
1877 VAR_FLAGS_OPTIONAL |
1878 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1879 CFG_ROAM_PREFER_5GHZ_DEFAULT,
1880 CFG_ROAM_PREFER_5GHZ_MIN,
1881 CFG_ROAM_PREFER_5GHZ_MAX,
1882 cb_notify_set_roam_prefer5_g_hz, 0),
1883
1884 REG_DYNAMIC_VARIABLE(CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer,
1885 struct hdd_config, nRoamIntraBand,
1886 VAR_FLAGS_OPTIONAL |
1887 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1888 CFG_ROAM_INTRA_BAND_DEFAULT,
1889 CFG_ROAM_INTRA_BAND_MIN,
1890 CFG_ROAM_INTRA_BAND_MAX,
1891 cb_notify_set_roam_intra_band, 0),
1892
1893 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer,
1894 struct hdd_config, nProbes,
1895 VAR_FLAGS_OPTIONAL |
1896 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1897 CFG_ROAM_SCAN_N_PROBES_DEFAULT,
1898 CFG_ROAM_SCAN_N_PROBES_MIN,
1899 CFG_ROAM_SCAN_N_PROBES_MAX,
1900 cb_notify_set_roam_scan_n_probes, 0),
1901
1902 REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer,
1903 struct hdd_config, nRoamScanHomeAwayTime,
1904 VAR_FLAGS_OPTIONAL |
1905 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1906 CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT,
1907 CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN,
1908 CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX,
1909 cb_notify_set_roam_scan_home_away_time, 0),
1910
1911#endif
1912
1913 REG_VARIABLE(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME,
1914 WLAN_PARAM_Integer,
1915 struct hdd_config, isP2pDeviceAddrAdministrated,
1916 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1917 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
1918 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
1919 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX),
1920
1921 REG_VARIABLE(CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
1922 struct hdd_config, enableMCC,
1923 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1924 CFG_ENABLE_MCC_ENABLED_DEFAULT,
1925 CFG_ENABLE_MCC_ENABLED_MIN,
1926 CFG_ENABLE_MCC_ENABLED_MAX),
1927
1928 REG_VARIABLE(CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
1929 struct hdd_config, allowMCCGODiffBI,
1930 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1931 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
1932 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
1933 CFG_ALLOW_MCC_GO_DIFF_BI_MAX),
1934
1935 REG_VARIABLE(CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
1936 struct hdd_config, thermalMitigationEnable,
1937 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1938 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
1939 CFG_THERMAL_MIGRATION_ENABLE_MIN,
1940 CFG_THERMAL_MIGRATION_ENABLE_MAX),
1941
1942 REG_VARIABLE(CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer,
1943 struct hdd_config, throttlePeriod,
1944 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1945 CFG_THROTTLE_PERIOD_DEFAULT,
1946 CFG_THROTTLE_PERIOD_MIN,
1947 CFG_THROTTLE_PERIOD_MAX),
1948
1949 REG_VARIABLE(CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
1950 struct hdd_config, enableModulatedDTIM,
1951 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1952 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
1953 CFG_ENABLE_MODULATED_DTIM_MIN,
1954 CFG_ENABLE_MODULATED_DTIM_MAX),
1955
1956 REG_VARIABLE(CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
1957 struct hdd_config, fEnableMCAddrList,
1958 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
1959 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
1960 CFG_MC_ADDR_LIST_ENABLE_MIN,
1961 CFG_MC_ADDR_LIST_ENABLE_MAX),
1962
1963#ifdef WLAN_FEATURE_11AC
1964 REG_VARIABLE(CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
1965 struct hdd_config, vhtChannelWidth,
1966 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1967 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
1968 CFG_VHT_CHANNEL_WIDTH_MIN,
1969 CFG_VHT_CHANNEL_WIDTH_MAX),
1970
1971 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
1972 struct hdd_config, vhtRxMCS,
1973 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1974 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
1975 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
1976 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),
1977
1978 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
1979 struct hdd_config, vhtTxMCS,
1980 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1981 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
1982 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
1983 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),
1984
1985 REG_VARIABLE(CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer,
1986 struct hdd_config, vhtRxMCS2x2,
1987 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1988 CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT,
1989 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN,
1990 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX),
1991
1992 REG_VARIABLE(CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer,
1993 struct hdd_config, vhtTxMCS2x2,
1994 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
1995 CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT,
1996 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN,
1997 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX),
1998
1999 REG_VARIABLE(CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer,
2000 struct hdd_config, enable2x2,
2001 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2002 CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT,
2003 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
2004 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX),
2005
2006 REG_VARIABLE(CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2007 struct hdd_config, enableMuBformee,
2008 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2009 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT,
2010 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN,
2011 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX),
2012
2013 REG_VARIABLE(CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer,
2014 struct hdd_config, enableVhtpAid,
2015 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2016 CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT,
2017 CFG_VHT_ENABLE_PAID_FEATURE_MIN,
2018 CFG_VHT_ENABLE_PAID_FEATURE_MAX),
2019
2020 REG_VARIABLE(CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer,
2021 struct hdd_config, enableVhtGid,
2022 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2023 CFG_VHT_ENABLE_GID_FEATURE_DEFAULT,
2024 CFG_VHT_ENABLE_GID_FEATURE_MIN,
2025 CFG_VHT_ENABLE_GID_FEATURE_MAX),
2026#endif
2027
2028 REG_VARIABLE(CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer,
2029 struct hdd_config, txchainmask1x1,
2030 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2031 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT,
2032 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN,
2033 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX),
2034
2035 REG_VARIABLE(CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer,
2036 struct hdd_config, rxchainmask1x1,
2037 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2038 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT,
2039 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN,
2040 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX),
2041
2042 REG_VARIABLE(CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer,
2043 struct hdd_config, enableAmpduPs,
2044 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2045 CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT,
2046 CFG_ENABLE_AMPDUPS_FEATURE_MIN,
2047 CFG_ENABLE_AMPDUPS_FEATURE_MAX),
2048
2049 REG_VARIABLE(CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2050 struct hdd_config, enableHtSmps,
2051 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2052 CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT,
2053 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN,
2054 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX),
2055
2056 REG_VARIABLE(CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
2057 struct hdd_config, htSmps,
2058 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2059 CFG_HT_SMPS_CAP_FEATURE_DEFAULT,
2060 CFG_HT_SMPS_CAP_FEATURE_MIN,
2061 CFG_HT_SMPS_CAP_FEATURE_MAX),
2062
2063 REG_VARIABLE(CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
2064 struct hdd_config, disableDFSChSwitch,
2065 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2066 CFG_DISABLE_DFS_CH_SWITCH_DEFAULT,
2067 CFG_DISABLE_DFS_CH_SWITCH_MIN,
2068 CFG_DISABLE_DFS_CH_SWITCH_MAX),
2069
2070 REG_VARIABLE(CFG_ENABLE_DFS_MASTER_CAPABILITY, WLAN_PARAM_Integer,
2071 struct hdd_config, enableDFSMasterCap,
2072 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2073 CFG_ENABLE_DFS_MASTER_CAPABILITY_DEFAULT,
2074 CFG_ENABLE_DFS_MASTER_CAPABILITY_MIN,
2075 CFG_ENABLE_DFS_MASTER_CAPABILITY_MAX),
2076
2077 REG_DYNAMIC_VARIABLE(CFG_SAP_PREFERRED_CHANNEL_LOCATION,
2078 WLAN_PARAM_Integer,
2079 struct hdd_config, gSapPreferredChanLocation,
2080 VAR_FLAGS_OPTIONAL |
2081 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2082 CFG_SAP_PREFERRED_CHANNEL_LOCATION_DEFAULT,
2083 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MIN,
2084 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MAX,
2085 cb_notify_set_g_sap_preferred_chan_location, 0),
2086 REG_DYNAMIC_VARIABLE(CFG_DISABLE_DFS_JAPAN_W53, WLAN_PARAM_Integer,
2087 struct hdd_config, gDisableDfsJapanW53,
2088 VAR_FLAGS_OPTIONAL |
2089 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2090 CFG_DISABLE_DFS_JAPAN_W53_DEFAULT,
2091 CFG_DISABLE_DFS_JAPAN_W53_MIN,
2092 CFG_DISABLE_DFS_JAPAN_W53_MAX,
2093 ch_notify_set_g_disable_dfs_japan_w53, 0),
2094 REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
2095 struct hdd_config, enableFirstScan2GOnly,
2096 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2097 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
2098 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
2099 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX),
2100
2101 REG_VARIABLE(CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
2102 struct hdd_config, skipDfsChnlInP2pSearch,
2103 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2104 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
2105 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
2106 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX),
2107
2108 REG_VARIABLE(CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME,
2109 WLAN_PARAM_Integer,
2110 struct hdd_config, ignoreDynamicDtimInP2pMode,
2111 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2112 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
2113 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
2114 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX),
2115
2116 REG_VARIABLE(CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
2117 struct hdd_config, enableRxSTBC,
2118 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2119 CFG_ENABLE_RX_STBC_DEFAULT,
2120 CFG_ENABLE_RX_STBC_MIN,
2121 CFG_ENABLE_RX_STBC_MAX),
2122
2123 REG_VARIABLE(CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer,
2124 struct hdd_config, enableTxSTBC,
2125 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2126 CFG_ENABLE_TX_STBC_DEFAULT,
2127 CFG_ENABLE_TX_STBC_MIN,
2128 CFG_ENABLE_TX_STBC_MAX),
2129
2130 REG_VARIABLE(CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer,
2131 struct hdd_config, enableRxLDPC,
2132 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2133 CFG_ENABLE_RX_LDPC_DEFAULT,
2134 CFG_ENABLE_RX_LDPC_MIN,
2135 CFG_ENABLE_RX_LDPC_MAX),
2136
2137 REG_VARIABLE(CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer,
2138 struct hdd_config, enable5gEBT,
2139 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2140 CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT,
2141 CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN,
2142 CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX),
2143
2144#ifdef FEATURE_WLAN_TDLS
2145 REG_VARIABLE(CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2146 struct hdd_config, fEnableTDLSSupport,
2147 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2148 CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
2149 CFG_TDLS_SUPPORT_ENABLE_MIN,
2150 CFG_TDLS_SUPPORT_ENABLE_MAX),
2151
2152 REG_VARIABLE(CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer,
2153 struct hdd_config, fEnableTDLSImplicitTrigger,
2154 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2155 CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT,
2156 CFG_TDLS_IMPLICIT_TRIGGER_MIN,
2157 CFG_TDLS_IMPLICIT_TRIGGER_MAX),
2158
2159 REG_VARIABLE(CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer,
2160 struct hdd_config, fTDLSTxStatsPeriod,
2161 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2162 CFG_TDLS_TX_STATS_PERIOD_DEFAULT,
2163 CFG_TDLS_TX_STATS_PERIOD_MIN,
2164 CFG_TDLS_TX_STATS_PERIOD_MAX),
2165
2166 REG_VARIABLE(CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2167 struct hdd_config, fTDLSTxPacketThreshold,
2168 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2169 CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT,
2170 CFG_TDLS_TX_PACKET_THRESHOLD_MIN,
2171 CFG_TDLS_TX_PACKET_THRESHOLD_MAX),
2172
2173 REG_VARIABLE(CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
2174 struct hdd_config, fTDLSMaxDiscoveryAttempt,
2175 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2176 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT,
2177 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN,
2178 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX),
2179
2180 REG_VARIABLE(CFG_TDLS_IDLE_PACKET_THRESHOLD, WLAN_PARAM_Integer,
2181 struct hdd_config, fTDLSIdlePacketThreshold,
2182 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2183 CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT,
2184 CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN,
2185 CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX),
2186
2187 REG_VARIABLE(CFG_TDLS_RSSI_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger,
2188 struct hdd_config, fTDLSRSSITriggerThreshold,
2189 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2190 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT,
2191 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN,
2192 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX),
2193
2194 REG_VARIABLE(CFG_TDLS_RSSI_TEARDOWN_THRESHOLD, WLAN_PARAM_SignedInteger,
2195 struct hdd_config, fTDLSRSSITeardownThreshold,
2196 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2197 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT,
2198 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN,
2199 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX),
2200
2201 REG_VARIABLE(CFG_TDLS_RSSI_DELTA, WLAN_PARAM_SignedInteger,
2202 struct hdd_config, fTDLSRSSIDelta,
2203 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2204 CFG_TDLS_RSSI_DELTA_DEFAULT,
2205 CFG_TDLS_RSSI_DELTA_MIN,
2206 CFG_TDLS_RSSI_DELTA_MAX),
2207
2208 REG_VARIABLE(CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME, WLAN_PARAM_HexInteger,
2209 struct hdd_config, fTDLSUapsdMask,
2210 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2211 CFG_TDLS_QOS_WMM_UAPSD_MASK_DEFAULT,
2212 CFG_TDLS_QOS_WMM_UAPSD_MASK_MIN,
2213 CFG_TDLS_QOS_WMM_UAPSD_MASK_MAX),
2214
2215 REG_VARIABLE(CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2216 struct hdd_config, fEnableTDLSBufferSta,
2217 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2218 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT,
2219 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN,
2220 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX),
2221
2222 REG_VARIABLE(CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2223 struct hdd_config, fEnableTDLSOffChannel,
2224 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2225 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT,
2226 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN,
2227 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX),
2228
2229 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM, WLAN_PARAM_Integer,
2230 struct hdd_config, fTDLSPrefOffChanNum,
2231 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2232 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEFAULT,
2233 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN,
2234 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX),
2235
2236 REG_VARIABLE(CFG_TDLS_PREFERRED_OFF_CHANNEL_BW, WLAN_PARAM_Integer,
2237 struct hdd_config, fTDLSPrefOffChanBandwidth,
2238 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2239 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_DEFAULT,
2240 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MIN,
2241 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MAX),
2242
2243 REG_VARIABLE(CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer,
2244 struct hdd_config, fTDLSPuapsdInactivityTimer,
2245 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2246 CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT,
2247 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN,
2248 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX),
2249
2250 REG_VARIABLE(CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer,
2251 struct hdd_config, fTDLSRxFrameThreshold,
2252 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2253 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT,
2254 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN,
2255 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX),
2256
2257 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW,
2258 WLAN_PARAM_Integer,
2259 struct hdd_config, fTDLSPuapsdPTIWindow,
2260 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2261 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_DEFAULT,
2262 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MIN,
2263 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MAX),
2264
2265 REG_VARIABLE(CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT,
2266 WLAN_PARAM_Integer,
2267 struct hdd_config, fTDLSPuapsdPTRTimeout,
2268 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2269 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_DEFAULT,
2270 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MIN,
2271 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MAX),
2272
2273 REG_VARIABLE(CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer,
2274 struct hdd_config, fTDLSExternalControl,
2275 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2276 CFG_TDLS_EXTERNAL_CONTROL_DEFAULT,
2277 CFG_TDLS_EXTERNAL_CONTROL_MIN,
2278 CFG_TDLS_EXTERNAL_CONTROL_MAX),
2279 REG_VARIABLE(CFG_TDLS_WMM_MODE_ENABLE, WLAN_PARAM_Integer,
2280 struct hdd_config, fEnableTDLSWmmMode,
2281 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2282 CFG_TDLS_WMM_MODE_ENABLE_DEFAULT,
2283 CFG_TDLS_WMM_MODE_ENABLE_MIN,
2284 CFG_TDLS_WMM_MODE_ENABLE_MAX),
2285
2286 REG_VARIABLE(CFG_TDLS_SCAN_ENABLE, WLAN_PARAM_Integer,
2287 struct hdd_config, enable_tdls_scan,
2288 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2289 CFG_TDLS_SCAN_ENABLE_DEFAULT,
2290 CFG_TDLS_SCAN_ENABLE_MIN,
2291 CFG_TDLS_SCAN_ENABLE_MAX),
2292#endif
2293
2294#ifdef WLAN_SOFTAP_VSTA_FEATURE
2295 REG_VARIABLE(CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
2296 struct hdd_config, fEnableVSTASupport,
2297 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2298 CFG_VSTA_SUPPORT_ENABLE_DEFAULT,
2299 CFG_VSTA_SUPPORT_ENABLE_MIN,
2300 CFG_VSTA_SUPPORT_ENABLE_MAX),
2301#endif
2302 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2303 struct hdd_config, enableLpwrImgTransition,
2304 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2305 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2306 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2307 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2308
2309 REG_VARIABLE(CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
2310 struct hdd_config, enableLpwrImgTransition,
2311 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2312 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
2313 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
2314 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX),
2315
2316 REG_VARIABLE(CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer,
2317 struct hdd_config, scanAgingTimeout,
2318 VAR_FLAGS_OPTIONAL,
2319 CFG_SCAN_AGING_PARAM_DEFAULT,
2320 CFG_SCAN_AGING_PARAM_MIN,
2321 CFG_SCAN_AGING_PARAM_MAX),
2322
2323 REG_VARIABLE(CFG_TX_LDPC_ENABLE_FEATURE, WLAN_PARAM_Integer,
2324 struct hdd_config, enableTxLdpc,
2325 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2326 CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT,
2327 CFG_TX_LDPC_ENABLE_FEATURE_MIN,
2328 CFG_TX_LDPC_ENABLE_FEATURE_MAX),
2329
2330 REG_VARIABLE(CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_NAME,
2331 WLAN_PARAM_Integer,
2332 struct hdd_config, enableMCCAdaptiveScheduler,
2333 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2334 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT,
2335 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN,
2336 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX),
2337
2338 REG_VARIABLE(CFG_ANDRIOD_POWER_SAVE_NAME, WLAN_PARAM_Integer,
2339 struct hdd_config, isAndroidPsEn,
2340 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2341 CFG_ANDRIOD_POWER_SAVE_DEFAULT,
2342 CFG_ANDRIOD_POWER_SAVE_MIN,
2343 CFG_ANDRIOD_POWER_SAVE_MAX),
2344
2345 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_5GHZ_NAME, WLAN_PARAM_Integer,
2346 struct hdd_config, AdHocChannel5G,
2347 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2348 CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT,
2349 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN,
2350 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX),
2351
2352 REG_VARIABLE(CFG_IBSS_ADHOC_CHANNEL_24GHZ_NAME, WLAN_PARAM_Integer,
2353 struct hdd_config, AdHocChannel24G,
2354 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2355 CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT,
2356 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN,
2357 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX),
2358
2359 REG_VARIABLE(CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
2360 struct hdd_config, enableTxBF,
2361 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2362 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT,
2363 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
2364 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX),
2365
2366 REG_VARIABLE(CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
2367 struct hdd_config, enableTxBFin20MHz,
2368 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2369 CFG_VHT_ENABLE_TXBF_IN_20MHZ_DEFAULT,
2370 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MIN,
2371 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MAX),
2372
2373 REG_VARIABLE(CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, WLAN_PARAM_Integer,
2374 struct hdd_config, txBFCsnValue,
2375 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2376 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT,
2377 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN,
2378 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX),
2379
2380 REG_VARIABLE(CFG_VHT_ENABLE_TX_SU_BEAM_FORMER, WLAN_PARAM_Integer,
2381 struct hdd_config, enable_su_tx_bformer,
2382 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2383 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_DEFAULT,
2384 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MIN,
2385 CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MAX),
2386
2387 REG_VARIABLE(CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
2388 struct hdd_config, sapAllowAllChannel,
2389 VAR_FLAGS_OPTIONAL,
2390 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT,
2391 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN,
2392 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX),
2393
2394#ifdef WLAN_FEATURE_11AC
2395 REG_VARIABLE(CFG_DISABLE_LDPC_WITH_TXBF_AP, WLAN_PARAM_Integer,
2396 struct hdd_config, disableLDPCWithTxbfAP,
2397 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2398 CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT,
2399 CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN,
2400 CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX),
2401#endif
2402
2403 REG_DYNAMIC_VARIABLE(CFG_ENABLE_SSR, WLAN_PARAM_Integer,
2404 struct hdd_config, enableSSR,
2405 VAR_FLAGS_OPTIONAL |
2406 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2407 CFG_ENABLE_SSR_DEFAULT,
2408 CFG_ENABLE_SSR_MIN,
2409 CFG_ENABLE_SSR_MAX,
2410 cb_notify_set_enable_ssr, 0),
2411
2412 REG_VARIABLE(CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer,
2413 struct hdd_config, cfgMaxMediumTime,
2414 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2415 CFG_MAX_MEDIUM_TIME_STADEFAULT,
2416 CFG_MAX_MEDIUM_TIME_STAMIN,
2417 CFG_MAX_MEDIUM_TIME_STAMAX),
2418
2419
2420
2421#ifdef WLAN_FEATURE_11AC
2422 REG_VARIABLE(CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
2423 struct hdd_config, enableVhtFor24GHzBand,
2424 VAR_FLAGS_OPTIONAL,
2425 CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT,
2426 CFG_ENABLE_VHT_FOR_24GHZ_MIN,
2427 CFG_ENABLE_VHT_FOR_24GHZ_MAX),
2428#endif
2429
2430 REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
2431 WLAN_PARAM_Integer,
2432 struct hdd_config, bFastRoamInConIniFeatureEnabled,
2433 VAR_FLAGS_OPTIONAL |
2434 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2435 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT,
2436 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN,
2437 CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX,
2438 cb_notify_set_enable_fast_roam_in_concurrency, 0),
2439
2440 REG_VARIABLE(CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer,
2441 struct hdd_config, fEnableAdaptRxDrain,
2442 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2443 CFG_ENABLE_ADAPT_RX_DRAIN_DEFAULT,
2444 CFG_ENABLE_ADAPT_RX_DRAIN_MIN,
2445 CFG_ENABLE_ADAPT_RX_DRAIN_MAX),
2446
2447 REG_VARIABLE(CFG_FLEX_CONNECT_POWER_FACTOR_NAME, WLAN_PARAM_Integer,
2448 struct hdd_config, flexConnectPowerFactor,
2449 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_MINMAX,
2450 CFG_FLEX_CONNECT_POWER_FACTOR_DEFAULT,
2451 CFG_FLEX_CONNECT_POWER_FACTOR_MIN,
2452 CFG_FLEX_CONNECT_POWER_FACTOR_MAX),
2453
2454 REG_VARIABLE(CFG_ENABLE_HEART_BEAT_OFFLOAD, WLAN_PARAM_Integer,
2455 struct hdd_config, enableIbssHeartBeatOffload,
2456 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2457 CFG_ENABLE_HEART_BEAT_OFFLOAD_DEFAULT,
2458 CFG_ENABLE_HEART_BEAT_OFFLOAD_MIN,
2459 CFG_ENABLE_HEART_BEAT_OFFLOAD_MAX),
2460
2461 REG_VARIABLE(CFG_ANTENNA_DIVERSITY_PARAM_NAME, WLAN_PARAM_Integer,
2462 struct hdd_config, antennaDiversity,
2463 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2464 CFG_ANTENNA_DIVERSITY_PARAM_DEFAULT,
2465 CFG_ANTENNA_DIVERSITY_PARAM_MIN,
2466 CFG_ANTENNA_DIVERSITY_PARAM_MAX),
2467
2468 REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
2469 struct hdd_config, fEnableSNRMonitoring,
2470 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2471 CFG_ENABLE_SNR_MONITORING_DEFAULT,
2472 CFG_ENABLE_SNR_MONITORING_MIN,
2473 CFG_ENABLE_SNR_MONITORING_MAX),
2474
2475#ifdef FEATURE_WLAN_SCAN_PNO
2476 REG_VARIABLE(CFG_PNO_SCAN_SUPPORT, WLAN_PARAM_Integer,
2477 struct hdd_config, configPNOScanSupport,
2478 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2479 CFG_PNO_SCAN_SUPPORT_DEFAULT,
2480 CFG_PNO_SCAN_SUPPORT_DISABLE,
2481 CFG_PNO_SCAN_SUPPORT_ENABLE),
2482
2483 REG_VARIABLE(CFG_PNO_SCAN_TIMER_REPEAT_VALUE, WLAN_PARAM_Integer,
2484 struct hdd_config, configPNOScanTimerRepeatValue,
2485 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2486 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_DEFAULT,
2487 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MIN,
2488 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MAX),
2489#endif
2490 REG_VARIABLE(CFG_AMSDU_SUPPORT_IN_AMPDU_NAME, WLAN_PARAM_Integer,
2491 struct hdd_config, isAmsduSupportInAMPDU,
2492 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2493 CFG_AMSDU_SUPPORT_IN_AMPDU_DEFAULT,
2494 CFG_AMSDU_SUPPORT_IN_AMPDU_MIN,
2495 CFG_AMSDU_SUPPORT_IN_AMPDU_MAX),
2496
2497 REG_VARIABLE(CFG_STRICT_5GHZ_PREF_BY_MARGIN, WLAN_PARAM_Integer,
2498 struct hdd_config, nSelect5GHzMargin,
2499 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2500 CFG_STRICT_5GHZ_PREF_BY_MARGIN_DEFAULT,
2501 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MIN,
2502 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MAX),
2503
2504 REG_VARIABLE(CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
2505 struct hdd_config, enable_ip_tcp_udp_checksum_offload,
2506 VAR_FLAGS_OPTIONAL,
2507 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT,
2508 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE,
2509 CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE),
2510
2511 REG_VARIABLE(CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer,
2512 struct hdd_config, enablePowersaveOffload,
2513 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2514 CFG_POWERSAVE_OFFLOAD_DEFAULT,
2515 CFG_POWERSAVE_OFFLOAD_MIN,
2516 CFG_POWERSAVE_OFFLOAD_MAX),
2517
2518 REG_VARIABLE(CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer,
2519 struct hdd_config, enablefwprint,
2520 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2521 CFG_ENABLE_FW_UART_PRINT_DEFAULT,
2522 CFG_ENABLE_FW_UART_PRINT_DISABLE,
2523 CFG_ENABLE_FW_UART_PRINT_ENABLE),
2524
2525 REG_VARIABLE(CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer,
2526 struct hdd_config, enablefwlog,
2527 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2528 CFG_ENABLE_FW_LOG_DEFAULT,
2529 CFG_ENABLE_FW_LOG_DISABLE,
2530 CFG_ENABLE_FW_LOG_ENABLE),
2531
2532#ifdef IPA_OFFLOAD
2533 REG_VARIABLE(CFG_IPA_OFFLOAD_CONFIG_NAME, WLAN_PARAM_HexInteger,
2534 struct hdd_config, IpaConfig,
2535 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2536 CFG_IPA_OFFLOAD_CONFIG_DEFAULT,
2537 CFG_IPA_OFFLOAD_CONFIG_MIN,
2538 CFG_IPA_OFFLOAD_CONFIG_MAX),
2539
2540 REG_VARIABLE(CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer,
2541 struct hdd_config, IpaDescSize,
2542 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2543 CFG_IPA_DESC_SIZE_DEFAULT,
2544 CFG_IPA_DESC_SIZE_MIN,
2545 CFG_IPA_DESC_SIZE_MAX),
2546
2547 REG_VARIABLE(CFG_IPA_HIGH_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2548 struct hdd_config, IpaHighBandwidthMbps,
2549 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2550 CFG_IPA_HIGH_BANDWIDTH_MBPS_DEFAULT,
2551 CFG_IPA_HIGH_BANDWIDTH_MBPS_MIN,
2552 CFG_IPA_HIGH_BANDWIDTH_MBPS_MAX),
2553
2554 REG_VARIABLE(CFG_IPA_MEDIUM_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2555 struct hdd_config, IpaMediumBandwidthMbps,
2556 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2557 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_DEFAULT,
2558 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MIN,
2559 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MAX),
2560
2561 REG_VARIABLE(CFG_IPA_LOW_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
2562 struct hdd_config, IpaLowBandwidthMbps,
2563 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2564 CFG_IPA_LOW_BANDWIDTH_MBPS_DEFAULT,
2565 CFG_IPA_LOW_BANDWIDTH_MBPS_MIN,
2566 CFG_IPA_LOW_BANDWIDTH_MBPS_MAX),
2567#endif
2568
2569#ifdef WLAN_FEATURE_11AC
2570 REG_VARIABLE(CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer,
2571 struct hdd_config, fVhtAmpduLenExponent,
2572 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2573 CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT,
2574 CFG_VHT_AMPDU_LEN_EXPONENT_MIN,
2575 CFG_VHT_AMPDU_LEN_EXPONENT_MAX),
2576
2577 REG_VARIABLE(CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer,
2578 struct hdd_config, vhtMpduLen,
2579 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2580 CFG_VHT_MPDU_LEN_DEFAULT,
2581 CFG_VHT_MPDU_LEN_MIN,
2582 CFG_VHT_MPDU_LEN_MAX),
2583#endif
2584
2585 REG_VARIABLE(CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer,
2586 struct hdd_config, maxWoWFilters,
2587 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2588 CFG_MAX_WOW_FILTERS_DEFAULT,
2589 CFG_MAX_WOW_FILTERS_MIN,
2590 CFG_MAX_WOW_FILTERS_MAX),
2591
2592 REG_VARIABLE(CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer,
2593 struct hdd_config, wowEnable,
2594 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2595 CFG_WOW_STATUS_DEFAULT,
2596 CFG_WOW_ENABLE_MIN,
2597 CFG_WOW_ENABLE_MAX),
2598
2599 REG_VARIABLE(CFG_COALESING_IN_IBSS_NAME, WLAN_PARAM_Integer,
2600 struct hdd_config, isCoalesingInIBSSAllowed,
2601 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2602 CFG_COALESING_IN_IBSS_DEFAULT,
2603 CFG_COALESING_IN_IBSS_MIN,
2604 CFG_COALESING_IN_IBSS_MAX),
2605
2606 REG_VARIABLE(CFG_IBSS_ATIM_WIN_SIZE_NAME, WLAN_PARAM_Integer,
2607 struct hdd_config, ibssATIMWinSize,
2608 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2609 CFG_IBSS_ATIM_WIN_SIZE_DEFAULT,
2610 CFG_IBSS_ATIM_WIN_SIZE_MIN,
2611 CFG_IBSS_ATIM_WIN_SIZE_MAX),
2612
2613 REG_VARIABLE(CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer,
2614 struct hdd_config, maxNumberOfPeers,
2615 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2616 CFG_SAP_MAX_NO_PEERS_DEFAULT,
2617 CFG_SAP_MAX_NO_PEERS_MIN,
2618 CFG_SAP_MAX_NO_PEERS_MAX),
2619
2620 REG_VARIABLE(CFG_IBSS_IS_POWER_SAVE_ALLOWED_NAME, WLAN_PARAM_Integer,
2621 struct hdd_config, isIbssPowerSaveAllowed,
2622 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2623 CFG_IBSS_IS_POWER_SAVE_ALLOWED_DEFAULT,
2624 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MIN,
2625 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MAX),
2626
2627 REG_VARIABLE(CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_NAME,
2628 WLAN_PARAM_Integer,
2629 struct hdd_config, isIbssPowerCollapseAllowed,
2630 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2631 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_DEFAULT,
2632 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MIN,
2633 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MAX),
2634
2635 REG_VARIABLE(CFG_IBSS_AWAKE_ON_TX_RX_NAME, WLAN_PARAM_Integer,
2636 struct hdd_config, isIbssAwakeOnTxRx,
2637 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2638 CFG_IBSS_AWAKE_ON_TX_RX_DEFAULT,
2639 CFG_IBSS_AWAKE_ON_TX_RX_MIN,
2640 CFG_IBSS_AWAKE_ON_TX_RX_MAX),
2641
2642 REG_VARIABLE(CFG_IBSS_INACTIVITY_TIME_NAME, WLAN_PARAM_Integer,
2643 struct hdd_config, ibssInactivityCount,
2644 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2645 CFG_IBSS_INACTIVITY_TIME_DEFAULT,
2646 CFG_IBSS_INACTIVITY_TIME_MIN,
2647 CFG_IBSS_INACTIVITY_TIME_MAX),
2648
2649 REG_VARIABLE(CFG_IBSS_TXSP_END_INACTIVITY_NAME, WLAN_PARAM_Integer,
2650 struct hdd_config, ibssTxSpEndInactivityTime,
2651 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2652 CFG_IBSS_TXSP_END_INACTIVITY_DEFAULT,
2653 CFG_IBSS_TXSP_END_INACTIVITY_MIN,
2654 CFG_IBSS_TXSP_END_INACTIVITY_MAX),
2655
2656 REG_VARIABLE(CFG_IBSS_PS_WARMUP_TIME_NAME, WLAN_PARAM_Integer,
2657 struct hdd_config, ibssPsWarmupTime,
2658 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2659 CFG_IBSS_PS_WARMUP_TIME_DEFAULT,
2660 CFG_IBSS_PS_WARMUP_TIME_MIN,
2661 CFG_IBSS_PS_WARMUP_TIME_MAX),
2662
2663 REG_VARIABLE(CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME,
2664 WLAN_PARAM_Integer,
2665 struct hdd_config, ibssPs1RxChainInAtimEnable,
2666 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2667 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT,
2668 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
2669 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX),
2670
2671 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
2672 struct hdd_config, thermalTempMinLevel0,
2673 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2674 CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT,
2675 CFG_THERMAL_TEMP_MIN_LEVEL0_MIN,
2676 CFG_THERMAL_TEMP_MIN_LEVEL0_MAX),
2677
2678 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL0_NAME, WLAN_PARAM_Integer,
2679 struct hdd_config, thermalTempMaxLevel0,
2680 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2681 CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT,
2682 CFG_THERMAL_TEMP_MAX_LEVEL0_MIN,
2683 CFG_THERMAL_TEMP_MAX_LEVEL0_MAX),
2684
2685 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL1_NAME, WLAN_PARAM_Integer,
2686 struct hdd_config, thermalTempMinLevel1,
2687 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2688 CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT,
2689 CFG_THERMAL_TEMP_MIN_LEVEL1_MIN,
2690 CFG_THERMAL_TEMP_MIN_LEVEL1_MAX),
2691
2692 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL1_NAME, WLAN_PARAM_Integer,
2693 struct hdd_config, thermalTempMaxLevel1,
2694 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2695 CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT,
2696 CFG_THERMAL_TEMP_MAX_LEVEL1_MIN,
2697 CFG_THERMAL_TEMP_MAX_LEVEL1_MAX),
2698
2699 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL2_NAME, WLAN_PARAM_Integer,
2700 struct hdd_config, thermalTempMinLevel2,
2701 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2702 CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT,
2703 CFG_THERMAL_TEMP_MIN_LEVEL2_MIN,
2704 CFG_THERMAL_TEMP_MIN_LEVEL2_MAX),
2705
2706 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL2_NAME, WLAN_PARAM_Integer,
2707 struct hdd_config, thermalTempMaxLevel2,
2708 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2709 CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT,
2710 CFG_THERMAL_TEMP_MAX_LEVEL2_MIN,
2711 CFG_THERMAL_TEMP_MAX_LEVEL2_MAX),
2712
2713 REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL3_NAME, WLAN_PARAM_Integer,
2714 struct hdd_config, thermalTempMinLevel3,
2715 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2716 CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT,
2717 CFG_THERMAL_TEMP_MIN_LEVEL3_MIN,
2718 CFG_THERMAL_TEMP_MIN_LEVEL3_MAX),
2719
2720 REG_VARIABLE(CFG_THERMAL_TEMP_MAX_LEVEL3_NAME, WLAN_PARAM_Integer,
2721 struct hdd_config, thermalTempMaxLevel3,
2722 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2723 CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT,
2724 CFG_THERMAL_TEMP_MAX_LEVEL3_MIN,
2725 CFG_THERMAL_TEMP_MAX_LEVEL3_MAX),
2726
2727 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT2G_NAME, WLAN_PARAM_Integer,
2728 struct hdd_config, TxPower2g,
2729 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2730 CFG_SET_TXPOWER_LIMIT2G_DEFAULT,
2731 CFG_SET_TXPOWER_LIMIT2G_MIN,
2732 CFG_SET_TXPOWER_LIMIT2G_MAX),
2733
2734 REG_VARIABLE(CFG_SET_TXPOWER_LIMIT5G_NAME, WLAN_PARAM_Integer,
2735 struct hdd_config, TxPower5g,
2736 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2737 CFG_SET_TXPOWER_LIMIT5G_DEFAULT,
2738 CFG_SET_TXPOWER_LIMIT5G_MIN,
2739 CFG_SET_TXPOWER_LIMIT5G_MAX),
2740
2741 REG_VARIABLE(CFG_ENABLE_DEBUG_CONNECT_ISSUE, WLAN_PARAM_Integer,
2742 struct hdd_config, gEnableDebugLog,
2743 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2744 CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT,
2745 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN,
2746 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX),
2747
2748 REG_VARIABLE(CFG_ENABLE_RX_THREAD, WLAN_PARAM_Integer,
2749 struct hdd_config, enableRxThread,
2750 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2751 CFG_ENABLE_RX_THREAD_DEFAULT,
2752 CFG_ENABLE_RX_THREAD_MIN,
2753 CFG_ENABLE_RX_THREAD_MAX),
2754
2755 REG_VARIABLE(CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME,
2756 WLAN_PARAM_Integer,
2757 struct hdd_config, fDfsPhyerrFilterOffload,
2758 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2759 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT,
2760 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN,
2761 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX),
2762
2763 REG_VARIABLE(CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer,
2764 struct hdd_config, gEnableOverLapCh,
2765 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2766 CFG_ENABLE_OVERLAP_CH_DEFAULT,
2767 CFG_ENABLE_OVERLAP_CH_MIN,
2768 CFG_ENABLE_OVERLAP_CH_MAX),
2769
2770 REG_VARIABLE(CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer,
2771 struct hdd_config, fRegChangeDefCountry,
2772 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2773 CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT,
2774 CFG_REG_CHANGE_DEF_COUNTRY_MIN,
2775 CFG_REG_CHANGE_DEF_COUNTRY_MAX),
2776
2777#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
2778 REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
2779 struct hdd_config, TxFlowLowWaterMark,
2780 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2781 CFG_LL_TX_FLOW_LWM_DEFAULT,
2782 CFG_LL_TX_FLOW_LWM_MIN,
2783 CFG_LL_TX_FLOW_LWM_MAX),
2784 REG_VARIABLE(CFG_LL_TX_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2785 struct hdd_config, TxFlowHighWaterMarkOffset,
2786 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2787 CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT,
2788 CFG_LL_TX_FLOW_HWM_OFFSET_MIN,
2789 CFG_LL_TX_FLOW_HWM_OFFSET_MAX),
2790 REG_VARIABLE(CFG_LL_TX_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2791 struct hdd_config, TxFlowMaxQueueDepth,
2792 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2793 CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT,
2794 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN,
2795 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX),
2796 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer,
2797 struct hdd_config, TxLbwFlowLowWaterMark,
2798 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2799 CFG_LL_TX_LBW_FLOW_LWM_DEFAULT,
2800 CFG_LL_TX_LBW_FLOW_LWM_MIN,
2801 CFG_LL_TX_LBW_FLOW_LWM_MAX),
2802
2803 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2804 struct hdd_config, TxLbwFlowHighWaterMarkOffset,
2805 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2806 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT,
2807 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN,
2808 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX),
2809
2810 REG_VARIABLE(CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2811 struct hdd_config, TxLbwFlowMaxQueueDepth,
2812 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2813 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2814 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN,
2815 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX),
2816
2817 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_LWM, WLAN_PARAM_Integer,
2818 struct hdd_config, TxHbwFlowLowWaterMark,
2819 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2820 CFG_LL_TX_HBW_FLOW_LWM_DEFAULT,
2821 CFG_LL_TX_HBW_FLOW_LWM_MIN,
2822 CFG_LL_TX_HBW_FLOW_LWM_MAX),
2823
2824 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
2825 struct hdd_config, TxHbwFlowHighWaterMarkOffset,
2826 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2827 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT,
2828 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN,
2829 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX),
2830
2831 REG_VARIABLE(CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
2832 struct hdd_config, TxHbwFlowMaxQueueDepth,
2833 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2834 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT,
2835 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN,
2836 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX),
2837#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
2838#ifdef QCA_LL_TX_FLOW_CONTROL_V2
2839
2840 REG_VARIABLE(CFG_LL_TX_FLOW_STOP_QUEUE_TH, WLAN_PARAM_Integer,
2841 struct hdd_config, TxFlowStopQueueThreshold,
2842 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2843 CFG_LL_TX_FLOW_STOP_QUEUE_TH_DEFAULT,
2844 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MIN,
2845 CFG_LL_TX_FLOW_STOP_QUEUE_TH_MAX),
2846
2847 REG_VARIABLE(CFG_LL_TX_FLOW_START_QUEUE_OFFSET, WLAN_PARAM_Integer,
2848 struct hdd_config, TxFlowStartQueueOffset,
2849 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2850 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_DEFAULT,
2851 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MIN,
2852 CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MAX),
2853
2854#endif
2855 REG_VARIABLE(CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer,
2856 struct hdd_config, nInitialDwellTime,
2857 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2858 CFG_INITIAL_DWELL_TIME_DEFAULT,
2859 CFG_INITIAL_DWELL_TIME_MIN,
2860 CFG_INITIAL_DWELL_TIME_MAX),
2861
2862 REG_VARIABLE(CFG_INITIAL_SCAN_NO_DFS_CHNL_NAME, WLAN_PARAM_Integer,
2863 struct hdd_config, initial_scan_no_dfs_chnl,
2864 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2865 CFG_INITIAL_SCAN_NO_DFS_CHNL_DEFAULT,
2866 CFG_INITIAL_SCAN_NO_DFS_CHNL_MIN,
2867 CFG_INITIAL_SCAN_NO_DFS_CHNL_MAX),
2868
2869 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer,
2870 struct hdd_config, apMaxOffloadPeers,
2871 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2872 CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT,
2873 CFG_SAP_MAX_OFFLOAD_PEERS_MIN,
2874 CFG_SAP_MAX_OFFLOAD_PEERS_MAX),
2875
2876 REG_VARIABLE(CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS, WLAN_PARAM_Integer,
2877 struct hdd_config, apMaxOffloadReorderBuffs,
2878 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2879 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_DEFAULT,
2880 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MIN,
2881 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MAX),
2882
2883 REG_VARIABLE(CFG_ADVERTISE_CONCURRENT_OPERATION_NAME,
2884 WLAN_PARAM_Integer,
2885 struct hdd_config, advertiseConcurrentOperation,
2886 VAR_FLAGS_OPTIONAL,
2887 CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT,
2888 CFG_ADVERTISE_CONCURRENT_OPERATION_MIN,
2889 CFG_ADVERTISE_CONCURRENT_OPERATION_MAX),
2890
2891 REG_VARIABLE(CFG_ENABLE_MEMORY_DEEP_SLEEP, WLAN_PARAM_Integer,
2892 struct hdd_config, enableMemDeepSleep,
2893 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2894 CFG_ENABLE_MEMORY_DEEP_SLEEP_DEFAULT,
2895 CFG_ENABLE_MEMORY_DEEP_SLEEP_MIN,
2896 CFG_ENABLE_MEMORY_DEEP_SLEEP_MAX),
2897
2898 REG_VARIABLE(CFG_DEFAULT_RATE_INDEX_24GH, WLAN_PARAM_Integer,
2899 struct hdd_config, defaultRateIndex24Ghz,
2900 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2901 CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT,
2902 CFG_DEFAULT_RATE_INDEX_24GH_MIN,
2903 CFG_DEFAULT_RATE_INDEX_24GH_MAX),
2904
2905#ifdef MEMORY_DEBUG
2906 REG_VARIABLE(CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer,
2907 struct hdd_config, IsMemoryDebugSupportEnabled,
2908 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2909 CFG_ENABLE_MEMORY_DEBUG_DEFAULT,
2910 CFG_ENABLE_MEMORY_DEBUG_MIN,
2911 CFG_ENABLE_MEMORY_DEBUG_MAX),
2912#endif
2913
2914 REG_VARIABLE(CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
2915 struct hdd_config, debugP2pRemainOnChannel,
2916 VAR_FLAGS_OPTIONAL,
2917 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT,
2918 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN,
2919 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX),
2920
2921 REG_VARIABLE(CFG_ENABLE_PACKET_LOG, WLAN_PARAM_Integer,
2922 struct hdd_config, enablePacketLog,
2923 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2924 CFG_ENABLE_PACKET_LOG_DEFAULT,
2925 CFG_ENABLE_PACKET_LOG_MIN,
2926 CFG_ENABLE_PACKET_LOG_MAX),
2927
2928#ifdef WLAN_FEATURE_ROAM_OFFLOAD
2929 REG_VARIABLE(CFG_ROAMING_OFFLOAD_NAME, WLAN_PARAM_Integer,
2930 struct hdd_config, isRoamOffloadEnabled,
2931 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
2932 CFG_ROAMING_OFFLOAD_DEFAULT,
2933 CFG_ROAMING_OFFLOAD_MIN,
2934 CFG_ROAMING_OFFLOAD_MAX),
2935#endif
2936#ifdef MSM_PLATFORM
2937 REG_VARIABLE(CFG_BUS_BANDWIDTH_HIGH_THRESHOLD, WLAN_PARAM_Integer,
2938 struct hdd_config, busBandwidthHighThreshold,
2939 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2940 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_DEFAULT,
2941 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MIN,
2942 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MAX),
2943
2944 REG_VARIABLE(CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD, WLAN_PARAM_Integer,
2945 struct hdd_config, busBandwidthMediumThreshold,
2946 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2947 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_DEFAULT,
2948 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MIN,
2949 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MAX),
2950
2951 REG_VARIABLE(CFG_BUS_BANDWIDTH_LOW_THRESHOLD, WLAN_PARAM_Integer,
2952 struct hdd_config, busBandwidthLowThreshold,
2953 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2954 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_DEFAULT,
2955 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MIN,
2956 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MAX),
2957
2958 REG_VARIABLE(CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL, WLAN_PARAM_Integer,
2959 struct hdd_config, busBandwidthComputeInterval,
2960 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2961 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT,
2962 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN,
2963 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX),
2964 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_HIGH, WLAN_PARAM_Integer,
2965 struct hdd_config, tcpDelackThresholdHigh,
2966 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2967 CFG_TCP_DELACK_THRESHOLD_HIGH_DEFAULT,
2968 CFG_TCP_DELACK_THRESHOLD_HIGH_MIN,
2969 CFG_TCP_DELACK_THRESHOLD_HIGH_MAX),
2970 REG_VARIABLE(CFG_TCP_DELACK_THRESHOLD_LOW, WLAN_PARAM_Integer,
2971 struct hdd_config, tcpDelackThresholdLow,
2972 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2973 CFG_TCP_DELACK_THRESHOLD_LOW_DEFAULT,
2974 CFG_TCP_DELACK_THRESHOLD_LOW_MIN,
2975 CFG_TCP_DELACK_THRESHOLD_LOW_MAX),
2976#endif
2977
2978 REG_VARIABLE(CFG_ENABLE_FW_LOG_TYPE, WLAN_PARAM_Integer,
2979 struct hdd_config, enableFwLogType,
2980 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2981 CFG_ENABLE_FW_LOG_TYPE_DEFAULT,
2982 CFG_ENABLE_FW_LOG_TYPE_MIN,
2983 CFG_ENABLE_FW_LOG_TYPE_MAX),
2984
2985 REG_VARIABLE(CFG_ENABLE_FW_DEBUG_LOG_LEVEL, WLAN_PARAM_Integer,
2986 struct hdd_config, enableFwLogLevel,
2987 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
2988 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_DEFAULT,
2989 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MIN,
2990 CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MAX),
2991
2992 REG_VARIABLE_STRING(CFG_ENABLE_FW_MODULE_LOG_LEVEL, WLAN_PARAM_String,
2993 struct hdd_config, enableFwModuleLogLevel,
2994 VAR_FLAGS_OPTIONAL,
2995 (void *)CFG_ENABLE_FW_MODULE_LOG_DEFAULT),
2996
2997#ifdef WLAN_FEATURE_11W
2998 REG_VARIABLE(CFG_PMF_SA_QUERY_MAX_RETRIES_NAME, WLAN_PARAM_Integer,
2999 struct hdd_config, pmfSaQueryMaxRetries,
3000 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3001 CFG_PMF_SA_QUERY_MAX_RETRIES_DEFAULT,
3002 CFG_PMF_SA_QUERY_MAX_RETRIES_MIN,
3003 CFG_PMF_SA_QUERY_MAX_RETRIES_MAX),
3004
3005 REG_VARIABLE(CFG_PMF_SA_QUERY_RETRY_INTERVAL_NAME, WLAN_PARAM_Integer,
3006 struct hdd_config, pmfSaQueryRetryInterval,
3007 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3008 CFG_PMF_SA_QUERY_RETRY_INTERVAL_DEFAULT,
3009 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MIN,
3010 CFG_PMF_SA_QUERY_RETRY_INTERVAL_MAX),
3011#endif
3012 REG_VARIABLE(CFG_MAX_CONCURRENT_CONNECTIONS_NAME, WLAN_PARAM_Integer,
3013 struct hdd_config, gMaxConcurrentActiveSessions,
3014 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3015 CFG_MAX_CONCURRENT_CONNECTIONS_DEFAULT,
3016 CFG_MAX_CONCURRENT_CONNECTIONS_MIN,
3017 CFG_MAX_CONCURRENT_CONNECTIONS_MAX),
3018
3019#ifdef FEATURE_GREEN_AP
3020 REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,
3021 struct hdd_config, enableGreenAP,
3022 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3023 CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
3024 CFG_ENABLE_GREEN_AP_FEATURE_MIN,
3025 CFG_ENABLE_GREEN_AP_FEATURE_MAX),
3026#endif
3027
3028 REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
3029 struct hdd_config, ignoreCAC,
3030 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3031 CFG_IGNORE_CAC_DEFAULT,
3032 CFG_IGNORE_CAC_MIN,
3033 CFG_IGNORE_CAC_MAX),
3034
3035 REG_VARIABLE(CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_NAME, WLAN_PARAM_Integer,
3036 struct hdd_config, IsSapDfsChSifsBurstEnabled,
3037 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3038 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_DEFAULT,
3039 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MIN,
3040 CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MAX),
3041
3042 REG_VARIABLE(CFG_DFS_RADAR_PRI_MULTIPLIER_NAME, WLAN_PARAM_Integer,
3043 struct hdd_config, dfsRadarPriMultiplier,
3044 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3045 CFG_DFS_RADAR_PRI_MULTIPLIER_DEFAULT,
3046 CFG_DFS_RADAR_PRI_MULTIPLIER_MIN,
3047 CFG_DFS_RADAR_PRI_MULTIPLIER_MAX),
3048
3049 REG_VARIABLE(CFG_REORDER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3050 struct hdd_config, reorderOffloadSupport,
3051 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3052 CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT,
3053 CFG_REORDER_OFFLOAD_SUPPORT_MIN,
3054 CFG_REORDER_OFFLOAD_SUPPORT_MAX),
3055
3056 REG_VARIABLE(CFG_IPA_UC_TX_BUF_COUNT_NAME, WLAN_PARAM_Integer,
3057 struct hdd_config, IpaUcTxBufCount,
3058 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3059 CFG_IPA_UC_TX_BUF_COUNT_DEFAULT,
3060 CFG_IPA_UC_TX_BUF_COUNT_MIN,
3061 CFG_IPA_UC_TX_BUF_COUNT_MAX),
3062
3063 REG_VARIABLE(CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer,
3064 struct hdd_config, IpaUcTxBufSize,
3065 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3066 CFG_IPA_UC_TX_BUF_SIZE_DEFAULT,
3067 CFG_IPA_UC_TX_BUF_SIZE_MIN,
3068 CFG_IPA_UC_TX_BUF_SIZE_MAX),
3069
3070 REG_VARIABLE(CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer,
3071 struct hdd_config, IpaUcRxIndRingCount,
3072 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3073 CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT,
3074 CFG_IPA_UC_RX_IND_RING_COUNT_MIN,
3075 CFG_IPA_UC_RX_IND_RING_COUNT_MAX),
3076
3077 REG_VARIABLE(CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer,
3078 struct hdd_config, IpaUcTxPartitionBase,
3079 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3080 CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT,
3081 CFG_IPA_UC_TX_PARTITION_BASE_MIN,
3082 CFG_IPA_UC_TX_PARTITION_BASE_MAX),
3083#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
3084 REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer,
3085 struct hdd_config, wlanLoggingEnable,
3086 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3087 CFG_WLAN_LOGGING_SUPPORT_DEFAULT,
3088 CFG_WLAN_LOGGING_SUPPORT_DISABLE,
3089 CFG_WLAN_LOGGING_SUPPORT_ENABLE),
3090
3091 REG_VARIABLE(CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_NAME,
3092 WLAN_PARAM_Integer,
3093 struct hdd_config, wlanLoggingFEToConsole,
3094 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3095 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DEFAULT,
3096 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DISABLE,
3097 CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_ENABLE),
3098
3099 REG_VARIABLE(CFG_WLAN_LOGGING_NUM_BUF_NAME, WLAN_PARAM_Integer,
3100 struct hdd_config, wlanLoggingNumBuf,
3101 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3102 CFG_WLAN_LOGGING_NUM_BUF_DEFAULT,
3103 CFG_WLAN_LOGGING_NUM_BUF_MIN,
3104 CFG_WLAN_LOGGING_NUM_BUF_MAX),
3105#endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */
3106
3107 REG_VARIABLE(CFG_ENABLE_SIFS_BURST, WLAN_PARAM_Integer,
3108 struct hdd_config, enableSifsBurst,
3109 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3110 CFG_ENABLE_SIFS_BURST_DEFAULT,
3111 CFG_ENABLE_SIFS_BURST_MIN,
3112 CFG_ENABLE_SIFS_BURST_MAX),
3113
3114#ifdef WLAN_FEATURE_LPSS
3115 REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer,
3116 struct hdd_config, enablelpasssupport,
3117 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3118 CFG_ENABLE_LPASS_SUPPORT_DEFAULT,
3119 CFG_ENABLE_LPASS_SUPPORT_MIN,
3120 CFG_ENABLE_LPASS_SUPPORT_MAX),
3121#endif
3122
3123#ifdef WLAN_FEATURE_NAN
3124 REG_VARIABLE(CFG_ENABLE_NAN_SUPPORT, WLAN_PARAM_Integer,
3125 struct hdd_config, enable_nan_support,
3126 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3127 CFG_ENABLE_NAN_SUPPORT_DEFAULT,
3128 CFG_ENABLE_NAN_SUPPORT_MIN,
3129 CFG_ENABLE_NAN_SUPPORT_MAX),
3130#endif
3131
3132 REG_VARIABLE(CFG_ENABLE_SELF_RECOVERY, WLAN_PARAM_Integer,
3133 struct hdd_config, enableSelfRecovery,
3134 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3135 CFG_ENABLE_SELF_RECOVERY_DEFAULT,
3136 CFG_ENABLE_SELF_RECOVERY_MIN,
3137 CFG_ENABLE_SELF_RECOVERY_MAX),
3138
3139#ifdef FEATURE_WLAN_FORCE_SAP_SCC
3140 REG_VARIABLE(CFG_SAP_SCC_CHAN_AVOIDANCE, WLAN_PARAM_Integer,
3141 struct hdd_config, SapSccChanAvoidance,
3142 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3143 CFG_SAP_SCC_CHAN_AVOIDANCE_DEFAULT,
3144 CFG_SAP_SCC_CHAN_AVOIDANCE_MIN,
3145 CFG_SAP_SCC_CHAN_AVOIDANCE_MAX),
3146#endif /* FEATURE_WLAN_FORCE_SAP_SCC */
3147
3148 REG_VARIABLE(CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer,
3149 struct hdd_config, enableSapSuspend,
3150 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3151 CFG_ENABLE_SAP_SUSPEND_DEFAULT,
3152 CFG_ENABLE_SAP_SUSPEND_MIN,
3153 CFG_ENABLE_SAP_SUSPEND_MAX),
3154
3155#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
3156 REG_VARIABLE(CFG_EXTWOW_GO_TO_SUSPEND, WLAN_PARAM_Integer,
3157 struct hdd_config, extWowGotoSuspend,
3158 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3159 CFG_EXTWOW_GO_TO_SUSPEND_DEFAULT,
3160 CFG_EXTWOW_GO_TO_SUSPEND_MIN,
3161 CFG_EXTWOW_GO_TO_SUSPEND_MAX),
3162
3163 REG_VARIABLE(CFG_EXTWOW_APP1_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3164 struct hdd_config, extWowApp1WakeupPinNumber,
3165 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3166 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_DEFAULT,
3167 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MIN,
3168 CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MAX),
3169
3170 REG_VARIABLE(CFG_EXTWOW_APP2_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
3171 struct hdd_config, extWowApp2WakeupPinNumber,
3172 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3173 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_DEFAULT,
3174 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MIN,
3175 CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MAX),
3176
3177 REG_VARIABLE(CFG_EXTWOW_KA_INIT_PING_INTERVAL, WLAN_PARAM_Integer,
3178 struct hdd_config, extWowApp2KAInitPingInterval,
3179 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3180 CFG_EXTWOW_KA_INIT_PING_INTERVAL_DEFAULT,
3181 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MIN,
3182 CFG_EXTWOW_KA_INIT_PING_INTERVAL_MAX),
3183
3184 REG_VARIABLE(CFG_EXTWOW_KA_MIN_PING_INTERVAL, WLAN_PARAM_Integer,
3185 struct hdd_config, extWowApp2KAMinPingInterval,
3186 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3187 CFG_EXTWOW_KA_MIN_PING_INTERVAL_DEFAULT,
3188 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MIN,
3189 CFG_EXTWOW_KA_MIN_PING_INTERVAL_MAX),
3190
3191 REG_VARIABLE(CFG_EXTWOW_KA_MAX_PING_INTERVAL, WLAN_PARAM_Integer,
3192 struct hdd_config, extWowApp2KAMaxPingInterval,
3193 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3194 CFG_EXTWOW_KA_MAX_PING_INTERVAL_DEFAULT,
3195 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MIN,
3196 CFG_EXTWOW_KA_MAX_PING_INTERVAL_MAX),
3197
3198 REG_VARIABLE(CFG_EXTWOW_KA_INC_PING_INTERVAL, WLAN_PARAM_Integer,
3199 struct hdd_config, extWowApp2KAIncPingInterval,
3200 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3201 CFG_EXTWOW_KA_INC_PING_INTERVAL_DEFAULT,
3202 CFG_EXTWOW_KA_INC_PING_INTERVAL_MIN,
3203 CFG_EXTWOW_KA_INC_PING_INTERVAL_MAX),
3204
3205 REG_VARIABLE(CFG_EXTWOW_TCP_SRC_PORT, WLAN_PARAM_Integer,
3206 struct hdd_config, extWowApp2TcpSrcPort,
3207 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3208 CFG_EXTWOW_TCP_SRC_PORT_DEFAULT,
3209 CFG_EXTWOW_TCP_SRC_PORT_MIN,
3210 CFG_EXTWOW_TCP_SRC_PORT_MAX),
3211
3212 REG_VARIABLE(CFG_EXTWOW_TCP_DST_PORT, WLAN_PARAM_Integer,
3213 struct hdd_config, extWowApp2TcpDstPort,
3214 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3215 CFG_EXTWOW_TCP_DST_PORT_DEFAULT,
3216 CFG_EXTWOW_TCP_DST_PORT_MIN,
3217 CFG_EXTWOW_TCP_DST_PORT_MAX),
3218
3219 REG_VARIABLE(CFG_EXTWOW_TCP_TX_TIMEOUT, WLAN_PARAM_Integer,
3220 struct hdd_config, extWowApp2TcpTxTimeout,
3221 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3222 CFG_EXTWOW_TCP_TX_TIMEOUT_DEFAULT,
3223 CFG_EXTWOW_TCP_TX_TIMEOUT_MIN,
3224 CFG_EXTWOW_TCP_TX_TIMEOUT_MAX),
3225
3226 REG_VARIABLE(CFG_EXTWOW_TCP_RX_TIMEOUT, WLAN_PARAM_Integer,
3227 struct hdd_config, extWowApp2TcpRxTimeout,
3228 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3229 CFG_EXTWOW_TCP_RX_TIMEOUT_DEFAULT,
3230 CFG_EXTWOW_TCP_RX_TIMEOUT_MIN,
3231 CFG_EXTWOW_TCP_RX_TIMEOUT_MAX),
3232#endif
3233 REG_VARIABLE(CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_NAME, WLAN_PARAM_Integer,
3234 struct hdd_config, gEnableDeauthToDisassocMap,
3235 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3236 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_DEFAULT,
3237 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MIN,
3238 CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MAX),
3239#ifdef DHCP_SERVER_OFFLOAD
3240 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
3241 struct hdd_config, enableDHCPServerOffload,
3242 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3243 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_DEFAULT,
3244 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MIN,
3245 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MAX),
3246 REG_VARIABLE(CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_NAME,
3247 WLAN_PARAM_Integer,
3248 struct hdd_config, dhcpMaxNumClients,
3249 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3250 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_DEFAULT,
3251 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MIN,
3252 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MAX),
3253 REG_VARIABLE_STRING(CFG_DHCP_SERVER_IP_NAME, WLAN_PARAM_String,
3254 struct hdd_config, dhcpServerIP,
3255 VAR_FLAGS_OPTIONAL,
3256 (void *)CFG_DHCP_SERVER_IP_DEFAULT),
3257#endif /* DHCP_SERVER_OFFLOAD */
3258
3259 REG_VARIABLE(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION, WLAN_PARAM_Integer,
3260 struct hdd_config, sendDeauthBeforeCon,
3261 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3262 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_DEFAULT,
3263 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MIN,
3264 CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MAX),
3265
3266 REG_VARIABLE(CFG_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer,
3267 struct hdd_config, enable_mac_spoofing,
3268 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3269 CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT,
3270 CFG_ENABLE_MAC_ADDR_SPOOFING_MIN,
3271 CFG_ENABLE_MAC_ADDR_SPOOFING_MAX),
3272
3273 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE1_NAME, WLAN_PARAM_Integer,
3274 struct hdd_config, conc_custom_rule1,
3275 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3276 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_DEFAULT,
3277 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MIN,
3278 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MAX),
3279
3280 REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE2_NAME, WLAN_PARAM_Integer,
3281 struct hdd_config, conc_custom_rule2,
3282 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3283 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_DEFAULT,
3284 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MIN,
3285 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MAX),
3286
3287 REG_VARIABLE(CFG_ENABLE_STA_CONNECTION_IN_5GHZ, WLAN_PARAM_Integer,
3288 struct hdd_config, is_sta_connection_in_5gz_enabled,
3289 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3290 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_DEFAULT,
3291 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MIN,
3292 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MAX),
3293
3294 REG_VARIABLE(CFG_STA_MIRACAST_MCC_REST_TIME_VAL, WLAN_PARAM_Integer,
3295 struct hdd_config, sta_miracast_mcc_rest_time_val,
3296 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3297 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_DEFAULT,
3298 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MIN,
3299 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MAX),
3300
3301#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
3302 REG_VARIABLE(CFG_SAP_MCC_CHANNEL_AVOIDANCE_NAME,
3303 WLAN_PARAM_Integer,
3304 struct hdd_config,
3305 sap_channel_avoidance,
3306 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
3307 CFG_SAP_MCC_CHANNEL_AVOIDANCE_DEFAULT,
3308 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MIN,
3309 CFG_SAP_MCC_CHANNEL_AVOIDANCE_MAX),
3310#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
3311
3312 REG_VARIABLE(CFG_SAP_P2P_11AC_OVERRIDE_NAME, WLAN_PARAM_Integer,
3313 struct hdd_config, sap_p2p_11ac_override,
3314 VAR_FLAGS_OPTIONAL |
3315 VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3316 CFG_SAP_P2P_11AC_OVERRIDE_DEFAULT,
3317 CFG_SAP_P2P_11AC_OVERRIDE_MIN,
3318 CFG_SAP_P2P_11AC_OVERRIDE_MAX),
3319
3320 REG_VARIABLE(CFG_ENABLE_RAMDUMP_COLLECTION, WLAN_PARAM_Integer,
3321 struct hdd_config, is_ramdump_enabled,
3322 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3323 CFG_ENABLE_RAMDUMP_COLLECTION_DEFAULT,
3324 CFG_ENABLE_RAMDUMP_COLLECTION_MIN,
3325 CFG_ENABLE_RAMDUMP_COLLECTION_MAX),
3326
3327 REG_VARIABLE(CFG_SAP_DOT11MC, WLAN_PARAM_Integer,
3328 struct hdd_config, sap_dot11mc,
3329 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3330 CFG_SAP_DOT11MC_DEFAULT,
3331 CFG_SAP_DOT11MC_MIN,
3332 CFG_SAP_DOT11MC_MAX),
3333
3334 REG_VARIABLE(CFG_ENABLE_NON_DFS_CHAN_ON_RADAR, WLAN_PARAM_Integer,
3335 struct hdd_config, prefer_non_dfs_on_radar,
3336 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3337 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT,
3338 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN,
3339 CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX),
3340
3341 REG_VARIABLE(CFG_MULTICAST_HOST_FW_MSGS, WLAN_PARAM_Integer,
3342 struct hdd_config, multicast_host_fw_msgs,
3343 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3344 CFG_MULTICAST_HOST_FW_MSGS_DEFAULT,
3345 CFG_MULTICAST_HOST_FW_MSGS_MIN,
3346 CFG_MULTICAST_HOST_FW_MSGS_MAX),
3347
3348 REG_VARIABLE(CFG_CONC_SYSTEM_PREF, WLAN_PARAM_Integer,
3349 struct hdd_config, conc_system_pref,
3350 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3351 CFG_CONC_SYSTEM_PREF_DEFAULT,
3352 CFG_CONC_SYSTEM_PREF_MIN,
3353 CFG_CONC_SYSTEM_PREF_MAX),
3354
3355 REG_VARIABLE(CFG_POLICY_MNGR_ENABLE, WLAN_PARAM_Integer,
3356 struct hdd_config, policy_manager_enabled,
3357 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3358 CFG_POLICY_MNGR_ENABLE_DEFAULT,
3359 CFG_POLICY_MNGR_ENABLE_MIN,
3360 CFG_POLICY_MNGR_ENABLE_MAX),
3361
3362 REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer,
3363 struct hdd_config, tso_enable,
3364 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3365 CFG_TSO_ENABLED_DEFAULT,
3366 CFG_TSO_ENABLED_MIN,
3367 CFG_TSO_ENABLED_MAX),
3368
3369 REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer,
3370 struct hdd_config, lro_enable,
3371 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3372 CFG_LRO_ENABLED_DEFAULT,
3373 CFG_LRO_ENABLED_MIN,
3374 CFG_LRO_ENABLED_MAX),
3375
3376 REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
3377 struct hdd_config, active_mode_offload,
3378 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3379 CFG_ACTIVE_MODE_OFFLOAD_DEFAULT,
3380 CFG_ACTIVE_MODE_OFFLOAD_MIN,
3381 CFG_ACTIVE_MODE_OFFLOAD_MAX),
3382
3383 REG_VARIABLE(CFG_FINE_TIME_MEAS_CAPABILITY, WLAN_PARAM_HexInteger,
3384 struct hdd_config, fine_time_meas_cap,
3385 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3386 CFG_FINE_TIME_MEAS_CAPABILITY_DEFAULT,
3387 CFG_FINE_TIME_MEAS_CAPABILITY_MIN,
3388 CFG_FINE_TIME_MEAS_CAPABILITY_MAX),
3389
3390#ifdef WLAN_FEATURE_FASTPATH
3391 REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer,
3392 struct hdd_config, fastpath_enable,
3393 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3394 CFG_ENABLE_FASTPATH_DEFAULT,
3395 CFG_ENABLE_FASTPATH_MIN,
3396 CFG_ENABLE_FASTPATH_MAX),
3397#endif
3398 REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer,
3399 struct hdd_config, max_scan_count,
3400 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3401 CFG_MAX_SCAN_COUNT_DEFAULT,
3402 CFG_MAX_SCAN_COUNT_MIN,
3403 CFG_MAX_SCAN_COUNT_MAX),
3404
3405 REG_VARIABLE(CFG_DOT11P_MODE_NAME, WLAN_PARAM_Integer,
3406 struct hdd_config, dot11p_mode,
3407 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3408 CFG_DOT11P_MODE_DEFAULT,
3409 CFG_DOT11P_MODE_MIN,
3410 CFG_DOT11P_MODE_MAX),
3411
3412#ifdef FEATURE_NAPI
3413 REG_VARIABLE(CFG_NAPI_NAME, WLAN_PARAM_Integer,
3414 struct hdd_config, napi_enable,
3415 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3416 CFG_NAPI_DEFAULT,
3417 CFG_NAPI_MIN,
3418 CFG_NAPI_MAX),
3419#endif /* FEATURE_NAPI */
3420
3421#ifdef FEATURE_WLAN_EXTSCAN
3422 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME,
3423 WLAN_PARAM_Integer,
3424 struct hdd_config, extscan_passive_max_chn_time,
3425 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3426 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
3427 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN,
3428 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX),
3429
3430 REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME,
3431 WLAN_PARAM_Integer,
3432 struct hdd_config, extscan_passive_min_chn_time,
3433 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3434 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
3435 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN,
3436 CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX),
3437
3438 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME,
3439 WLAN_PARAM_Integer,
3440 struct hdd_config, extscan_active_max_chn_time,
3441 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3442 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
3443 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN,
3444 CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX),
3445
3446 REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME,
3447 WLAN_PARAM_Integer,
3448 struct hdd_config, extscan_active_min_chn_time,
3449 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3450 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
3451 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN,
3452 CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX),
3453#endif
3454
3455 REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer,
3456 struct hdd_config, ce_classify_enabled,
3457 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3458 CFG_CE_CLASSIFY_ENABLE_DEFAULT,
3459 CFG_CE_CLASSIFY_ENABLE_MIN,
3460 CFG_CE_CLASSIFY_ENABLE_MAX),
3461
3462 REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
3463 struct hdd_config, dual_mac_feature_disable,
3464 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3465 CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT,
3466 CFG_DUAL_MAC_FEATURE_DISABLE_MIN,
3467 CFG_DUAL_MAC_FEATURE_DISABLE_MAX),
3468
3469 REG_VARIABLE(CFG_TX_CHAIN_MASK_CCK, WLAN_PARAM_Integer,
3470 struct hdd_config, tx_chain_mask_cck,
3471 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3472 CFG_TX_CHAIN_MASK_CCK_DEFAULT,
3473 CFG_TX_CHAIN_MASK_CCK_MIN,
3474 CFG_TX_CHAIN_MASK_CCK_MAX),
3475
3476 REG_VARIABLE(CFG_TX_CHAIN_MASK_1SS, WLAN_PARAM_Integer,
3477 struct hdd_config, tx_chain_mask_1ss,
3478 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3479 CFG_TX_CHAIN_MASK_1SS_DEFAULT,
3480 CFG_TX_CHAIN_MASK_1SS_MIN,
3481 CFG_TX_CHAIN_MASK_1SS_MAX),
3482
3483 REG_VARIABLE(CFG_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer,
3484 struct hdd_config, self_gen_frm_pwr,
3485 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
3486 CFG_SELF_GEN_FRM_PWR_DEFAULT,
3487 CFG_SELF_GEN_FRM_PWR_MIN,
3488 CFG_SELF_GEN_FRM_PWR_MAX),
3489
3490};
3491
3492
3493/**
3494 * get_next_line() - find and locate the new line pointer
3495 * @str: pointer to string
3496 *
3497 * This function returns a pointer to the character after the occurence
3498 * of a new line character. It also modifies the original string by replacing
3499 * the '\n' character with the null character.
3500 *
3501 * Return: the pointer to the character at new line,
3502 * or NULL if no new line character was found
3503 */
3504static char *get_next_line(char *str)
3505{
3506 char c;
3507
3508 if (str == NULL || *str == '\0') {
3509 return NULL;
3510 }
3511
3512 c = *str;
3513 while (c != '\n' && c != '\0' && c != 0xd) {
3514 str = str + 1;
3515 c = *str;
3516 }
3517
3518 if (c == '\0') {
3519 return NULL;
3520 } else {
3521 *str = '\0';
3522 return str + 1;
3523 }
3524
3525 return NULL;
3526}
3527
3528/** look for space. Ascii values to look are
3529 * 0x09 == horizontal tab
3530 * 0x0a == Newline ("\n")
3531 * 0x0b == vertical tab
3532 * 0x0c == Newpage or feed form.
3533 * 0x0d == carriage return (CR or "\r")
3534 * Null ('\0') should not considered as space.
3535 */
3536#define i_isspace(ch) (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')
3537
3538/**
3539 * i_trim() - trims any leading and trailing white spaces
3540 * @str: pointer to string
3541 *
3542 * Return: the pointer of the string
3543 */
3544static char *i_trim(char *str)
3545{
3546 char *ptr;
3547
3548 if (*str == '\0')
3549 return str;
3550
3551 /* Find the first non white-space */
3552 ptr = str;
3553 while (i_isspace(*ptr))
3554 ptr++;
3555
3556 if (*ptr == '\0')
3557 return str;
3558
3559 /* This is the new start of the string */
3560 str = ptr;
3561
3562 /* Find the last non white-space */
3563 ptr += strlen(ptr) - 1;
3564
3565 while (ptr != str && i_isspace(*ptr))
3566 ptr--;
3567
3568 /* Null terminate the following character */
3569 ptr[1] = '\0';
3570
3571 return str;
3572}
3573
3574/* Maximum length of the confgiuration name and value */
3575#define CFG_VALUE_MAX_LEN 256
3576#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
3577
3578/**
3579 * hdd_cfg_get_config() - get the configuration content
3580 * @reg_table: pointer to configuration table
3581 * @cRegTableEntries: number of the configuration entries
3582 * @ini_struct: pointer to the hdd config knob
3583 * @pHddCtx: pointer to hdd context
3584 * @pBuf: buffer to store the configuration
3585 * @buflen: size of the buffer
3586 *
3587 * Return: CDF_STATUS_SUCCESS if the configuration and buffer size can carry
3588 * the content, otherwise CDF_STATUS_E_RESOURCES
3589 */
3590static CDF_STATUS hdd_cfg_get_config(REG_TABLE_ENTRY *reg_table,
3591 unsigned long cRegTableEntries,
3592 uint8_t *ini_struct,
3593 hdd_context_t *pHddCtx, char *pBuf,
3594 int buflen)
3595{
3596 unsigned int idx;
3597 REG_TABLE_ENTRY *pRegEntry = reg_table;
3598 uint32_t value;
3599 char valueStr[CFG_VALUE_MAX_LEN];
3600 char configStr[CFG_ENTRY_MAX_LEN];
3601 char *fmt;
3602 void *pField;
3603 struct cdf_mac_addr *pMacAddr;
3604 char *pCur = pBuf;
3605 int curlen;
3606
3607 /* start with an empty string */
3608 *pCur = '\0';
3609
3610 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
3611 pField = ini_struct + pRegEntry->VarOffset;
3612
3613 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
3614 (WLAN_PARAM_SignedInteger == pRegEntry->RegType) ||
3615 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
3616 value = 0;
3617 memcpy(&value, pField, pRegEntry->VarSize);
3618 if (WLAN_PARAM_HexInteger == pRegEntry->RegType) {
3619 fmt = "%x";
3620 } else if (WLAN_PARAM_SignedInteger ==
3621 pRegEntry->RegType) {
3622 fmt = "%d";
3623 } else {
3624 fmt = "%u";
3625 }
3626 snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
3627 } else if (WLAN_PARAM_String == pRegEntry->RegType) {
3628 snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s",
3629 (char *)pField);
3630 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
3631 pMacAddr = (struct cdf_mac_addr *) pField;
3632 snprintf(valueStr, CFG_VALUE_MAX_LEN,
3633 "%02x:%02x:%02x:%02x:%02x:%02x",
3634 pMacAddr->bytes[0],
3635 pMacAddr->bytes[1],
3636 pMacAddr->bytes[2],
3637 pMacAddr->bytes[3],
3638 pMacAddr->bytes[4], pMacAddr->bytes[5]);
3639 } else {
3640 snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
3641 }
3642 curlen = scnprintf(configStr, CFG_ENTRY_MAX_LEN,
3643 "%s=[%s]%s\n",
3644 pRegEntry->RegName,
3645 valueStr,
3646 test_bit(idx,
3647 (void *)&pHddCtx->config->
3648 bExplicitCfg) ? "*" : "");
3649
3650 /* Ideally we want to return the config to the application,
3651 * however the config is too big so we just printk() for now
3652 */
3653#ifdef RETURN_IN_BUFFER
3654 if (curlen <= buflen) {
3655 /* copy string + '\0' */
3656 memcpy(pCur, configStr, curlen + 1);
3657
3658 /* account for addition; */
3659 pCur += curlen;
3660 buflen -= curlen;
3661 } else {
3662 /* buffer space exhausted, return what we have */
3663 return CDF_STATUS_E_RESOURCES;
3664 }
3665#else
3666 printk(KERN_INFO "%s", configStr);
3667#endif /* RETURN_IN_BUFFER */
3668
3669 }
3670
3671#ifndef RETURN_IN_BUFFER
3672 /* notify application that output is in system log */
3673 snprintf(pCur, buflen, "WLAN configuration written to system log");
3674#endif /* RETURN_IN_BUFFER */
3675
3676 return CDF_STATUS_SUCCESS;
3677}
3678
3679/** struct tCfgIniEntry - ini configuration entry
3680 *
3681 * @name: name of the entry
3682 * @value: value of the entry
3683 */
3684typedef struct {
3685 char *name;
3686 char *value;
3687} tCfgIniEntry;
3688
3689/**
3690 * find_cfg_item() - find the configuration item
3691 * @iniTable: pointer to configuration table
3692 * @entries: number fo the configuration entries
3693 * @name: the interested configuration to find
3694 * @value: the value to read back
3695 *
3696 * Return: CDF_STATUS_SUCCESS if the interested configuration is found,
3697 * otherwise CDF_STATUS_E_FAILURE
3698 */
3699static CDF_STATUS find_cfg_item(tCfgIniEntry *iniTable, unsigned long entries,
3700 char *name, char **value)
3701{
3702 CDF_STATUS status = CDF_STATUS_E_FAILURE;
3703 unsigned long i;
3704
3705 for (i = 0; i < entries; i++) {
3706 if (strcmp(iniTable[i].name, name) == 0) {
3707 *value = iniTable[i].value;
3708 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
3709 "Found %s entry for Name=[%s] Value=[%s] ",
3710 WLAN_INI_FILE, name, *value);
3711 return CDF_STATUS_SUCCESS;
3712 }
3713 }
3714
3715 return status;
3716}
3717
3718/**
3719 * parse_hex_digit() - conversion to hex value
3720 * @c: the character to convert
3721 *
3722 * Return: the hex value, otherwise 0
3723 */
3724static int parse_hex_digit(char c)
3725{
3726 if (c >= '0' && c <= '9')
3727 return c - '0';
3728 if (c >= 'a' && c <= 'f')
3729 return c - 'a' + 10;
3730 if (c >= 'A' && c <= 'F')
3731 return c - 'A' + 10;
3732
3733 return 0;
3734}
3735
3736/**
3737 * update_mac_from_string() - convert string to 6 bytes mac address
3738 * @pHddCtx: the pointer to hdd context
3739 * @macTable: the macTable to carry the conversion
3740 * @num: number of the interface
3741 *
3742 * 00AA00BB00CC -> 0x00 0xAA 0x00 0xBB 0x00 0xCC
3743 *
3744 * Return: None
3745 */
3746static void update_mac_from_string(hdd_context_t *pHddCtx,
3747 tCfgIniEntry *macTable, int num)
3748{
3749 int i = 0, j = 0, res = 0;
3750 char *candidate = NULL;
3751 struct cdf_mac_addr macaddr[CDF_MAX_CONCURRENCY_PERSONA];
3752
3753 memset(macaddr, 0, sizeof(macaddr));
3754
3755 for (i = 0; i < num; i++) {
3756 candidate = macTable[i].value;
3757 for (j = 0; j < CDF_MAC_ADDR_SIZE; j++) {
3758 res =
3759 hex2bin(&macaddr[i].bytes[j], &candidate[(j << 1)],
3760 1);
3761 if (res < 0)
3762 break;
3763 }
3764 if (res == 0 && !cdf_is_macaddr_zero(&macaddr[i])) {
3765 cdf_mem_copy((uint8_t *) &pHddCtx->config->
3766 intfMacAddr[i].bytes[0],
3767 (uint8_t *) &macaddr[i].bytes[0],
3768 CDF_MAC_ADDR_SIZE);
3769 }
3770 }
3771}
3772
3773/**
3774 * hdd_apply_cfg_ini() - apply the ini configuration file
3775 * @pHddCtx: the pointer to hdd context
3776 * @iniTable: pointer to configuration table
3777 * @entries: number fo the configuration entries
3778 * It overwrites the MAC address if config file exist.
3779 *
3780 * Return: CDF_STATUS_SUCCESS if the ini configuration file is correctly parsed,
3781 * otherwise CDF_STATUS_E_INVAL
3782 */
3783static CDF_STATUS hdd_apply_cfg_ini(hdd_context_t *pHddCtx,
3784 tCfgIniEntry *iniTable,
3785 unsigned long entries)
3786{
3787 CDF_STATUS match_status = CDF_STATUS_E_FAILURE;
3788 CDF_STATUS ret_status = CDF_STATUS_SUCCESS;
3789 unsigned int idx;
3790 void *pField;
3791 char *value_str = NULL;
3792 unsigned long len_value_str;
3793 char *candidate;
3794 uint32_t value;
3795 int32_t svalue;
3796 void *pStructBase = pHddCtx->config;
3797 REG_TABLE_ENTRY *pRegEntry = g_registry_table;
3798 unsigned long cRegTableEntries = CDF_ARRAY_SIZE(g_registry_table);
3799 uint32_t cbOutString;
3800 int i;
3801 int rv;
3802
3803 /* sanity test */
3804 if (MAX_CFG_INI_ITEMS < cRegTableEntries) {
3805 hddLog(LOGE,
3806 "%s: MAX_CFG_INI_ITEMS too small, must be at least %ld",
3807 __func__, cRegTableEntries);
3808 }
3809
3810 for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
3811 /* Calculate the address of the destination field in the structure. */
3812 pField = ((uint8_t *) pStructBase) + pRegEntry->VarOffset;
3813
3814 match_status =
3815 find_cfg_item(iniTable, entries, pRegEntry->RegName,
3816 &value_str);
3817
3818 if ((match_status != CDF_STATUS_SUCCESS)
3819 && (pRegEntry->Flags & VAR_FLAGS_REQUIRED)) {
3820 /* If we could not read the cfg item and it is required, this is an error. */
3821 hddLog(LOGE,
3822 "%s: Failed to read required config parameter %s",
3823 __func__, pRegEntry->RegName);
3824 ret_status = CDF_STATUS_E_FAILURE;
3825 break;
3826 }
3827
3828 if ((WLAN_PARAM_Integer == pRegEntry->RegType) ||
3829 (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
3830 /* If successfully read from the registry, use the value read.
3831 * If not, use the default value.
3832 */
3833 if (match_status == CDF_STATUS_SUCCESS
3834 && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
3835 rv = kstrtou32(value_str, 10, &value);
3836 if (rv < 0) {
3837 hddLog(LOGE,
3838 "%s: Reg Parameter %s invalid. Enforcing default",
3839 __func__, pRegEntry->RegName);
3840 value = pRegEntry->VarDefault;
3841 }
3842 } else if (match_status == CDF_STATUS_SUCCESS
3843 && (WLAN_PARAM_HexInteger ==
3844 pRegEntry->RegType)) {
3845 rv = kstrtou32(value_str, 16, &value);
3846 if (rv < 0) {
3847 hddLog(LOGE,
3848 "%s: Reg paramter %s invalid. Enforcing default",
3849 __func__, pRegEntry->RegName);
3850 value = pRegEntry->VarDefault;
3851 }
3852 } else {
3853 value = pRegEntry->VarDefault;
3854 }
3855
3856 /* If this parameter needs range checking, do it here. */
3857 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
3858 if (value > pRegEntry->VarMax) {
3859 hddLog(LOGE,
3860 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Maximum",
3861 __func__, pRegEntry->RegName,
3862 value, pRegEntry->VarMax);
3863 value = pRegEntry->VarMax;
3864 }
3865
3866 if (value < pRegEntry->VarMin) {
3867 hddLog(LOGE,
3868 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Minimum",
3869 __func__, pRegEntry->RegName,
3870 value, pRegEntry->VarMin);
3871 value = pRegEntry->VarMin;
3872 }
3873 }
3874 /* If this parameter needs range checking, do it here. */
3875 else if (pRegEntry->
3876 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
3877 if (value > pRegEntry->VarMax) {
3878 hddLog(LOGE,
3879 "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Default= %lu",
3880 __func__, pRegEntry->RegName,
3881 value, pRegEntry->VarMax,
3882 pRegEntry->VarDefault);
3883 value = pRegEntry->VarDefault;
3884 }
3885
3886 if (value < pRegEntry->VarMin) {
3887 hddLog(LOGE,
3888 "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Default= %lu",
3889 __func__, pRegEntry->RegName,
3890 value, pRegEntry->VarMin,
3891 pRegEntry->VarDefault);
3892 value = pRegEntry->VarDefault;
3893 }
3894 }
3895 /* Move the variable into the output field. */
3896 memcpy(pField, &value, pRegEntry->VarSize);
3897 } else if (WLAN_PARAM_SignedInteger == pRegEntry->RegType) {
3898 /* If successfully read from the registry, use the value read.
3899 * If not, use the default value.
3900 */
3901 if (CDF_STATUS_SUCCESS == match_status) {
3902 rv = kstrtos32(value_str, 10, &svalue);
3903 if (rv < 0) {
3904 hddLog(CDF_TRACE_LEVEL_WARN,
3905 "%s: Reg Parameter %s invalid. Enforcing Default",
3906 __func__, pRegEntry->RegName);
3907 svalue =
3908 (int32_t) pRegEntry->VarDefault;
3909 }
3910 } else {
3911 svalue = (int32_t) pRegEntry->VarDefault;
3912 }
3913
3914 /* If this parameter needs range checking, do it here. */
3915 if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
3916 if (svalue > (int32_t) pRegEntry->VarMax) {
3917 hddLog(LOGE,
3918 "%s: Reg Parameter %s > allowed Maximum "
3919 "[%d > %d]. Enforcing Maximum",
3920 __func__, pRegEntry->RegName,
3921 svalue, (int)pRegEntry->VarMax);
3922 svalue = (int32_t) pRegEntry->VarMax;
3923 }
3924
3925 if (svalue < (int32_t) pRegEntry->VarMin) {
3926 hddLog(LOGE,
3927 "%s: Reg Parameter %s < allowed Minimum "
3928 "[%d < %d]. Enforcing Minimum",
3929 __func__, pRegEntry->RegName,
3930 svalue, (int)pRegEntry->VarMin);
3931 svalue = (int32_t) pRegEntry->VarMin;
3932 }
3933 }
3934 /* If this parameter needs range checking, do it here. */
3935 else if (pRegEntry->
3936 Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
3937 if (svalue > (int32_t) pRegEntry->VarMax) {
3938 hddLog(LOGE,
3939 "%s: Reg Parameter %s > allowed Maximum "
3940 "[%d > %d]. Enforcing Default= %d",
3941 __func__, pRegEntry->RegName,
3942 svalue, (int)pRegEntry->VarMax,
3943 (int)pRegEntry->VarDefault);
3944 svalue =
3945 (int32_t) pRegEntry->VarDefault;
3946 }
3947
3948 if (svalue < (int32_t) pRegEntry->VarMin) {
3949 hddLog(LOGE,
3950 "%s: Reg Parameter %s < allowed Minimum "
3951 "[%d < %d]. Enforcing Default= %d",
3952 __func__, pRegEntry->RegName,
3953 svalue, (int)pRegEntry->VarMin,
3954 (int)pRegEntry->VarDefault);
3955 svalue = pRegEntry->VarDefault;
3956 }
3957 }
3958 /* Move the variable into the output field. */
3959 memcpy(pField, &svalue, pRegEntry->VarSize);
3960 }
3961 /* Handle string parameters */
3962 else if (WLAN_PARAM_String == pRegEntry->RegType) {
3963#ifdef WLAN_CFG_DEBUG
3964 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
3965 "RegName = %s, VarOffset %u VarSize %u VarDefault %s",
3966 pRegEntry->RegName, pRegEntry->VarOffset,
3967 pRegEntry->VarSize,
3968 (char *)pRegEntry->VarDefault);
3969#endif
3970
3971 if (match_status == CDF_STATUS_SUCCESS) {
3972 len_value_str = strlen(value_str);
3973
3974 if (len_value_str > (pRegEntry->VarSize - 1)) {
3975 hddLog(LOGE,
3976 "%s: Invalid Value=[%s] specified for Name=[%s] in %s",
3977 __func__, value_str,
3978 pRegEntry->RegName,
3979 WLAN_INI_FILE);
3980 cbOutString =
3981 util_min(strlen
3982 ((char *)pRegEntry->
3983 VarDefault),
3984 pRegEntry->VarSize - 1);
3985 memcpy(pField,
3986 (void *)(pRegEntry->VarDefault),
3987 cbOutString);
3988 ((uint8_t *) pField)[cbOutString] =
3989 '\0';
3990 } else {
3991 memcpy(pField, (void *)(value_str),
3992 len_value_str);
3993 ((uint8_t *) pField)[len_value_str] =
3994 '\0';
3995 }
3996 } else {
3997 /* Failed to read the string parameter from the registry. Use the default. */
3998 cbOutString =
3999 util_min(strlen((char *)pRegEntry->VarDefault),
4000 pRegEntry->VarSize - 1);
4001 memcpy(pField, (void *)(pRegEntry->VarDefault),
4002 cbOutString);
4003 ((uint8_t *) pField)[cbOutString] = '\0';
4004 }
4005 } else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
4006 if (pRegEntry->VarSize != CDF_MAC_ADDR_SIZE) {
4007 hddLog(LOGE,
4008 "%s: Invalid VarSize %u for Name=[%s]",
4009 __func__, pRegEntry->VarSize,
4010 pRegEntry->RegName);
4011 continue;
4012 }
4013 candidate = (char *)pRegEntry->VarDefault;
4014 if (match_status == CDF_STATUS_SUCCESS) {
4015 len_value_str = strlen(value_str);
4016 if (len_value_str != (CDF_MAC_ADDR_SIZE * 2)) {
4017 hddLog(LOGE,
4018 "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s",
4019 __func__, value_str,
4020 pRegEntry->RegName,
4021 WLAN_INI_FILE);
4022 } else
4023 candidate = value_str;
4024 }
4025 /* parse the string and store it in the byte array */
4026 for (i = 0; i < CDF_MAC_ADDR_SIZE; i++) {
4027 ((char *)pField)[i] =
4028 (char)(parse_hex_digit(candidate[i * 2]) *
4029 16 +
4030 parse_hex_digit(candidate[i * 2 + 1]));
4031 }
4032 } else {
4033 hddLog(LOGE,
4034 "%s: Unknown param type for name[%s] in registry table",
4035 __func__, pRegEntry->RegName);
4036 }
4037
4038 /* did we successfully parse a cfg item for this parameter? */
4039 if ((match_status == CDF_STATUS_SUCCESS) &&
4040 (idx < MAX_CFG_INI_ITEMS)) {
4041 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4042 }
4043 }
4044
4045 return ret_status;
4046}
4047
4048/**
4049 * hdd_execute_config_command() - executes an arbitrary configuration command
4050 * @reg_table: the pointer to configuration table
4051 * @tableSize: the size of the configuration table
4052 * @ini_struct: pointer to the hdd config knob
4053 * @pHddCtx: the pointer to hdd context
4054 * @command: the command to run
4055 *
4056 * Return: CDF_STATUS_SUCCESS if the command is found and able to execute,
4057 * otherwise the appropriate CDF_STATUS will be returned
4058 */
4059static CDF_STATUS hdd_execute_config_command(REG_TABLE_ENTRY *reg_table,
4060 unsigned long tableSize,
4061 uint8_t *ini_struct,
4062 hdd_context_t *pHddCtx,
4063 char *command)
4064{
4065 REG_TABLE_ENTRY *pRegEntry;
4066 char *clone;
4067 char *pCmd;
4068 void *pField;
4069 char *name;
4070 char *value_str;
4071 uint32_t value;
4072 int32_t svalue;
4073 size_t len_value_str;
4074 unsigned int idx;
4075 unsigned int i;
4076 CDF_STATUS vstatus;
4077 int rv;
4078
4079 /* assume failure until proven otherwise */
4080 vstatus = CDF_STATUS_E_FAILURE;
4081
4082 /* clone the command so that we can manipulate it */
4083 clone = kstrdup(command, GFP_ATOMIC);
4084 if (NULL == clone) {
4085 hddLog(LOGE,
4086 "%s: memory allocation failure, unable to process [%s]",
4087 __func__, command);
4088 return vstatus;
4089 }
4090 /* 'clone' will point to the beginning of the string so it can be freed
4091 * 'pCmd' will be used to walk/parse the command
4092 */
4093 pCmd = clone;
4094
4095 /* get rid of leading/trailing whitespace */
4096 pCmd = i_trim(pCmd);
4097 if ('\0' == *pCmd) {
4098 /* only whitespace */
4099 hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
4100 __func__, command);
4101 goto done;
4102 }
4103 /* parse the <name> = <value> */
4104 name = pCmd;
4105 while (('=' != *pCmd) && ('\0' != *pCmd)) {
4106 pCmd++;
4107 }
4108 if ('\0' == *pCmd) {
4109 /* did not find '=' */
4110 hddLog(LOGE, "%s: invalid command, no '=':[%s]",
4111 __func__, command);
4112 goto done;
4113 }
4114 /* replace '=' with NUL to terminate the <name> */
4115 *pCmd++ = '\0';
4116 name = i_trim(name);
4117 if ('\0' == *name) {
4118 /* did not find a name */
4119 hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
4120 __func__, command);
4121 goto done;
4122 }
4123
4124 value_str = i_trim(pCmd);
4125 if ('\0' == *value_str) {
4126 /* did not find a value */
4127 hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
4128 __func__, command);
4129 goto done;
4130 }
4131 /* lookup the configuration item */
4132 for (idx = 0; idx < tableSize; idx++) {
4133 if (0 == strcmp(name, reg_table[idx].RegName)) {
4134 /* found a match */
4135 break;
4136 }
4137 }
4138 if (tableSize == idx) {
4139 /* did not match the name */
4140 hddLog(LOGE,
4141 "%s: invalid command, unknown configuration item:[%s]",
4142 __func__, command);
4143 goto done;
4144 }
4145
4146 pRegEntry = &reg_table[idx];
4147 if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG)) {
4148 /* does not support dynamic configuration */
4149 hddLog(LOGE, "%s: Global_Registry_Table.%s does not support "
4150 "dynamic configuration", __func__, name);
4151 vstatus = CDF_STATUS_E_PERM;
4152 goto done;
4153 }
4154
4155 pField = ini_struct + pRegEntry->VarOffset;
4156
4157 switch (pRegEntry->RegType) {
4158 case WLAN_PARAM_Integer:
4159 rv = kstrtou32(value_str, 10, &value);
4160 if (rv < 0)
4161 goto done;
4162 if (value < pRegEntry->VarMin) {
4163 /* out of range */
4164 hddLog(LOGE,
4165 "%s: invalid command, value %u < min value %lu",
4166 __func__, value, pRegEntry->VarMin);
4167 goto done;
4168 }
4169 if (value > pRegEntry->VarMax) {
4170 /* out of range */
4171 hddLog(LOGE,
4172 "%s: invalid command, value %u > max value %lu",
4173 __func__, value, pRegEntry->VarMax);
4174 goto done;
4175 }
4176 memcpy(pField, &value, pRegEntry->VarSize);
4177 break;
4178
4179 case WLAN_PARAM_HexInteger:
4180 rv = kstrtou32(value_str, 16, &value);
4181 if (rv < 0)
4182 goto done;
4183 if (value < pRegEntry->VarMin) {
4184 /* out of range */
4185 hddLog(LOGE,
4186 "%s: invalid command, value %x < min value %lx",
4187 __func__, value, pRegEntry->VarMin);
4188 goto done;
4189 }
4190 if (value > pRegEntry->VarMax) {
4191 /* out of range */
4192 hddLog(LOGE,
4193 "%s: invalid command, value %x > max value %lx",
4194 __func__, value, pRegEntry->VarMax);
4195 goto done;
4196 }
4197 memcpy(pField, &value, pRegEntry->VarSize);
4198 break;
4199
4200 case WLAN_PARAM_SignedInteger:
4201 rv = kstrtos32(value_str, 10, &svalue);
4202 if (rv < 0)
4203 goto done;
4204 if (svalue < (int32_t) pRegEntry->VarMin) {
4205 /* out of range */
4206 hddLog(LOGE,
4207 "%s: invalid command, value %d < min value %d",
4208 __func__, svalue, (int)pRegEntry->VarMin);
4209 goto done;
4210 }
4211 if (svalue > (int32_t) pRegEntry->VarMax) {
4212 /* out of range */
4213 hddLog(LOGE,
4214 "%s: invalid command, value %d > max value %d",
4215 __func__, svalue, (int)pRegEntry->VarMax);
4216 goto done;
4217 }
4218 memcpy(pField, &svalue, pRegEntry->VarSize);
4219 break;
4220
4221 case WLAN_PARAM_String:
4222 len_value_str = strlen(value_str);
4223 if (len_value_str > (pRegEntry->VarSize - 1)) {
4224 /* too big */
4225 hddLog(LOGE,
4226 "%s: invalid command, string [%s] length "
4227 "%zu exceeds maximum length %u",
4228 __func__, value_str,
4229 len_value_str, (pRegEntry->VarSize - 1));
4230 goto done;
4231 }
4232 /* copy string plus NUL */
4233 memcpy(pField, value_str, (len_value_str + 1));
4234 break;
4235
4236 case WLAN_PARAM_MacAddr:
4237 len_value_str = strlen(value_str);
4238 if (len_value_str != (CDF_MAC_ADDR_SIZE * 2)) {
4239 /* out of range */
4240 hddLog(LOGE,
4241 "%s: invalid command, MAC address [%s] length "
4242 "%zu is not expected length %u",
4243 __func__, value_str,
4244 len_value_str, (CDF_MAC_ADDR_SIZE * 2));
4245 goto done;
4246 }
4247 /* parse the string and store it in the byte array */
4248 for (i = 0; i < CDF_MAC_ADDR_SIZE; i++) {
4249 ((char *)pField)[i] = (char)
4250 ((parse_hex_digit(value_str[(i * 2)]) * 16) +
4251 parse_hex_digit(value_str[(i * 2) + 1]));
4252 }
4253 break;
4254
4255 default:
4256 goto done;
4257 }
4258
4259 /* if we get here, we had a successful modification */
4260 vstatus = CDF_STATUS_SUCCESS;
4261
4262 /* config table has been modified, is there a notifier? */
4263 if (NULL != pRegEntry->pfnDynamicnotify) {
4264 (pRegEntry->pfnDynamicnotify)(pHddCtx, pRegEntry->notifyId);
4265 }
4266 /* note that this item was explicitly configured */
4267 if (idx < MAX_CFG_INI_ITEMS) {
4268 set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
4269 }
4270done:
4271 kfree(clone);
4272 return vstatus;
4273}
4274
4275/**
4276 * hdd_set_power_save_offload_config() - set power save offload configuration
4277 * @pHddCtx: the pointer to hdd context
4278 *
4279 * Return: none
4280 */
4281static void hdd_set_power_save_offload_config(hdd_context_t *pHddCtx)
4282{
4283 struct hdd_config *pConfig = pHddCtx->config;
4284 uint32_t listenInterval = 0;
4285
4286 if (strcmp(pConfig->PowerUsageControl, "Min") == 0) {
4287 listenInterval = pConfig->nBmpsMinListenInterval;
4288 } else if (strcmp(pConfig->PowerUsageControl, "Max") == 0) {
4289 listenInterval = pConfig->nBmpsMaxListenInterval;
4290 } else if (strcmp(pConfig->PowerUsageControl, "Mod") == 0) {
4291 listenInterval = pConfig->nBmpsModListenInterval;
4292 }
4293
4294 /*
4295 * Based on Mode Set the LI
4296 * Otherwise default LI value of 1 will
4297 * be taken
4298 */
4299 if (listenInterval) {
4300 /*
4301 * setcfg for listenInterval.
4302 * Make sure CFG is updated because PE reads this
4303 * from CFG at the time of assoc or reassoc
4304 */
4305 sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_LISTEN_INTERVAL,
4306 listenInterval);
4307 }
4308
4309}
4310
4311/**
4312 * hdd_cfg_print() - print the hdd configuration
4313 * @iniTable: pointer to hdd context
4314 *
4315 * Return: None
4316 */
4317void hdd_cfg_print(hdd_context_t *pHddCtx)
4318{
4319 int i;
4320
4321 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4322 "*********Config values in HDD Adapter*******");
4323 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4324 "Name = [RTSThreshold] Value = %u",
4325 pHddCtx->config->RTSThreshold);
4326 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4327 "Name = [OperatingChannel] Value = [%u]",
4328 pHddCtx->config->OperatingChannel);
4329 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4330 "Name = [PowerUsageControl] Value = [%s]",
4331 pHddCtx->config->PowerUsageControl);
4332 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4333 "Name = [fIsImpsEnabled] Value = [%u]",
4334 pHddCtx->config->fIsImpsEnabled);
4335 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4336 "Name = [nVccRssiTrigger] Value = [%u]",
4337 pHddCtx->config->nVccRssiTrigger);
4338 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4339 "Name = [gIbssBssid] Value =[" MAC_ADDRESS_STR "]",
4340 MAC_ADDR_ARRAY(pHddCtx->config->IbssBssid.bytes));
4341
4342 for (i = 0; i < CDF_MAX_CONCURRENCY_PERSONA; i++) {
4343 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4344 "Name = [Intf%dMacAddress] Value =[" MAC_ADDRESS_STR "]",
4345 i, MAC_ADDR_ARRAY(pHddCtx->config->intfMacAddr[i].bytes));
4346 }
4347
4348 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4349 "Name = [gApEnableUapsd] value = [%u]",
4350 pHddCtx->config->apUapsdEnabled);
4351
4352 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4353 "Name = [gEnableApProt] value = [%u]",
4354 pHddCtx->config->apProtEnabled);
4355 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4356 "Name = [gAPAutoShutOff] Value = [%u]",
4357 pHddCtx->config->nAPAutoShutOff);
4358#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
4359 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4360 "Name = [gWlanMccToSccSwitchMode] Value = [%u]",
4361 pHddCtx->config->WlanMccToSccSwitchMode);
4362#endif
4363#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
4364 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4365 "Name = [gWlanAutoShutdown] Value = [%u]",
4366 pHddCtx->config->WlanAutoShutdown);
4367#endif
4368 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4369 "Name = [gEnableListenMode] Value = [%u]",
4370 pHddCtx->config->nEnableListenMode);
4371 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4372 "Name = [gApProtection] value = [%u]",
4373 pHddCtx->config->apProtection);
4374 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4375 "Name = [gEnableApOBSSProt] value = [%u]",
4376 pHddCtx->config->apOBSSProtEnabled);
4377 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4378 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS,
4379 pHddCtx->config->force_sap_acs);
4380 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4381 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_START_CH,
4382 pHddCtx->config->force_sap_acs_st_ch);
4383 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4384 "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_END_CH,
4385 pHddCtx->config->force_sap_acs_end_ch);
4386#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
4387 CDF_TRACE(CDF_MODULE_ID_HDD,
4388 CDF_TRACE_LEVEL_INFO_HIGH,
4389 "Name = [sap_channel_avoidance] value = [%u]",
4390 pHddCtx->config->sap_channel_avoidance);
4391#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
4392 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4393 "Name = [%s] value = [%u]", CFG_SAP_P2P_11AC_OVERRIDE_NAME,
4394 pHddCtx->config->sap_p2p_11ac_override);
4395 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4396 "Name = [ChannelBondingMode] Value = [%u]",
4397 pHddCtx->config->nChannelBondingMode24GHz);
4398 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4399 "Name = [ChannelBondingMode] Value = [%u]",
4400 pHddCtx->config->nChannelBondingMode5GHz);
4401 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4402 "Name = [dot11Mode] Value = [%u]",
4403 pHddCtx->config->dot11Mode);
4404 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4405 "Name = [WmmMode] Value = [%u] ", pHddCtx->config->WmmMode);
4406 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4407 "Name = [UapsdMask] Value = [0x%x] ",
4408 pHddCtx->config->UapsdMask);
4409 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4410 "Name = [PktClassificationBasis] Value = [%u] ",
4411 pHddCtx->config->PktClassificationBasis);
4412 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4413 "Name = [ImplicitQosIsEnabled] Value = [%u]",
4414 (int)pHddCtx->config->bImplicitQosEnabled);
4415
4416 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4417 "Name = [InfraUapsdVoSrvIntv] Value = [%u] ",
4418 pHddCtx->config->InfraUapsdVoSrvIntv);
4419 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4420 "Name = [InfraUapsdVoSuspIntv] Value = [%u] ",
4421 pHddCtx->config->InfraUapsdVoSuspIntv);
4422
4423 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4424 "Name = [InfraUapsdViSrvIntv] Value = [%u] ",
4425 pHddCtx->config->InfraUapsdViSrvIntv);
4426 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4427 "Name = [InfraUapsdViSuspIntv] Value = [%u] ",
4428 pHddCtx->config->InfraUapsdViSuspIntv);
4429
4430 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4431 "Name = [InfraUapsdBeSrvIntv] Value = [%u] ",
4432 pHddCtx->config->InfraUapsdBeSrvIntv);
4433 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4434 "Name = [InfraUapsdBeSuspIntv] Value = [%u] ",
4435 pHddCtx->config->InfraUapsdBeSuspIntv);
4436
4437 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4438 "Name = [InfraUapsdBkSrvIntv] Value = [%u] ",
4439 pHddCtx->config->InfraUapsdBkSrvIntv);
4440 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4441 "Name = [InfraUapsdBkSuspIntv] Value = [%u] ",
4442 pHddCtx->config->InfraUapsdBkSuspIntv);
4443#ifdef FEATURE_WLAN_ESE
4444 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4445 "Name = [InfraInactivityInterval] Value = [%u] ",
4446 pHddCtx->config->InfraInactivityInterval);
4447 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4448 "Name = [EseEnabled] Value = [%u] ",
4449 pHddCtx->config->isEseIniFeatureEnabled);
4450 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4451 "Name = [FastTransitionEnabled] Value = [%u] ",
4452 pHddCtx->config->isFastTransitionEnabled);
4453 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4454 "Name = [gTxPowerCap] Value = [%u] dBm ",
4455 pHddCtx->config->nTxPowerCap);
4456#endif
4457#ifdef FEATURE_WLAN_LFR
4458 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4459 "Name = [FastRoamEnabled] Value = [%u] ",
4460 pHddCtx->config->isFastRoamIniFeatureEnabled);
4461 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4462 "Name = [MAWCEnabled] Value = [%u] ",
4463 pHddCtx->config->MAWCEnabled);
4464#endif
4465#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
4466 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4467 "Name = [RoamRssiDiff] Value = [%u] ",
4468 pHddCtx->config->RoamRssiDiff);
4469 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4470 "Name = [isWESModeEnabled] Value = [%u] ",
4471 pHddCtx->config->isWESModeEnabled);
4472#endif
4473#ifdef FEATURE_WLAN_OKC
4474 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4475 "Name = [OkcEnabled] Value = [%u] ",
4476 pHddCtx->config->isOkcIniFeatureEnabled);
4477#endif
4478#ifdef FEATURE_WLAN_SCAN_PNO
4479 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4480 "Name = [configPNOScanSupport] Value = [%u] ",
4481 pHddCtx->config->configPNOScanSupport);
4482 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4483 "Name = [configPNOScanTimerRepeatValue] Value = [%u] ",
4484 pHddCtx->config->configPNOScanTimerRepeatValue);
4485#endif
4486#ifdef FEATURE_WLAN_TDLS
4487 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4488 "Name = [fEnableTDLSSupport] Value = [%u] ",
4489 pHddCtx->config->fEnableTDLSSupport);
4490 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4491 "Name = [fEnableTDLSImplicitTrigger] Value = [%u] ",
4492 pHddCtx->config->fEnableTDLSImplicitTrigger);
4493 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4494 "Name = [fTDLSExternalControl] Value = [%u] ",
4495 pHddCtx->config->fTDLSExternalControl);
4496 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4497 "Name = [fTDLSUapsdMask] Value = [%u] ",
4498 pHddCtx->config->fTDLSUapsdMask);
4499 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4500 "Name = [fEnableTDLSBufferSta] Value = [%u] ",
4501 pHddCtx->config->fEnableTDLSBufferSta);
4502 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4503 "Name = [fEnableTDLSWmmMode] Value = [%u] ",
4504 pHddCtx->config->fEnableTDLSWmmMode);
4505 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4506 "Name = [enable_tdls_scan] Value = [%u]",
4507 pHddCtx->config->enable_tdls_scan);
4508#endif
4509 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4510 "Name = [InfraDirAcVo] Value = [%u] ",
4511 pHddCtx->config->InfraDirAcVo);
4512 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4513 "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",
4514 pHddCtx->config->InfraNomMsduSizeAcVo);
4515 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4516 "Name = [InfraMeanDataRateAcVo] Value = [0x%x] ",
4517 pHddCtx->config->InfraMeanDataRateAcVo);
4518 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4519 "Name = [InfraMinPhyRateAcVo] Value = [0x%x] ",
4520 pHddCtx->config->InfraMinPhyRateAcVo);
4521 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4522 "Name = [InfraSbaAcVo] Value = [0x%x] ",
4523 pHddCtx->config->InfraSbaAcVo);
4524
4525 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4526 "Name = [InfraDirAcVi] Value = [%u] ",
4527 pHddCtx->config->InfraDirAcVi);
4528 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4529 "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",
4530 pHddCtx->config->InfraNomMsduSizeAcVi);
4531 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4532 "Name = [InfraMeanDataRateAcVi] Value = [0x%x] ",
4533 pHddCtx->config->InfraMeanDataRateAcVi);
4534 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4535 "Name = [InfraMinPhyRateAcVi] Value = [0x%x] ",
4536 pHddCtx->config->InfraMinPhyRateAcVi);
4537 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4538 "Name = [InfraSbaAcVi] Value = [0x%x] ",
4539 pHddCtx->config->InfraSbaAcVi);
4540
4541 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4542 "Name = [InfraDirAcBe] Value = [%u] ",
4543 pHddCtx->config->InfraDirAcBe);
4544 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4545 "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",
4546 pHddCtx->config->InfraNomMsduSizeAcBe);
4547 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4548 "Name = [InfraMeanDataRateAcBe] Value = [0x%x] ",
4549 pHddCtx->config->InfraMeanDataRateAcBe);
4550 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4551 "Name = [InfraMinPhyRateAcBe] Value = [0x%x] ",
4552 pHddCtx->config->InfraMinPhyRateAcBe);
4553 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4554 "Name = [InfraSbaAcBe] Value = [0x%x] ",
4555 pHddCtx->config->InfraSbaAcBe);
4556
4557 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4558 "Name = [InfraDirAcBk] Value = [%u] ",
4559 pHddCtx->config->InfraDirAcBk);
4560 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4561 "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",
4562 pHddCtx->config->InfraNomMsduSizeAcBk);
4563 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4564 "Name = [InfraMeanDataRateAcBk] Value = [0x%x] ",
4565 pHddCtx->config->InfraMeanDataRateAcBk);
4566 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4567 "Name = [InfraMinPhyRateAcBk] Value = [0x%x] ",
4568 pHddCtx->config->InfraMinPhyRateAcBk);
4569 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4570 "Name = [InfraSbaAcBk] Value = [0x%x] ",
4571 pHddCtx->config->InfraSbaAcBk);
4572
4573 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4574 "Name = [DelayedTriggerFrmInt] Value = [%u] ",
4575 pHddCtx->config->DelayedTriggerFrmInt);
4576 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4577 "Name = [mcastBcastFilterSetting] Value = [%u] ",
4578 pHddCtx->config->mcastBcastFilterSetting);
4579 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4580 "Name = [fhostArpOffload] Value = [%u] ",
4581 pHddCtx->config->fhostArpOffload);
4582 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4583 "Name = [ssdp] Value = [%u] ", pHddCtx->config->ssdp);
4584#ifdef FEATURE_WLAN_RA_FILTERING
4585 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4586 "Name = [RArateLimitInterval] Value = [%u] ",
4587 pHddCtx->config->RArateLimitInterval);
4588 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4589 "Name = [IsRArateLimitEnabled] Value = [%u] ",
4590 pHddCtx->config->IsRArateLimitEnabled);
4591#endif
4592#ifdef WLAN_FEATURE_VOWIFI_11R
4593 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4594 "Name = [fFTResourceReqSupported] Value = [%u] ",
4595 pHddCtx->config->fFTResourceReqSupported);
4596#endif
4597
4598#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
4599 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4600 "Name = [nNeighborLookupRssiThreshold] Value = [%u] ",
4601 pHddCtx->config->nNeighborLookupRssiThreshold);
4602 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4603 "Name = [delay_before_vdev_stop] Value = [%u] ",
4604 pHddCtx->config->delay_before_vdev_stop);
4605 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4606 "Name = [nOpportunisticThresholdDiff] Value = [%u] ",
4607 pHddCtx->config->nOpportunisticThresholdDiff);
4608 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4609 "Name = [nRoamRescanRssiDiff] Value = [%u] ",
4610 pHddCtx->config->nRoamRescanRssiDiff);
4611 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4612 "Name = [nNeighborScanMinChanTime] Value = [%u] ",
4613 pHddCtx->config->nNeighborScanMinChanTime);
4614 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4615 "Name = [nNeighborScanMaxChanTime] Value = [%u] ",
4616 pHddCtx->config->nNeighborScanMaxChanTime);
4617 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4618 "Name = [nMaxNeighborRetries] Value = [%u] ",
4619 pHddCtx->config->nMaxNeighborReqTries);
4620 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4621 "Name = [nNeighborScanPeriod] Value = [%u] ",
4622 pHddCtx->config->nNeighborScanPeriod);
4623 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4624 "Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",
4625 pHddCtx->config->nNeighborResultsRefreshPeriod);
4626 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4627 "Name = [nEmptyScanRefreshPeriod] Value = [%u] ",
4628 pHddCtx->config->nEmptyScanRefreshPeriod);
4629 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4630 "Name = [nRoamBmissFirstBcnt] Value = [%u] ",
4631 pHddCtx->config->nRoamBmissFirstBcnt);
4632 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4633 "Name = [nRoamBmissFinalBcnt] Value = [%u] ",
4634 pHddCtx->config->nRoamBmissFinalBcnt);
4635 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4636 "Name = [nRoamBeaconRssiWeight] Value = [%u] ",
4637 pHddCtx->config->nRoamBeaconRssiWeight);
4638 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4639 "Name = [allowDFSChannelRoam] Value = [%u] ",
4640 pHddCtx->config->allowDFSChannelRoam);
4641 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4642 "Name = [nhi_rssi_scan_max_count] Value = [%u] ",
4643 pHddCtx->config->nhi_rssi_scan_max_count);
4644 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4645 "Name = [nhi_rssi_scan_rssi_delta] Value = [%u] ",
4646 pHddCtx->config->nhi_rssi_scan_rssi_delta);
4647 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4648 "Name = [nhi_rssi_scan_delay] Value = [%u] ",
4649 pHddCtx->config->nhi_rssi_scan_delay);
4650 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4651 "Name = [nhi_rssi_scan_rssi_ub] Value = [%u] ",
4652 pHddCtx->config->nhi_rssi_scan_rssi_ub);
4653#endif
4654 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4655 "Name = [burstSizeDefinition] Value = [0x%x] ",
4656 pHddCtx->config->burstSizeDefinition);
4657 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4658 "Name = [tsInfoAckPolicy] Value = [0x%x] ",
4659 pHddCtx->config->tsInfoAckPolicy);
4660 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4661 "Name = [rfSettlingTimeUs] Value = [%u] ",
4662 pHddCtx->config->rfSettlingTimeUs);
4663 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4664 "Name = [bSingleTidRc] Value = [%u] ",
4665 pHddCtx->config->bSingleTidRc);
4666 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4667 "Name = [gDynamicPSPollvalue] Value = [%u] ",
4668 pHddCtx->config->dynamicPsPollValue);
4669 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4670 "Name = [gAddTSWhenACMIsOff] Value = [%u] ",
4671 pHddCtx->config->AddTSWhenACMIsOff);
4672 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4673 "Name = [gValidateScanList] Value = [%u] ",
4674 pHddCtx->config->fValidateScanList);
4675
4676 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4677 "Name = [gStaKeepAlivePeriod] Value = [%u] ",
4678 pHddCtx->config->infraStaKeepAlivePeriod);
4679 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4680 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
4681 pHddCtx->config->apDataAvailPollPeriodInMs);
4682 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4683 "Name = [BandCapability] Value = [%u] ",
4684 pHddCtx->config->nBandCapability);
4685 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4686 "Name = [fEnableBeaconEarlyTermination] Value = [%u] ",
4687 pHddCtx->config->fEnableBeaconEarlyTermination);
4688 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4689 "Name = [teleBcnWakeupEnable] Value = [%u] ",
4690 pHddCtx->config->teleBcnWakeupEn);
4691 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4692 "Name = [transListenInterval] Value = [%u] ",
4693 pHddCtx->config->nTeleBcnTransListenInterval);
4694 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4695 "Name = [transLiNumIdleBeacons] Value = [%u] ",
4696 pHddCtx->config->nTeleBcnTransLiNumIdleBeacons);
4697 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4698 "Name = [maxListenInterval] Value = [%u] ",
4699 pHddCtx->config->nTeleBcnMaxListenInterval);
4700 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4701 "Name = [maxLiNumIdleBeacons] Value = [%u] ",
4702 pHddCtx->config->nTeleBcnMaxLiNumIdleBeacons);
4703 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4704 "Name = [bcnEarlyTermWakeInterval] Value = [%u] ",
4705 pHddCtx->config->bcnEarlyTermWakeInterval);
4706 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4707 "Name = [gApDataAvailPollInterVal] Value = [%u] ",
4708 pHddCtx->config->apDataAvailPollPeriodInMs);
4709 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4710 "Name = [gEnableBypass11d] Value = [%u] ",
4711 pHddCtx->config->enableBypass11d);
4712 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4713 "Name = [gEnableDFSChnlScan] Value = [%u] ",
4714 pHddCtx->config->enableDFSChnlScan);
4715 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4716 "Name = [gEnableDFSPnoChnlScan] Value = [%u] ",
4717 pHddCtx->config->enable_dfs_pno_chnl_scan);
4718 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4719 "Name = [gReportMaxLinkSpeed] Value = [%u] ",
4720 pHddCtx->config->reportMaxLinkSpeed);
4721 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4722 "Name = [thermalMitigationEnable] Value = [%u] ",
4723 pHddCtx->config->thermalMitigationEnable);
4724#ifdef WLAN_FEATURE_11AC
4725 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4726 "Name = [gVhtChannelWidth] value = [%u]",
4727 pHddCtx->config->vhtChannelWidth);
4728#endif
4729 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4730 "Name = [enableFirstScan2GOnly] Value = [%u] ",
4731 pHddCtx->config->enableFirstScan2GOnly);
4732 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4733 "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",
4734 pHddCtx->config->skipDfsChnlInP2pSearch);
4735 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4736 "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",
4737 pHddCtx->config->ignoreDynamicDtimInP2pMode);
4738 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4739 "Name = [enableRxSTBC] Value = [%u] ",
4740 pHddCtx->config->enableRxSTBC);
4741 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4742 "Name = [gEnableLpwrImgTransition] Value = [%u] ",
4743 pHddCtx->config->enableLpwrImgTransition);
4744 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4745 "Name = [gEnableSSR] Value = [%u] ",
4746 pHddCtx->config->enableSSR);
4747 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4748 "Name = [gEnableVhtFor24GHzBand] Value = [%u] ",
4749 pHddCtx->config->enableVhtFor24GHzBand);
4750
4751 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4752 "Name = [gFlexConnectPowerFactor] Value = [%u] ",
4753 pHddCtx->config->flexConnectPowerFactor);
4754 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4755 "Name = [gEnableIbssHeartBeatOffload] Value = [%u] ",
4756 pHddCtx->config->enableIbssHeartBeatOffload);
4757 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4758 "Name = [gAntennaDiversity] Value = [%u] ",
4759 pHddCtx->config->antennaDiversity);
4760 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4761 "Name = [gGoLinkMonitorPeriod] Value = [%u]",
4762 pHddCtx->config->goLinkMonitorPeriod);
4763 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4764 "Name = [gApLinkMonitorPeriod] Value = [%u]",
4765 pHddCtx->config->apLinkMonitorPeriod);
4766 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4767 "Name = [gGoKeepAlivePeriod] Value = [%u]",
4768 pHddCtx->config->goKeepAlivePeriod);
4769 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4770 "Name = [gApKeepAlivePeriod]Value = [%u]",
4771 pHddCtx->config->apKeepAlivePeriod);
4772 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4773 "Name = [gAmsduSupportInAMPDU] Value = [%u] ",
4774 pHddCtx->config->isAmsduSupportInAMPDU);
4775 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4776 "Name = [nSelect5GHzMargin] Value = [%u] ",
4777 pHddCtx->config->nSelect5GHzMargin);
4778 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4779 "Name = [gCoalesingInIBSS] Value = [%u] ",
4780 pHddCtx->config->isCoalesingInIBSSAllowed);
4781 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4782 "Name = [gIbssATIMWinSize] Value = [%u] ",
4783 pHddCtx->config->ibssATIMWinSize);
4784 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4785 "Name = [gIbssIsPowerSaveAllowed] Value = [%u] ",
4786 pHddCtx->config->isIbssPowerSaveAllowed);
4787 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4788 "Name = [gIbssIsPowerCollapseAllowed] Value = [%u] ",
4789 pHddCtx->config->isIbssPowerCollapseAllowed);
4790 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4791 "Name = [gIbssAwakeOnTxRx] Value = [%u] ",
4792 pHddCtx->config->isIbssAwakeOnTxRx);
4793 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4794 "Name = [gIbssInactivityTime] Value = [%u] ",
4795 pHddCtx->config->ibssInactivityCount);
4796 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4797 "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",
4798 pHddCtx->config->ibssTxSpEndInactivityTime);
4799 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4800 "Name = [gIbssPsWarmupTime] Value = [%u] ",
4801 pHddCtx->config->ibssPsWarmupTime);
4802 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4803 "Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
4804 pHddCtx->config->ibssPs1RxChainInAtimEnable);
4805 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4806 "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",
4807 pHddCtx->config->fDfsPhyerrFilterOffload);
4808 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4809 "Name = [gIgnorePeerErpInfo] Value = [%u] ",
4810 pHddCtx->config->ignore_peer_erp_info);
4811#ifdef IPA_OFFLOAD
4812 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4813 "Name = [gIPAConfig] Value = [0x%x] ",
4814 pHddCtx->config->IpaConfig);
4815 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4816 "Name = [gIPADescSize] Value = [%u] ",
4817 pHddCtx->config->IpaDescSize);
4818 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4819 "Name = [IpaHighBandwidthMbpsg] Value = [%u] ",
4820 pHddCtx->config->IpaHighBandwidthMbps);
4821 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4822 "Name = [IpaMediumBandwidthMbps] Value = [%u] ",
4823 pHddCtx->config->IpaMediumBandwidthMbps);
4824 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4825 "Name = [IpaLowBandwidthMbps] Value = [%u] ",
4826 pHddCtx->config->IpaLowBandwidthMbps);
4827#endif
4828 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4829 "Name = [gEnableOverLapCh] Value = [%u] ",
4830 pHddCtx->config->gEnableOverLapCh);
4831 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4832 "Name = [gMaxOffloadPeers] Value = [%u] ",
4833 pHddCtx->config->apMaxOffloadPeers);
4834 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4835 "Name = [gMaxOffloadReorderBuffs] value = [%u] ",
4836 pHddCtx->config->apMaxOffloadReorderBuffs);
4837 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4838 "Name = [gAllowDFSChannelRoam] Value = [%u] ",
4839 pHddCtx->config->allowDFSChannelRoam);
4840 hddLog(CDF_TRACE_LEVEL_INFO_HIGH,
4841 "Name = [gMaxConcurrentActiveSessions] Value = [%u] ",
4842 pHddCtx->config->gMaxConcurrentActiveSessions);
4843
4844#ifdef MSM_PLATFORM
4845 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4846 "Name = [gBusBandwidthHighThreshold] Value = [%u] ",
4847 pHddCtx->config->busBandwidthHighThreshold);
4848 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4849 "Name = [gBusBandwidthMediumThreshold] Value = [%u] ",
4850 pHddCtx->config->busBandwidthMediumThreshold);
4851 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4852 "Name = [gBusBandwidthLowThreshold] Value = [%u] ",
4853 pHddCtx->config->busBandwidthLowThreshold);
4854 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4855 "Name = [gbusBandwidthComputeInterval] Value = [%u] ",
4856 pHddCtx->config->busBandwidthComputeInterval);
4857 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4858 "Name = [gTcpDelAckThresholdHigh] Value = [%u] ",
4859 pHddCtx->config->tcpDelackThresholdHigh);
4860 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4861 "Name = [gTcpDelAckThresholdLow] Value = [%u] ",
4862 pHddCtx->config->tcpDelackThresholdLow);
4863#endif
4864
4865 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4866 "Name = [gIgnoreCAC] Value = [%u] ",
4867 pHddCtx->config->ignoreCAC);
4868 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4869 "Name = [gSapPreferredChanLocation] Value = [%u] ",
4870 pHddCtx->config->gSapPreferredChanLocation);
4871 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4872 "Name = [gDisableDfsJapanW53] Value = [%u] ",
4873 pHddCtx->config->gDisableDfsJapanW53);
4874#ifdef FEATURE_GREEN_AP
4875 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4876 "Name = [gEnableGreenAp] Value = [%u] ",
4877 pHddCtx->config->enableGreenAP);
4878#endif
4879#ifdef WLAN_FEATURE_ROAM_OFFLOAD
4880 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4881 "Name = [isRoamOffloadEnabled] Value = [%u]",
4882 pHddCtx->config->isRoamOffloadEnabled);
4883#endif
4884 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4885 "Name = [gEnableSifsBurst] Value = [%u]",
4886 pHddCtx->config->enableSifsBurst);
4887
4888#ifdef WLAN_FEATURE_LPSS
4889 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4890 "Name = [gEnableLpassSupport] Value = [%u] ",
4891 pHddCtx->config->enablelpasssupport);
4892#endif
4893
4894 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4895 "Name = [gEnableSelfRecovery] Value = [%u]",
4896 pHddCtx->config->enableSelfRecovery);
4897
4898 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4899 "Name = [gEnableSapSuspend] Value = [%u]",
4900 pHddCtx->config->enableSapSuspend);
4901
4902#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
4903 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4904 "Name = [gExtWoWgotoSuspend] Value = [%u]",
4905 pHddCtx->config->extWowGotoSuspend);
4906
4907 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4908 "Name = [gExtWowApp1WakeupPinNumber] Value = [%u]",
4909 pHddCtx->config->extWowApp1WakeupPinNumber);
4910
4911 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4912 "Name = [gExtWowApp2WakeupPinNumber] Value = [%u]",
4913 pHddCtx->config->extWowApp2WakeupPinNumber);
4914
4915 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4916 "Name = [gExtWoWApp2KAInitPingInterval] Value = [%u]",
4917 pHddCtx->config->extWowApp2KAInitPingInterval);
4918
4919 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4920 "Name = [gExtWoWApp2KAMinPingInterval] Value = [%u]",
4921 pHddCtx->config->extWowApp2KAMinPingInterval);
4922
4923 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4924 "Name = [gExtWoWApp2KAMaxPingInterval] Value = [%u]",
4925 pHddCtx->config->extWowApp2KAMaxPingInterval);
4926
4927 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4928 "Name = [gExtWoWApp2KAIncPingInterval] Value = [%u]",
4929 pHddCtx->config->extWowApp2KAIncPingInterval);
4930
4931 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4932 "Name = [gExtWoWApp2TcpSrcPort] Value = [%u]",
4933 pHddCtx->config->extWowApp2TcpSrcPort);
4934
4935 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4936 "Name = [gExtWoWApp2TcpDstPort] Value = [%u]",
4937 pHddCtx->config->extWowApp2TcpDstPort);
4938
4939 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4940 "Name = [gExtWoWApp2TcpTxTimeout] Value = [%u]",
4941 pHddCtx->config->extWowApp2TcpTxTimeout);
4942
4943 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4944 "Name = [gExtWoWApp2TcpRxTimeout] Value = [%u]",
4945 pHddCtx->config->extWowApp2TcpRxTimeout);
4946#endif
4947
4948#ifdef DHCP_SERVER_OFFLOAD
4949 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4950 "Name = [gDHCPServerOffloadEnable] Value = [%u]",
4951 pHddCtx->config->enableDHCPServerOffload);
4952 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4953 "Name = [gDHCPMaxNumClients] Value = [%u]",
4954 pHddCtx->config->dhcpMaxNumClients);
4955 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4956 "Name = [gDHCPServerIP] Value = [%s]",
4957 pHddCtx->config->dhcpServerIP);
4958#endif
4959
4960 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4961 "Name = [gEnableDumpCollect] Value = [%u]",
4962 pHddCtx->config->is_ramdump_enabled);
4963
4964 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4965 "Name = [gP2PListenDeferInterval] Value = [%u]",
4966 pHddCtx->config->p2p_listen_defer_interval);
4967 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4968 "Name = [is_ps_enabled] value = [%d]",
4969 pHddCtx->config->is_ps_enabled);
4970 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4971 "Name = [policy_manager_enabled] value = [%d]",
4972 pHddCtx->config->policy_manager_enabled);
4973 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4974 "Name = [tso_enable] value = [%d]",
4975 pHddCtx->config->tso_enable);
4976 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4977 "Name = [LROEnable] value = [%d]",
4978 pHddCtx->config->lro_enable);
4979 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4980 "Name = [active_mode_offload] value = [%d]",
4981 pHddCtx->config->active_mode_offload);
4982 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4983 "Name = [gfine_time_meas_cap] value = [%u]",
4984 pHddCtx->config->fine_time_meas_cap);
4985#ifdef WLAN_FEATURE_FASTPATH
4986 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
4987 "Name = [fastpath_enable] Value = [%u]",
4988 pHddCtx->config->fastpath_enable);
4989#endif
4990 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4991 "Name = [max_scan_count] value = [%d]",
4992 pHddCtx->config->max_scan_count);
4993#ifdef FEATURE_NAPI_DEBUG
4994 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4995 "Name = [%s] value = [%d]",
4996 CFG_ENABLE_RX_THREAD, pHddCtx->config->enableRxThread);
4997 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
4998 "Name = [%s] value = [%d]",
4999 CFG_NAPI_NAME, pHddCtx->config->napi_enable);
5000#endif
5001 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
5002 "Name = [%s] Value = [%u]",
5003 CFG_CE_CLASSIFY_ENABLE_NAME,
5004 pHddCtx->config->ce_classify_enabled);
5005 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
5006 "Name = [%s] value = [%u]",
5007 CFG_DUAL_MAC_FEATURE_DISABLE,
5008 pHddCtx->config->dual_mac_feature_disable);
5009}
5010
5011
5012/**
5013 * hdd_update_mac_config() - update MAC address from cfg file
5014 * @pHddCtx: the pointer to hdd context
5015 *
5016 * It overwrites the MAC address if config file exist.
5017 *
5018 * Return: CDF_STATUS_SUCCESS if the MAC address is found from cfg file
5019 * and overwritten, otherwise CDF_STATUS_E_INVAL
5020 */
5021CDF_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx)
5022{
5023 int status, i = 0;
5024 const struct firmware *fw = NULL;
5025 char *line, *buffer = NULL;
5026 char *name, *value;
5027 tCfgIniEntry macTable[CDF_MAX_CONCURRENCY_PERSONA];
5028 tSirMacAddr customMacAddr;
5029
5030 CDF_STATUS cdf_status = CDF_STATUS_SUCCESS;
5031
5032 memset(macTable, 0, sizeof(macTable));
5033 status = request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev);
5034
5035 if (status) {
5036 hddLog(CDF_TRACE_LEVEL_WARN, "%s: request_firmware failed %d",
5037 __func__, status);
5038 cdf_status = CDF_STATUS_E_FAILURE;
5039 return cdf_status;
5040 }
5041 if (!fw || !fw->data || !fw->size) {
5042 hddLog(CDF_TRACE_LEVEL_FATAL, "%s: invalid firmware", __func__);
5043 cdf_status = CDF_STATUS_E_INVAL;
5044 goto config_exit;
5045 }
5046
5047 buffer = (char *)fw->data;
5048
5049 /* data format:
5050 * Intf0MacAddress=00AA00BB00CC
5051 * Intf1MacAddress=00AA00BB00CD
5052 * END
5053 */
5054 while (buffer != NULL) {
5055 line = get_next_line(buffer);
5056 buffer = i_trim(buffer);
5057
5058 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5059 buffer = line;
5060 continue;
5061 }
5062 if (strncmp(buffer, "END", 3) == 0)
5063 break;
5064
5065 name = buffer;
5066 buffer = strnchr(buffer, strlen(buffer), '=');
5067 if (buffer) {
5068 *buffer++ = '\0';
5069 i_trim(name);
5070 if (strlen(name) != 0) {
5071 buffer = i_trim(buffer);
5072 if (strlen(buffer) == 12) {
5073 value = buffer;
5074 macTable[i].name = name;
5075 macTable[i++].value = value;
5076 if (i >= CDF_MAX_CONCURRENCY_PERSONA)
5077 break;
5078 }
5079 }
5080 }
5081 buffer = line;
5082 }
5083 if (i <= CDF_MAX_CONCURRENCY_PERSONA) {
5084 hddLog(CDF_TRACE_LEVEL_INFO, "%s: %d Mac addresses provided",
5085 __func__, i);
5086 } else {
5087 hddLog(CDF_TRACE_LEVEL_ERROR,
5088 "%s: invalid number of Mac address provided, nMac = %d",
5089 __func__, i);
5090 cdf_status = CDF_STATUS_E_INVAL;
5091 goto config_exit;
5092 }
5093
5094 update_mac_from_string(pHddCtx, &macTable[0], i);
5095
5096 cdf_mem_copy(&customMacAddr,
5097 &pHddCtx->config->intfMacAddr[0].bytes[0],
5098 sizeof(tSirMacAddr));
5099 sme_set_custom_mac_addr(customMacAddr);
5100
5101config_exit:
5102 release_firmware(fw);
5103 return cdf_status;
5104}
5105
5106/**
5107 * hdd_parse_config_ini() - parse the ini configuration file
5108 * @pHddCtx: the pointer to hdd context
5109 *
5110 * This function reads the qcom_cfg.ini file and
5111 * parses each 'Name=Value' pair in the ini file
5112 *
5113 * Return: CDF_STATUS_SUCCESS if the qcom_cfg.ini is correctly read,
5114 * otherwise CDF_STATUS_E_INVAL
5115 */
5116CDF_STATUS hdd_parse_config_ini(hdd_context_t *pHddCtx)
5117{
5118 int status, i = 0;
5119 /** Pointer for firmware image data */
5120 const struct firmware *fw = NULL;
5121 char *buffer, *line, *pTemp = NULL;
5122 size_t size;
5123 char *name, *value;
5124 /* cfgIniTable is static to avoid excess stack usage */
5125 static tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
5126 CDF_STATUS cdf_status = CDF_STATUS_SUCCESS;
5127
5128 memset(cfgIniTable, 0, sizeof(cfgIniTable));
5129
5130 status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
5131
5132 if (status) {
5133 hddLog(CDF_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",
5134 __func__, status);
5135 cdf_status = CDF_STATUS_E_FAILURE;
5136 goto config_exit;
5137 }
5138 if (!fw || !fw->data || !fw->size) {
5139 hddLog(CDF_TRACE_LEVEL_FATAL, "%s: %s download failed",
5140 __func__, WLAN_INI_FILE);
5141 cdf_status = CDF_STATUS_E_FAILURE;
5142 goto config_exit;
5143 }
5144
5145 hddLog(LOG1, "%s: qcom_cfg.ini Size %zu", __func__, fw->size);
5146
5147 buffer = (char *)cdf_mem_malloc(fw->size);
5148
5149 if (NULL == buffer) {
5150 hddLog(CDF_TRACE_LEVEL_FATAL, FL("cdf_mem_malloc failure"));
5151 release_firmware(fw);
5152 return CDF_STATUS_E_NOMEM;
5153 }
5154 pTemp = buffer;
5155
5156 cdf_mem_copy((void *)buffer, (void *)fw->data, fw->size);
5157 size = fw->size;
5158
5159 while (buffer != NULL) {
5160 line = get_next_line(buffer);
5161 buffer = i_trim(buffer);
5162
5163 hddLog(LOG1, "%s: item", buffer);
5164
5165 if (strlen((char *)buffer) == 0 || *buffer == '#') {
5166 buffer = line;
5167 continue;
5168 } else if (strncmp(buffer, "END", 3) == 0) {
5169 break;
5170 } else {
5171 name = buffer;
5172 while (*buffer != '=' && *buffer != '\0')
5173 buffer++;
5174 if (*buffer != '\0') {
5175 *buffer++ = '\0';
5176 i_trim(name);
5177 if (strlen(name) != 0) {
5178 buffer = i_trim(buffer);
5179 if (strlen(buffer) > 0) {
5180 value = buffer;
5181 while (!i_isspace(*buffer)
5182 && *buffer != '\0')
5183 buffer++;
5184 *buffer = '\0';
5185 cfgIniTable[i].name = name;
5186 cfgIniTable[i++].value = value;
5187 if (i >= MAX_CFG_INI_ITEMS) {
5188 hddLog(LOGE,
5189 "%s: Number of items in %s > %d",
5190 __func__,
5191 WLAN_INI_FILE,
5192 MAX_CFG_INI_ITEMS);
5193 break;
5194 }
5195 }
5196 }
5197 }
5198 }
5199 buffer = line;
5200 }
5201
5202 /* Loop through the registry table and apply all these configs */
5203 cdf_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
5204#ifdef FEATURE_NAPI
5205 if (CDF_STATUS_SUCCESS == cdf_status)
5206 hdd_napi_event(NAPI_EVT_INI_FILE,
5207 (void *)pHddCtx->config->napi_enable);
5208#endif /* FEATURE_NAPI */
5209
5210config_exit:
5211 release_firmware(fw);
5212 cdf_mem_free(pTemp);
5213 return cdf_status;
5214}
5215
5216/**
5217 * hdd_cfg_xlate_to_csr_phy_mode() - convert PHY mode
5218 * @dot11Mode: the mode to convert
5219 *
5220 * Convert the configuration PHY mode to CSR PHY mode
5221 *
5222 * Return: the CSR phy mode value
5223 */
5224eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(eHddDot11Mode dot11Mode)
5225{
5226 switch (dot11Mode) {
5227 case (eHDD_DOT11_MODE_abg):
5228 return eCSR_DOT11_MODE_abg;
5229 case (eHDD_DOT11_MODE_11b):
5230 return eCSR_DOT11_MODE_11b;
5231 case (eHDD_DOT11_MODE_11g):
5232 return eCSR_DOT11_MODE_11g;
5233 default:
5234 case (eHDD_DOT11_MODE_11n):
5235 return eCSR_DOT11_MODE_11n;
5236 case (eHDD_DOT11_MODE_11g_ONLY):
5237 return eCSR_DOT11_MODE_11g_ONLY;
5238 case (eHDD_DOT11_MODE_11n_ONLY):
5239 return eCSR_DOT11_MODE_11n_ONLY;
5240 case (eHDD_DOT11_MODE_11b_ONLY):
5241 return eCSR_DOT11_MODE_11b_ONLY;
5242#ifdef WLAN_FEATURE_11AC
5243 case (eHDD_DOT11_MODE_11ac_ONLY):
5244 return eCSR_DOT11_MODE_11ac_ONLY;
5245 case (eHDD_DOT11_MODE_11ac):
5246 return eCSR_DOT11_MODE_11ac;
5247#else
5248 /* If 11AC support is not compiled set Auto mode */
5249 case (eHDD_DOT11_MODE_11ac):
5250 case (eHDD_DOT11_MODE_11ac_ONLY):
5251 return eCSR_DOT11_MODE_AUTO;
5252#endif
5253 case (eHDD_DOT11_MODE_AUTO):
5254 return eCSR_DOT11_MODE_AUTO;
5255 case (eHDD_DOT11_MODE_11a):
5256 return eCSR_DOT11_MODE_11a;
5257 }
5258
5259}
5260
5261/**
5262 * hdd_set_idle_ps_config() - set idle power save configuration
5263 * @pHddCtx: the pointer to hdd context
5264 * @val: the value to configure
5265 *
5266 * Return: CDF_STATUS_SUCCESS if command set correctly,
5267 * otherwise the CDF_STATUS return from SME layer
5268 */
5269CDF_STATUS hdd_set_idle_ps_config(hdd_context_t *pHddCtx, uint32_t val)
5270{
5271 struct hdd_config *pConfig = pHddCtx->config;
5272 CDF_STATUS status = CDF_STATUS_SUCCESS;
5273
5274 hddLog(LOG1, "hdd_set_idle_ps_config: Enter Val %d", val);
5275
5276 if (pConfig->fIsImpsEnabled) {
5277 status = sme_set_idle_powersave_config(pHddCtx->pcds_context,
5278 pHddCtx->hHal, val);
5279 if (CDF_STATUS_SUCCESS != status) {
5280 hddLog(LOGE, "Fail to Set Idle PS Config val %d", val);
5281 }
5282 } else {
5283 hddLog(LOG1, "hdd_set_idle_ps_config: IMPS not enabled in ini");
5284 }
5285 return status;
5286}
5287
5288/**
5289 * hdd_set_fine_time_meas_cap() - set fine timing measurement capability
5290 * @hdd_ctx: HDD context
5291 * @sme_config: pointer to SME config
5292 *
5293 * This function is used to pass fine timing measurement capability coming
5294 * from INI to SME. This function make sure that configure INI is supported
5295 * by the device. Use bit mask to mask out the unsupported capabilities.
5296 *
5297 * Return: None
5298 */
5299static void hdd_set_fine_time_meas_cap(hdd_context_t *hdd_ctx,
5300 tSmeConfigParams *sme_config)
5301{
5302 struct hdd_config *config = hdd_ctx->config;
5303 uint32_t capability = config->fine_time_meas_cap;
5304
5305 /* Make sure only supported capabilities are enabled in INI */
5306 capability &= CFG_FINE_TIME_MEAS_CAPABILITY_MAX;
5307 sme_config->fine_time_meas_cap = capability;
5308
5309 hddLog(LOG1, FL("fine time meas capability - INI: %04x Enabled: %04x"),
5310 config->fine_time_meas_cap, sme_config->fine_time_meas_cap);
5311
5312 return;
5313}
5314
5315/**
5316 * hdd_string_to_u8_array() - scan the string and convert to u8 array
5317 * @str: the pointer to the string
5318 * @intArray: the pointer of buffer to store the u8 value
5319 * @len: size of the buffer
5320 *
5321 * Return: CDF_STATUS_SUCCESS if the conversion is done,
5322 * otherwise CDF_STATUS_E_INVAL
5323 */
5324CDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *intArray, uint8_t *len,
5325 uint8_t intArrayMaxLen)
5326{
5327 char *s = str;
5328
5329 if (str == NULL || intArray == NULL || len == NULL) {
5330 return CDF_STATUS_E_INVAL;
5331 }
5332 *len = 0;
5333
5334 while ((s != NULL) && (*len < intArrayMaxLen)) {
5335 int val;
5336 /* Increment length only if sscanf succesfully extracted one element.
5337 * Any other return value means error. Ignore it.
5338 */
5339 if (sscanf(s, "%d", &val) == 1) {
5340 intArray[*len] = (uint8_t) val;
5341 *len += 1;
5342 }
5343 s = strpbrk(s, ",");
5344 if (s)
5345 s++;
5346 }
5347
5348 return CDF_STATUS_SUCCESS;
5349
5350}
5351
5352/**
5353 * hdd_update_config_dat() - scan the string and convery to u8 array
5354 * @str: the pointer to the string
5355 * @intArray: the pointer of buffer to store the u8 value
5356 * @len: size of the buffer
5357 *
5358 * Return: CDF_STATUS_SUCCESS if the configuration could be updated corectly,
5359 * otherwise CDF_STATUS_E_INVAL
5360 */
5361bool hdd_update_config_dat(hdd_context_t *pHddCtx)
5362{
5363 bool fStatus = true;
5364 uint32_t val;
5365 uint16_t val16;
5366
5367 struct hdd_config *pConfig = pHddCtx->config;
5368 tSirMacHTCapabilityInfo *phtCapInfo;
5369
5370 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
5371 pConfig->ShortGI20MhzEnable) ==
5372 CDF_STATUS_E_FAILURE) {
5373 fStatus = false;
5374 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CFG");
5375 }
5376
5377 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate)
5378 == CDF_STATUS_E_FAILURE) {
5379 fStatus = false;
5380 hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CFG");
5381 }
5382
5383 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
5384 pConfig->MaxRxAmpduFactor) ==
5385 CDF_STATUS_E_FAILURE) {
5386 fStatus = false;
5387 hddLog(LOGE,
5388 "Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CFG");
5389 }
5390
5391 if (sme_cfg_set_int
5392 (pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE,
5393 pConfig->fIsShortPreamble) == CDF_STATUS_E_FAILURE) {
5394 fStatus = false;
5395 hddLog(LOGE,
5396 "Could not pass on WNI_CFG_SHORT_PREAMBLE to CFG");
5397 }
5398
5399 if (sme_cfg_set_int(pHddCtx->hHal,
5400 WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME,
5401 pConfig->nPassiveMinChnTime)
5402 == CDF_STATUS_E_FAILURE) {
5403 fStatus = false;
5404 hddLog(LOGE,
5405 "Could not pass on WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME"
5406 " to CFG");
5407 }
5408
5409 if (sme_cfg_set_int(pHddCtx->hHal,
5410 WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
5411 pConfig->nPassiveMaxChnTime)
5412 == CDF_STATUS_E_FAILURE) {
5413 fStatus = false;
5414 hddLog(LOGE,
5415 "Could not pass on WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME"
5416 " to CFG");
5417 }
5418
5419 if (sme_cfg_set_int
5420 (pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL,
5421 pConfig->nBeaconInterval) == CDF_STATUS_E_FAILURE) {
5422 fStatus = false;
5423 hddLog(LOGE,
5424 "Could not pass on WNI_CFG_BEACON_INTERVAL to CFG");
5425 }
5426
5427 if (sme_cfg_set_int
5428 (pHddCtx->hHal, WNI_CFG_MAX_PS_POLL,
5429 pConfig->nMaxPsPoll) == CDF_STATUS_E_FAILURE) {
5430 fStatus = false;
5431 hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CFG");
5432 }
5433
5434 if (sme_cfg_set_int
5435 (pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA,
5436 pConfig->nRxAnt) == CDF_STATUS_E_FAILURE) {
5437 fStatus = false;
5438 hddLog(LOGE,
5439 "Could not pass on WNI_CFG_CURRENT_RX_ANTENNA to CFG");
5440 }
5441
5442 if (sme_cfg_set_int (pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE,
5443 pConfig->fIsLowGainOverride) == CDF_STATUS_E_FAILURE) {
5444 fStatus = false;
5445 hddLog(LOGE,
5446 "Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL");
5447 }
5448
5449 if (sme_cfg_set_int
5450 (pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD,
5451 pConfig->nRssiFilterPeriod) == CDF_STATUS_E_FAILURE) {
5452 fStatus = false;
5453 hddLog(LOGE,
5454 "Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CFG");
5455 }
5456
5457 if (sme_cfg_set_int
5458 (pHddCtx->hHal, WNI_CFG_IGNORE_DTIM,
5459 pConfig->fIgnoreDtim) == CDF_STATUS_E_FAILURE) {
5460 fStatus = false;
5461 hddLog(LOGE,
5462 "Could not pass on WNI_IGNORE_DTIM to CFG");
5463 }
5464
5465 if (sme_cfg_set_int
5466 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT,
5467 pConfig->fEnableFwHeartBeatMonitoring)
5468 == CDF_STATUS_E_FAILURE) {
5469 fStatus = false;
5470 hddLog(LOGE,
5471 "Could not pass on WNI_CFG_PS_HEART_BEAT to CFG");
5472 }
5473
5474 if (sme_cfg_set_int
5475 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER,
5476 pConfig->fEnableFwBeaconFiltering) ==
5477 CDF_STATUS_E_FAILURE) {
5478 fStatus = false;
5479 hddLog(LOGE,
5480 "Could not pass on WNI_CFG_PS_BCN_FILTER to CFG");
5481 }
5482
5483 if (sme_cfg_set_int
5484 (pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR,
5485 pConfig->fEnableFwRssiMonitoring) ==
5486 CDF_STATUS_E_FAILURE) {
5487 fStatus = false;
5488 hddLog(LOGE,
5489 "Could not pass on WNI_CFG_PS_RSSI_MONITOR to CFG");
5490 }
5491
5492 if (sme_cfg_set_int
5493 (pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT,
5494 pConfig->nDataInactivityTimeout) == CDF_STATUS_E_FAILURE) {
5495 fStatus = false;
5496 hddLog(LOGE,
5497 "Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT to CFG");
5498 }
5499
5500 if (sme_cfg_set_int
5501 (pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX,
5502 pConfig->enableLTECoex) == CDF_STATUS_E_FAILURE) {
5503 fStatus = false;
5504 hddLog(LOGE,
5505 "Could not pass on WNI_CFG_ENABLE_LTE_COEX to CFG");
5506 }
5507
5508 if (sme_cfg_set_int
5509 (pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE,
5510 pConfig->nEnableListenMode) == CDF_STATUS_E_FAILURE) {
5511 fStatus = false;
5512 hddLog(LOGE,
5513 "Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CFG");
5514 }
5515
5516 if (sme_cfg_set_int
5517 (pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT,
5518 pConfig->apKeepAlivePeriod) == CDF_STATUS_E_FAILURE) {
5519 fStatus = false;
5520 hddLog(LOGE,
5521 "Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CFG");
5522 }
5523
5524 if (sme_cfg_set_int
5525 (pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
5526 pConfig->goKeepAlivePeriod) == CDF_STATUS_E_FAILURE) {
5527 fStatus = false;
5528 hddLog(LOGE,
5529 "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
5530 }
5531
5532 if (sme_cfg_set_int
5533 (pHddCtx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
5534 pConfig->apLinkMonitorPeriod) == CDF_STATUS_E_FAILURE) {
5535 fStatus = false;
5536 hddLog(LOGE,
5537 "Could not pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CFG");
5538 }
5539
5540 if (sme_cfg_set_int
5541 (pHddCtx->hHal, WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
5542 pConfig->goLinkMonitorPeriod) == CDF_STATUS_E_FAILURE) {
5543 fStatus = false;
5544 hddLog(LOGE,
5545 "Could not pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
5546 }
5547
5548#if defined WLAN_FEATURE_VOWIFI
5549 if (sme_cfg_set_int
5550 (pHddCtx->hHal, WNI_CFG_RRM_ENABLED, pConfig->fRrmEnable)
5551 == CDF_STATUS_E_FAILURE) {
5552 fStatus = false;
5553 hddLog(LOGE,
5554 "Could not pass on WNI_CFG_RRM_ENABLE to CFG");
5555 }
5556
5557 if (sme_cfg_set_int
5558 (pHddCtx->hHal, WNI_CFG_RRM_OPERATING_CHAN_MAX,
5559 pConfig->nInChanMeasMaxDuration) == CDF_STATUS_E_FAILURE) {
5560 fStatus = false;
5561 hddLog(LOGE,
5562 "Could not pass on WNI_CFG_RRM_OPERATING_CHAN_MAX to CFG");
5563 }
5564
5565 if (sme_cfg_set_int
5566 (pHddCtx->hHal, WNI_CFG_RRM_NON_OPERATING_CHAN_MAX,
5567 pConfig->nOutChanMeasMaxDuration) ==
5568 CDF_STATUS_E_FAILURE) {
5569 fStatus = false;
5570 hddLog(LOGE,
5571 "Could not pass on WNI_CFG_RRM_OUT_CHAN_MAX to CFG");
5572 }
5573
5574 if (sme_cfg_set_int
5575 (pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING,
5576 pConfig->mcastBcastFilterSetting) == CDF_STATUS_E_FAILURE)
5577 fStatus = false;
5578 hddLog(LOGE,
5579 "Could not pass on WNI_CFG_MCAST_BCAST_FILTER_SETTING to CFG");
5580#endif
5581
5582 if (sme_cfg_set_int
5583 (pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC,
5584 pConfig->bSingleTidRc) == CDF_STATUS_E_FAILURE) {
5585 fStatus = false;
5586 hddLog(LOGE,
5587 "Could not pass on WNI_CFG_SINGLE_TID_RC to CFG");
5588 }
5589
5590 if (sme_cfg_set_int
5591 (pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN,
5592 pConfig->teleBcnWakeupEn) == CDF_STATUS_E_FAILURE) {
5593 fStatus = false;
5594 hddLog(LOGE,
5595 "Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN to CFG");
5596 }
5597
5598 if (sme_cfg_set_int
5599 (pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI,
5600 pConfig->nTeleBcnTransListenInterval) ==
5601 CDF_STATUS_E_FAILURE) {
5602 fStatus = false;
5603 hddLog(LOGE,
5604 "Could not pass on WNI_CFG_TELE_BCN_TRANS_LI to CFG");
5605 }
5606
5607 if (sme_cfg_set_int
5608 (pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI,
5609 pConfig->nTeleBcnMaxListenInterval) ==
5610 CDF_STATUS_E_FAILURE) {
5611 fStatus = false;
5612 hddLog(LOGE,
5613 "Could not pass on WNI_CFG_TELE_BCN_MAX_LI to CFG");
5614 }
5615
5616 if (sme_cfg_set_int
5617 (pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS,
5618 pConfig->nTeleBcnTransLiNumIdleBeacons) ==
5619 CDF_STATUS_E_FAILURE) {
5620 fStatus = false;
5621 hddLog(LOGE,
5622 "Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS to CFG");
5623 }
5624
5625 if (sme_cfg_set_int
5626 (pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS,
5627 pConfig->nTeleBcnMaxLiNumIdleBeacons) ==
5628 CDF_STATUS_E_FAILURE) {
5629 fStatus = false;
5630 hddLog(LOGE,
5631 "Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS to CFG");
5632 }
5633
5634 if (sme_cfg_set_int
5635 (pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK,
5636 pConfig->rfSettlingTimeUs) == CDF_STATUS_E_FAILURE) {
5637 fStatus = false;
5638 hddLog(LOGE,
5639 "Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK to CFG");
5640 }
5641
5642 if (sme_cfg_set_int
5643 (pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD,
5644 pConfig->infraStaKeepAlivePeriod) ==
5645 CDF_STATUS_E_FAILURE) {
5646 fStatus = false;
5647 hddLog(LOGE,
5648 "Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD to CFG");
5649 }
5650 if (sme_cfg_set_int
5651 (pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE,
5652 pConfig->dynamicPsPollValue) == CDF_STATUS_E_FAILURE) {
5653 fStatus = false;
5654 hddLog(LOGE,
5655 "Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE to CFG");
5656 }
5657
5658 if (sme_cfg_set_int
5659 (pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT,
5660 pConfig->nNullDataApRespTimeout) == CDF_STATUS_E_FAILURE) {
5661 fStatus = false;
5662 hddLog(LOGE,
5663 "Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT to CFG");
5664 }
5665
5666 if (sme_cfg_set_int
5667 (pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
5668 pConfig->apDataAvailPollPeriodInMs) ==
5669 CDF_STATUS_E_FAILURE) {
5670 fStatus = false;
5671 hddLog(LOGE,
5672 "Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
5673 }
5674 if (sme_cfg_set_int
5675 (pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD,
5676 pConfig->FragmentationThreshold) == CDF_STATUS_E_FAILURE) {
5677 fStatus = false;
5678 hddLog(LOGE,
5679 "Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD to CFG");
5680 }
5681 if (sme_cfg_set_int
5682 (pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD,
5683 pConfig->RTSThreshold) == CDF_STATUS_E_FAILURE) {
5684 fStatus = false;
5685 hddLog(LOGE,
5686 "Could not pass on WNI_CFG_RTS_THRESHOLD to CFG");
5687 }
5688
5689 if (sme_cfg_set_int
5690 (pHddCtx->hHal, WNI_CFG_11D_ENABLED,
5691 pConfig->Is11dSupportEnabled) == CDF_STATUS_E_FAILURE) {
5692 fStatus = false;
5693 hddLog(LOGE,
5694 "Could not pass on WNI_CFG_11D_ENABLED to CFG");
5695 }
5696
5697 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_DFS_MASTER_ENABLED,
5698 pConfig->enableDFSMasterCap) ==
5699 CDF_STATUS_E_FAILURE) {
5700 fStatus = false;
5701 hddLog(LOGE,
5702 "Failure: Could not set value for WNI_CFG_DFS_MASTER_ENABLED");
5703 }
5704
5705 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_ENABLE_TXBF_20MHZ,
5706 pConfig->enableTxBFin20MHz) ==
5707 CDF_STATUS_E_FAILURE) {
5708 fStatus = false;
5709 hddLog(LOGE,
5710 "Could not set value for WNI_CFG_VHT_ENABLE_TXBF_20MHZ");
5711 }
5712
5713 if (sme_cfg_set_int
5714 (pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD,
5715 pConfig->HeartbeatThresh24) == CDF_STATUS_E_FAILURE) {
5716 fStatus = false;
5717 hddLog(LOGE,
5718 "Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD to CFG");
5719 }
5720
5721 if (sme_cfg_set_int
5722 (pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
5723 pConfig->apDataAvailPollPeriodInMs) ==
5724 CDF_STATUS_E_FAILURE) {
5725 fStatus = false;
5726 hddLog(LOGE,
5727 "Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
5728 }
5729
5730 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_CLOSE_LOOP,
5731 pConfig->enableCloseLoop) ==
5732 CDF_STATUS_E_FAILURE) {
5733 fStatus = false;
5734 hddLog(LOGE,
5735 "Could not pass on WNI_CFG_ENABLE_CLOSE_LOOP to CFG");
5736 }
5737
5738 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TX_PWR_CTRL_ENABLE,
5739 pConfig->enableAutomaticTxPowerControl)
5740 == CDF_STATUS_E_FAILURE) {
5741 fStatus = false;
5742 hddLog(LOGE,
5743 "Could not pass on WNI_CFG_TX_PWR_CTRL_ENABLE to CFG");
5744 }
5745
5746 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
5747 pConfig->ShortGI40MhzEnable) ==
5748 CDF_STATUS_E_FAILURE) {
5749 fStatus = false;
5750 hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CFG");
5751 }
5752
5753 if (sme_cfg_set_int
5754 (pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST,
5755 pConfig->fEnableMCAddrList) == CDF_STATUS_E_FAILURE) {
5756 fStatus = false;
5757 hddLog(LOGE,
5758 "Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CFG");
5759 }
5760 /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map
5761 * in the cfg.dat. Valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9)
5762 * we update only the least significant 2 bits in the
5763 * corresponding fields.
5764 */
5765 if ((pConfig->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
5766 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
5767 (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac)) {
5768 uint32_t temp = 0;
5769
5770 sme_cfg_get_int(pHddCtx->hHal,
5771 WNI_CFG_VHT_BASIC_MCS_SET, &temp);
5772 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
5773 if (pConfig->enable2x2)
5774 temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
5775 if (sme_cfg_set_int(pHddCtx->hHal,
5776 WNI_CFG_VHT_BASIC_MCS_SET, temp) ==
5777 CDF_STATUS_E_FAILURE) {
5778 fStatus = false;
5779 hddLog(LOGE,
5780 "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
5781 }
5782
5783 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
5784 &temp);
5785 temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
5786 if (pConfig->enable2x2)
5787 temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
5788 if (sme_cfg_set_int(pHddCtx->hHal,
5789 WNI_CFG_VHT_RX_MCS_MAP, temp)
5790 == CDF_STATUS_E_FAILURE) {
5791 fStatus = false;
5792 hddLog(LOGE,
5793 "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
5794 }
5795 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
5796 temp = (temp & 0xFFFC) | pConfig->vhtTxMCS;
5797 if (pConfig->enable2x2)
5798 temp = (temp & 0xFFF3) | (pConfig->vhtTxMCS2x2 << 2);
5799 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
5800 "vhtRxMCS2x2 - %x temp - %u enable2x2 %d",
5801 pConfig->vhtRxMCS2x2, temp,
5802 pConfig->enable2x2);
5803
5804 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
5805 temp) == CDF_STATUS_E_FAILURE) {
5806 fStatus = false;
5807 hddLog(LOGE,
5808 "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
5809 }
5810 /* Currently shortGI40Mhz is used for shortGI80Mhz */
5811 if (sme_cfg_set_int
5812 (pHddCtx->hHal, WNI_CFG_VHT_SHORT_GI_80MHZ,
5813 pConfig->ShortGI40MhzEnable) ==
5814 CDF_STATUS_E_FAILURE) {
5815 fStatus = false;
5816 hddLog(LOGE,
5817 "Could not pass WNI_VHT_SHORT_GI_80MHZ to CFG");
5818 }
5819 /* Hardware is capable of doing
5820 * 128K AMPDU in 11AC mode */
5821 if (sme_cfg_set_int(pHddCtx->hHal,
5822 WNI_CFG_VHT_AMPDU_LEN_EXPONENT,
5823 pConfig->fVhtAmpduLenExponent) ==
5824 CDF_STATUS_E_FAILURE) {
5825 fStatus = false;
5826 hddLog(LOGE,
5827 "Could not pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CFG");
5828 }
5829 /* Change MU Bformee only when TxBF is enabled */
5830 if (pConfig->enableTxBF) {
5831 sme_cfg_get_int(pHddCtx->hHal,
5832 WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &temp);
5833
5834 if (temp != pConfig->enableMuBformee) {
5835 if (sme_cfg_set_int(pHddCtx->hHal,
5836 WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
5837 pConfig->enableMuBformee
5838 ) == CDF_STATUS_E_FAILURE) {
5839 fStatus = false;
5840 hddLog(LOGE,
5841 "Could not pass on WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CFG");
5842 }
5843 }
5844 }
5845 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_MAX_MPDU_LENGTH,
5846 pConfig->vhtMpduLen) == CDF_STATUS_E_FAILURE) {
5847 fStatus = false;
5848 hddLog(LOGE,
5849 "Could not pass on WNI_CFG_VHT_MAX_MPDU_LENGTH to CFG");
5850 }
5851
5852 if (pConfig->enable2x2 && pConfig->enable_su_tx_bformer) {
5853 if (sme_cfg_set_int(pHddCtx->hHal,
5854 WNI_CFG_VHT_SU_BEAMFORMER_CAP,
5855 pConfig->enable_su_tx_bformer) ==
5856 CDF_STATUS_E_FAILURE) {
5857 fStatus = false;
5858 hdd_err("set SU_BEAMFORMER_CAP to CFG failed");
5859 }
5860 if (sme_cfg_set_int(pHddCtx->hHal,
5861 WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
5862 NUM_OF_SOUNDING_DIMENSIONS) ==
5863 CDF_STATUS_E_FAILURE) {
5864 fStatus = false;
5865 hdd_err("failed to set NUM_OF_SOUNDING_DIM");
5866 }
5867 }
5868 }
5869
5870 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
5871 pConfig->enableRxSTBC) == CDF_STATUS_E_FAILURE) {
5872 fStatus = false;
5873 hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CFG");
5874 }
5875
5876 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, &val);
5877 val16 = (uint16_t) val;
5878 phtCapInfo = (tSirMacHTCapabilityInfo *) &val16;
5879 phtCapInfo->rxSTBC = pConfig->enableRxSTBC;
5880 phtCapInfo->advCodingCap = pConfig->enableRxLDPC;
5881 val = val16;
5882 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, val)
5883 == CDF_STATUS_E_FAILURE) {
5884 fStatus = false;
5885 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
5886 }
5887
5888 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
5889 pConfig->enableRxSTBC) == CDF_STATUS_E_FAILURE) {
5890 fStatus = false;
5891 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CFG");
5892 }
5893
5894 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TXSTBC,
5895 pConfig->enableTxSTBC) == CDF_STATUS_E_FAILURE) {
5896 fStatus = false;
5897 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TXSTBC to CFG");
5898 }
5899
5900 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP,
5901 pConfig->enableRxLDPC) == CDF_STATUS_E_FAILURE) {
5902 fStatus = false;
5903 hddLog(LOGE,
5904 "Could not pass on WNI_CFG_VHT_LDPC_CODING_CAP to CFG");
5905 }
5906#ifdef WLAN_SOFTAP_VSTA_FEATURE
5907 if (pConfig->fEnableVSTASupport) {
5908 sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, &val);
5909 if (val <= WNI_CFG_ASSOC_STA_LIMIT_STADEF)
5910 val = WNI_CFG_ASSOC_STA_LIMIT_STAMAX;
5911 } else {
5912 val = pConfig->maxNumberOfPeers;
5913
5914 }
5915 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, val) ==
5916 CDF_STATUS_E_FAILURE) {
5917 fStatus = false;
5918 hddLog(LOGE,
5919 "Could not pass on WNI_CFG_ASSOC_STA_LIMIT to CFG");
5920 }
5921#endif
5922 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
5923 pConfig->enableLpwrImgTransition)
5924 == CDF_STATUS_E_FAILURE) {
5925 fStatus = false;
5926 hddLog(LOGE,
5927 "Could not pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CFG");
5928 }
5929
5930 if (sme_cfg_set_int
5931 (pHddCtx->hHal, WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
5932 pConfig->enableMCCAdaptiveScheduler) ==
5933 CDF_STATUS_E_FAILURE) {
5934 fStatus = false;
5935 hddLog(LOGE,
5936 "Could not pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CFG");
5937 }
5938 if (sme_cfg_set_int
5939 (pHddCtx->hHal, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,
5940 pConfig->disableLDPCWithTxbfAP) == CDF_STATUS_E_FAILURE) {
5941 fStatus = false;
5942 hddLog(LOGE,
5943 "Could not pass on WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP to CFG");
5944 }
5945
5946 if (sme_cfg_set_int
5947 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ZERO,
5948 pConfig->retryLimitZero) == CDF_STATUS_E_FAILURE) {
5949 fStatus = false;
5950 hddLog(LOGE,
5951 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ZERO to CFG");
5952 }
5953
5954 if (sme_cfg_set_int
5955 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ONE,
5956 pConfig->retryLimitOne) == CDF_STATUS_E_FAILURE) {
5957 fStatus = false;
5958 hddLog(LOGE,
5959 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ONE to CFG");
5960 }
5961
5962 if (sme_cfg_set_int
5963 (pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_TWO,
5964 pConfig->retryLimitTwo) == CDF_STATUS_E_FAILURE) {
5965 fStatus = false;
5966 hddLog(LOGE,
5967 "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_TWO to CFG");
5968 }
5969
5970 if (sme_cfg_set_int
5971 (pHddCtx->hHal, WNI_CFG_MAX_MEDIUM_TIME,
5972 pConfig->cfgMaxMediumTime) == CDF_STATUS_E_FAILURE) {
5973 fStatus = false;
5974 hddLog(LOGE,
5975 "Could not pass on WNI_CFG_MAX_MEDIUM_TIME to CFG");
5976 }
5977#ifdef FEATURE_WLAN_TDLS
5978
5979 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,
5980 pConfig->fTDLSUapsdMask) == CDF_STATUS_E_FAILURE) {
5981 fStatus = false;
5982 hddLog(LOGE,
5983 "Could not pass on WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK to CFG");
5984 }
5985 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_BUF_STA_ENABLED,
5986 pConfig->fEnableTDLSBufferSta) ==
5987 CDF_STATUS_E_FAILURE) {
5988 fStatus = false;
5989 hddLog(LOGE,
5990 "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
5991 }
5992 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_PUAPSD_INACT_TIME,
5993 pConfig->fTDLSPuapsdInactivityTimer) ==
5994 CDF_STATUS_E_FAILURE) {
5995 fStatus = false;
5996 hddLog(LOGE,
5997 "Could not pass on WNI_CFG_TDLS_PUAPSD_INACT_TIME to CFG");
5998 }
5999 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_RX_FRAME_THRESHOLD,
6000 pConfig->fTDLSRxFrameThreshold) ==
6001 CDF_STATUS_E_FAILURE) {
6002 fStatus = false;
6003 hddLog(LOGE,
6004 "Could not pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CFG");
6005 }
6006
6007 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,
6008 pConfig->fEnableTDLSOffChannel) ==
6009 CDF_STATUS_E_FAILURE) {
6010 fStatus = false;
6011 hddLog(LOGE,
6012 "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
6013 }
6014 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_WMM_MODE_ENABLED,
6015 pConfig->fEnableTDLSWmmMode) ==
6016 CDF_STATUS_E_FAILURE) {
6017 fStatus = false;
6018 hddLog(LOGE,
6019 "Could not pass on WNI_CFG_TDLS_WMM_MODE_ENABLED to CFG");
6020 }
6021#endif
6022
6023 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN,
6024 pConfig->fEnableAdaptRxDrain) ==
6025 CDF_STATUS_E_FAILURE) {
6026 fStatus = false;
6027 hddLog(LOGE,
6028 "Could not pass on WNI_CFG_ENABLE_ADAPT_RX_DRAIN to CFG");
6029 }
6030
6031 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FLEX_CONNECT_POWER_FACTOR,
6032 pConfig->flexConnectPowerFactor) ==
6033 CDF_STATUS_E_FAILURE) {
6034 fStatus = false;
6035 hddLog(LOGE, "Failure: Could not pass on "
6036 "WNI_CFG_FLEX_CONNECT_POWER_FACTOR to CFG");
6037 }
6038
6039 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ANTENNA_DIVESITY,
6040 pConfig->antennaDiversity) ==
6041 CDF_STATUS_E_FAILURE) {
6042 fStatus = false;
6043 hddLog(LOGE,
6044 "Could not pass on WNI_CFG_ANTENNA_DIVESITY to CFG");
6045 }
6046
6047 if (sme_cfg_set_int(pHddCtx->hHal,
6048 WNI_CFG_DEFAULT_RATE_INDEX_24GHZ,
6049 pConfig->defaultRateIndex24Ghz) ==
6050 CDF_STATUS_E_FAILURE) {
6051 fStatus = false;
6052 hddLog(LOGE,
6053 "Could not pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to CFG");
6054 }
6055
6056 if (sme_cfg_set_int(pHddCtx->hHal,
6057 WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
6058 pConfig->debugP2pRemainOnChannel) ==
6059 CDF_STATUS_E_FAILURE) {
6060 fStatus = false;
6061 hddLog(LOGE,
6062 "Could not pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CFG");
6063 }
6064#ifdef WLAN_FEATURE_11W
6065 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
6066 pConfig->pmfSaQueryMaxRetries) ==
6067 CDF_STATUS_E_FAILURE) {
6068 fStatus = false;
6069 hddLog(LOGE,
6070 "Could not pass on WNI_CFG_SA_QUERY_MAX_RETRIES to CFG");
6071 }
6072
6073 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
6074 pConfig->pmfSaQueryRetryInterval) ==
6075 CDF_STATUS_E_FAILURE) {
6076 fStatus = false;
6077 hddLog(LOGE,
6078 "Could not pass on WNI_CFG_SA_QUERY_RETRY_INTERVAL to CFG");
6079 }
6080#endif
6081
6082 if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_IBSS_ATIM_WIN_SIZE,
6083 pConfig->ibssATIMWinSize) ==
6084 CDF_STATUS_E_FAILURE) {
6085 fStatus = false;
6086 hddLog(LOGE,
6087 "Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CFG");
6088 }
6089 return fStatus;
6090}
6091
6092/**
6093 * hdd_set_sme_config() -initializes the sme configuration parameters
6094 *
6095 * @pHddCtx: the pointer to hdd context
6096 *
6097 * Return: CDF_STATUS_SUCCESS if configuration is correctly applied,
6098 * otherwise the appropriate CDF_STATUS would be returned
6099 */
6100CDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
6101{
6102 CDF_STATUS status = CDF_STATUS_SUCCESS;
6103 tSmeConfigParams *smeConfig;
6104
6105 struct hdd_config *pConfig = pHddCtx->config;
6106
6107 smeConfig = cdf_mem_malloc(sizeof(*smeConfig));
6108 if (NULL == smeConfig) {
6109 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
6110 "%s: unable to allocate smeConfig", __func__);
6111 return CDF_STATUS_E_NOMEM;
6112 }
6113 cdf_mem_zero(smeConfig, sizeof(*smeConfig));
6114
6115 CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
6116 "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d",
6117 __func__, pConfig->WmmMode, pConfig->b80211eIsEnabled,
6118 pConfig->dot11Mode);
6119
6120 /* Config params obtained from the registry
6121 * To Do: set regulatory information here
6122 */
6123
6124 smeConfig->csrConfig.RTSThreshold = pConfig->RTSThreshold;
6125 smeConfig->csrConfig.FragmentationThreshold =
6126 pConfig->FragmentationThreshold;
6127 smeConfig->csrConfig.shortSlotTime = pConfig->ShortSlotTimeEnabled;
6128 smeConfig->csrConfig.Is11dSupportEnabled = pConfig->Is11dSupportEnabled;
6129 smeConfig->csrConfig.HeartbeatThresh24 = pConfig->HeartbeatThresh24;
6130
6131 smeConfig->csrConfig.phyMode =
6132 hdd_cfg_xlate_to_csr_phy_mode(pConfig->dot11Mode);
6133
6134 if (pConfig->dot11Mode == eHDD_DOT11_MODE_abg ||
6135 pConfig->dot11Mode == eHDD_DOT11_MODE_11b ||
6136 pConfig->dot11Mode == eHDD_DOT11_MODE_11g ||
6137 pConfig->dot11Mode == eHDD_DOT11_MODE_11b_ONLY ||
6138 pConfig->dot11Mode == eHDD_DOT11_MODE_11g_ONLY) {
6139 smeConfig->csrConfig.channelBondingMode24GHz = 0;
6140 smeConfig->csrConfig.channelBondingMode5GHz = 0;
6141 } else {
6142 smeConfig->csrConfig.channelBondingMode24GHz =
6143 pConfig->nChannelBondingMode24GHz;
6144 smeConfig->csrConfig.channelBondingMode5GHz =
6145 pConfig->nChannelBondingMode5GHz;
6146 }
6147 smeConfig->csrConfig.TxRate = pConfig->TxRate;
6148 smeConfig->csrConfig.nScanResultAgeCount = pConfig->ScanResultAgeCount;
6149 smeConfig->csrConfig.scanAgeTimeNCNPS = pConfig->nScanAgeTimeNCNPS;
6150 smeConfig->csrConfig.scanAgeTimeNCPS = pConfig->nScanAgeTimeNCPS;
6151 smeConfig->csrConfig.scanAgeTimeCNPS = pConfig->nScanAgeTimeCNPS;
6152 smeConfig->csrConfig.scanAgeTimeCPS = pConfig->nScanAgeTimeCPS;
6153 smeConfig->csrConfig.AdHocChannel24 = pConfig->OperatingChannel;
6154 smeConfig->csrConfig.fSupplicantCountryCodeHasPriority =
6155 pConfig->fSupplicantCountryCodeHasPriority;
6156 smeConfig->csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
6157 smeConfig->csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
6158 smeConfig->csrConfig.vccUlMacLossThreshold =
6159 pConfig->nVccUlMacLossThreshold;
6160 smeConfig->csrConfig.nRoamingTime = pConfig->nRoamingTime;
6161 smeConfig->csrConfig.nInitialDwellTime = pConfig->nInitialDwellTime;
6162 smeConfig->csrConfig.initial_scan_no_dfs_chnl =
6163 pConfig->initial_scan_no_dfs_chnl;
6164 smeConfig->csrConfig.nActiveMaxChnTime = pConfig->nActiveMaxChnTime;
6165 smeConfig->csrConfig.nActiveMinChnTime = pConfig->nActiveMinChnTime;
6166 smeConfig->csrConfig.nPassiveMaxChnTime = pConfig->nPassiveMaxChnTime;
6167 smeConfig->csrConfig.nPassiveMinChnTime = pConfig->nPassiveMinChnTime;
6168#ifdef WLAN_AP_STA_CONCURRENCY
6169 smeConfig->csrConfig.nActiveMaxChnTimeConc =
6170 pConfig->nActiveMaxChnTimeConc;
6171 smeConfig->csrConfig.nActiveMinChnTimeConc =
6172 pConfig->nActiveMinChnTimeConc;
6173 smeConfig->csrConfig.nPassiveMaxChnTimeConc =
6174 pConfig->nPassiveMaxChnTimeConc;
6175 smeConfig->csrConfig.nPassiveMinChnTimeConc =
6176 pConfig->nPassiveMinChnTimeConc;
6177 smeConfig->csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
6178 smeConfig->csrConfig.nNumStaChanCombinedConc =
6179 pConfig->nNumStaChanCombinedConc;
6180 smeConfig->csrConfig.nNumP2PChanCombinedConc =
6181 pConfig->nNumP2PChanCombinedConc;
6182
6183#endif
6184 smeConfig->csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
6185 smeConfig->csrConfig.WMMSupportMode = pConfig->WmmMode;
6186
6187#if defined WLAN_FEATURE_VOWIFI
6188 smeConfig->rrmConfig.rrmEnabled = pConfig->fRrmEnable;
6189 smeConfig->rrmConfig.maxRandnInterval = pConfig->nRrmRandnIntvl;
6190#endif
6191 /* Remaining config params not obtained from registry
6192 * On RF EVB beacon using channel 1.
6193 */
6194#ifdef WLAN_FEATURE_11AC
6195 smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
6196 smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
6197 smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
6198 smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
6199 smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
6200 smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee;
6201 smeConfig->csrConfig.enableVhtpAid = pConfig->enableVhtpAid;
6202 smeConfig->csrConfig.enableVhtGid = pConfig->enableVhtGid;
6203#endif
6204 smeConfig->csrConfig.enableAmpduPs = pConfig->enableAmpduPs;
6205 smeConfig->csrConfig.enableHtSmps = pConfig->enableHtSmps;
6206 smeConfig->csrConfig.htSmps = pConfig->htSmps;
6207 smeConfig->csrConfig.AdHocChannel5G = pConfig->AdHocChannel5G;
6208 smeConfig->csrConfig.AdHocChannel24 = pConfig->AdHocChannel24G;
6209 smeConfig->csrConfig.ProprietaryRatesEnabled = 0;
6210 smeConfig->csrConfig.HeartbeatThresh50 = 40;
6211 smeConfig->csrConfig.bandCapability = pConfig->nBandCapability;
6212 if (pConfig->nBandCapability == eCSR_BAND_24) {
6213 smeConfig->csrConfig.Is11hSupportEnabled = 0;
6214 } else {
6215 smeConfig->csrConfig.Is11hSupportEnabled =
6216 pConfig->Is11hSupportEnabled;
6217 }
6218 smeConfig->csrConfig.cbChoice = 0;
6219 smeConfig->csrConfig.eBand = pConfig->nBandCapability;
6220 smeConfig->csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
6221 smeConfig->csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
6222 smeConfig->csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
6223#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
6224 smeConfig->csrConfig.nRoamPrefer5GHz = pConfig->nRoamPrefer5GHz;
6225 smeConfig->csrConfig.nRoamIntraBand = pConfig->nRoamIntraBand;
6226 smeConfig->csrConfig.nProbes = pConfig->nProbes;
6227
6228 smeConfig->csrConfig.nRoamScanHomeAwayTime =
6229 pConfig->nRoamScanHomeAwayTime;
6230#endif
6231 smeConfig->csrConfig.fFirstScanOnly2GChnl =
6232 pConfig->enableFirstScan2GOnly;
6233
6234 /* FIXME 11d config is hardcoded */
6235 if (CDF_SAP_MODE != hdd_get_conparam())
6236 smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;
6237
6238 hdd_set_power_save_offload_config(pHddCtx);
6239
6240#ifdef WLAN_FEATURE_VOWIFI_11R
6241 smeConfig->csrConfig.csr11rConfig.IsFTResourceReqSupported =
6242 pConfig->fFTResourceReqSupported;
6243#endif
6244#ifdef FEATURE_WLAN_LFR
6245 smeConfig->csrConfig.isFastRoamIniFeatureEnabled =
6246 pConfig->isFastRoamIniFeatureEnabled;
6247 smeConfig->csrConfig.MAWCEnabled = pConfig->MAWCEnabled;
6248#endif
6249#ifdef FEATURE_WLAN_ESE
6250 smeConfig->csrConfig.isEseIniFeatureEnabled =
6251 pConfig->isEseIniFeatureEnabled;
6252 if (pConfig->isEseIniFeatureEnabled) {
6253 pConfig->isFastTransitionEnabled = true;
6254 }
6255#endif
6256#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
6257 smeConfig->csrConfig.isFastTransitionEnabled =
6258 pConfig->isFastTransitionEnabled;
6259 smeConfig->csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
6260 smeConfig->csrConfig.isWESModeEnabled = pConfig->isWESModeEnabled;
6261#endif
6262 smeConfig->csrConfig.isRoamOffloadScanEnabled =
6263 pConfig->isRoamOffloadScanEnabled;
6264 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled =
6265 pConfig->bFastRoamInConIniFeatureEnabled;
6266
6267 if (0 == smeConfig->csrConfig.isRoamOffloadScanEnabled) {
6268 /* Disable roaming in concurrency if roam scan offload is disabled */
6269 smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled = 0;
6270 }
6271#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
6272 smeConfig->csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold =
6273 pConfig->nNeighborLookupRssiThreshold;
6274 smeConfig->csrConfig.neighborRoamConfig.delay_before_vdev_stop =
6275 pConfig->delay_before_vdev_stop;
6276 smeConfig->csrConfig.neighborRoamConfig.nOpportunisticThresholdDiff =
6277 pConfig->nOpportunisticThresholdDiff;
6278 smeConfig->csrConfig.neighborRoamConfig.nRoamRescanRssiDiff =
6279 pConfig->nRoamRescanRssiDiff;
6280 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime =
6281 pConfig->nNeighborScanMaxChanTime;
6282 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMinChanTime =
6283 pConfig->nNeighborScanMinChanTime;
6284 smeConfig->csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod =
6285 pConfig->nNeighborScanPeriod;
6286 smeConfig->csrConfig.neighborRoamConfig.nMaxNeighborRetries =
6287 pConfig->nMaxNeighborReqTries;
6288 smeConfig->csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod =
6289 pConfig->nNeighborResultsRefreshPeriod;
6290 smeConfig->csrConfig.neighborRoamConfig.nEmptyScanRefreshPeriod =
6291 pConfig->nEmptyScanRefreshPeriod;
6292 hdd_string_to_u8_array(pConfig->neighborScanChanList,
6293 smeConfig->csrConfig.neighborRoamConfig.
6294 neighborScanChanList.channelList,
6295 &smeConfig->csrConfig.neighborRoamConfig.
6296 neighborScanChanList.numChannels,
6297 WNI_CFG_VALID_CHANNEL_LIST_LEN);
6298 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFirstBcnt =
6299 pConfig->nRoamBmissFirstBcnt;
6300 smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFinalBcnt =
6301 pConfig->nRoamBmissFinalBcnt;
6302 smeConfig->csrConfig.neighborRoamConfig.nRoamBeaconRssiWeight =
6303 pConfig->nRoamBeaconRssiWeight;
6304 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_max_count =
6305 pConfig->nhi_rssi_scan_max_count;
6306 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_delta =
6307 pConfig->nhi_rssi_scan_rssi_delta;
6308 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_delay =
6309 pConfig->nhi_rssi_scan_delay;
6310 smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_ub =
6311 pConfig->nhi_rssi_scan_rssi_ub;
6312#endif
6313 smeConfig->csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
6314 smeConfig->csrConfig.fValidateList = pConfig->fValidateScanList;
6315 smeConfig->csrConfig.allowDFSChannelRoam = pConfig->allowDFSChannelRoam;
6316
6317 /* Enable/Disable MCC */
6318 smeConfig->csrConfig.fEnableMCCMode = pConfig->enableMCC;
6319 smeConfig->csrConfig.mcc_rts_cts_prot_enable =
6320 pConfig->mcc_rts_cts_prot_enable;
6321 smeConfig->csrConfig.mcc_bcast_prob_resp_enable =
6322 pConfig->mcc_bcast_prob_resp_enable;
6323 smeConfig->csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;
6324
6325 /* Scan Results Aging Time out value */
6326 smeConfig->csrConfig.scanCfgAgingTime = pConfig->scanAgingTimeout;
6327
6328 smeConfig->csrConfig.enableTxLdpc = pConfig->enableTxLdpc;
6329#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
6330 smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode;
6331#endif
6332
6333 smeConfig->csrConfig.isAmsduSupportInAMPDU =
6334 pConfig->isAmsduSupportInAMPDU;
6335 smeConfig->csrConfig.nSelect5GHzMargin = pConfig->nSelect5GHzMargin;
6336
6337 smeConfig->csrConfig.isCoalesingInIBSSAllowed =
6338 pHddCtx->config->isCoalesingInIBSSAllowed;
6339 smeConfig->csrConfig.ignore_peer_erp_info =
6340 pConfig->ignore_peer_erp_info;
6341 /* update SSR config */
6342 sme_update_enable_ssr((tHalHandle) (pHddCtx->hHal),
6343 pHddCtx->config->enableSSR);
6344
6345#ifdef FEATURE_WLAN_SCAN_PNO
6346 /* Update PNO offoad status */
6347 smeConfig->pnoOffload = pHddCtx->config->PnoOffload;
6348#endif
6349
6350 /* Update maximum interfaces information */
6351 smeConfig->max_intf_count = pHddCtx->max_intf_count;
6352
6353 smeConfig->fEnableDebugLog = pHddCtx->config->gEnableDebugLog;
6354
6355 smeConfig->enable5gEBT = pHddCtx->config->enable5gEBT;
6356
6357 smeConfig->enableSelfRecovery = pHddCtx->config->enableSelfRecovery;
6358#ifdef WLAN_FEATURE_ROAM_OFFLOAD
6359 smeConfig->csrConfig.isRoamOffloadEnabled =
6360 pHddCtx->config->isRoamOffloadEnabled;
6361#endif
6362 smeConfig->csrConfig.conc_custom_rule1 =
6363 pHddCtx->config->conc_custom_rule1;
6364 smeConfig->csrConfig.conc_custom_rule2 =
6365 pHddCtx->config->conc_custom_rule2;
6366 smeConfig->csrConfig.is_sta_connection_in_5gz_enabled =
6367 pHddCtx->config->is_sta_connection_in_5gz_enabled;
6368
6369 smeConfig->f_sta_miracast_mcc_rest_time_val =
6370 pHddCtx->config->sta_miracast_mcc_rest_time_val;
6371
6372#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
6373 smeConfig->sap_channel_avoidance =
6374 pHddCtx->config->sap_channel_avoidance;
6375#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
6376
6377 smeConfig->f_prefer_non_dfs_on_radar =
6378 pHddCtx->config->prefer_non_dfs_on_radar;
6379
6380 smeConfig->is_ps_enabled = pHddCtx->config->is_ps_enabled;
6381 hdd_set_fine_time_meas_cap(pHddCtx, smeConfig);
6382
6383 cds_set_multicast_logging(pHddCtx->config->multicast_host_fw_msgs);
6384
6385 smeConfig->csrConfig.sendDeauthBeforeCon = pConfig->sendDeauthBeforeCon;
6386
6387 smeConfig->policy_manager_enabled =
6388 pHddCtx->config->policy_manager_enabled;
6389 smeConfig->csrConfig.max_scan_count =
6390 pHddCtx->config->max_scan_count;
6391
6392 /* Update 802.11p config */
6393 smeConfig->csrConfig.enable_dot11p =
6394 (pHddCtx->config->dot11p_mode != WLAN_HDD_11P_DISABLED);
6395
6396 smeConfig->dual_mac_feature_disable =
6397 pHddCtx->config->dual_mac_feature_disable;
6398
6399 status = sme_update_config(pHddCtx->hHal, smeConfig);
6400 if (!CDF_IS_STATUS_SUCCESS(status)) {
6401 hddLog(LOGE, "sme_update_config() return failure %d",
6402 status);
6403 }
6404
6405 cdf_mem_free(smeConfig);
6406 return status;
6407}
6408
6409/**
6410 * hdd_execute_global_config_command() - execute the global config command
6411 * @pHddCtx: the pointer to hdd context
6412 * @command: the command to run
6413 *
6414 * Return: the CDF_STATUS return from hdd_execute_config_command
6415 */
6416CDF_STATUS hdd_execute_global_config_command(hdd_context_t *pHddCtx,
6417 char *command)
6418{
6419 return hdd_execute_config_command(g_registry_table,
6420 ARRAY_SIZE(g_registry_table),
6421 (uint8_t *) pHddCtx->config,
6422 pHddCtx, command);
6423}
6424
6425/**
6426 * hdd_cfg_get_global_config() - get the configuration table
6427 * @pHddCtx: pointer to hdd context
6428 * @pBuf: buffer to store the configuration
6429 * @buflen: size of the buffer
6430 *
6431 * Return: CDF_STATUS_SUCCESS if the configuration and buffer size can carry
6432 * the content, otherwise CDF_STATUS_E_RESOURCES
6433 */
6434CDF_STATUS hdd_cfg_get_global_config(hdd_context_t *pHddCtx, char *pBuf,
6435 int buflen)
6436{
6437 return hdd_cfg_get_config(g_registry_table,
6438 ARRAY_SIZE(g_registry_table),
6439 (uint8_t *) pHddCtx->config, pHddCtx, pBuf,
6440 buflen);
6441}
6442
6443/**
6444 * hdd_is_okc_mode_enabled() - returns whether OKC mode is enabled or not
6445 * @pHddCtx: the pointer to hdd context
6446 *
6447 * Return: true if OKC is enabled, otherwise false
6448 */
6449bool hdd_is_okc_mode_enabled(hdd_context_t *pHddCtx)
6450{
6451 if (NULL == pHddCtx) {
6452 hddLog(CDF_TRACE_LEVEL_FATAL, "%s: pHddCtx is NULL", __func__);
6453 return -EINVAL;
6454 }
6455#ifdef FEATURE_WLAN_OKC
6456 return pHddCtx->config->isOkcIniFeatureEnabled;
6457#else
6458 return false;
6459#endif
6460}
6461
6462/**
6463 * hdd_update_nss() - Update the number of spatial streams supported.
6464 * Ensure that nss is either 1 or 2 before calling this.
6465 *
6466 * @hdd_ctx: the pointer to hdd context
6467 * @nss: the number of spatial streams to be updated
6468 *
6469 * This function is used to modify the number of spatial streams
6470 * supported when not in connected state.
6471 *
6472 * Return: CDF_STATUS_SUCCESS if nss is correctly updated,
6473 * otherwise CDF_STATUS_E_FAILURE would be returned
6474 */
6475CDF_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss)
6476{
6477 struct hdd_config *hdd_config = hdd_ctx->config;
6478 uint32_t temp = 0;
6479 uint32_t rx_supp_data_rate, tx_supp_data_rate;
6480 bool status = true;
6481 tSirMacHTCapabilityInfo *ht_cap_info;
6482 uint8_t mcs_set[SIZE_OF_SUPPORTED_MCS_SET] = {0};
6483 uint8_t mcs_set_temp[SIZE_OF_SUPPORTED_MCS_SET];
6484 uint32_t val;
6485 uint16_t val16;
6486 uint8_t enable2x2;
6487
6488 if ((nss == 2) && (hdd_ctx->num_rf_chains != 2)) {
6489 hddLog(LOGE, "No support for 2 spatial streams");
6490 return CDF_STATUS_E_INVAL;
6491 }
6492
6493 enable2x2 = (nss == 1) ? 0 : 1;
6494
6495 if (hdd_config->enable2x2 == enable2x2) {
6496 hddLog(LOGE, "NSS same as requested");
6497 return CDF_STATUS_SUCCESS;
6498 }
6499
6500 if (true == sme_is_any_session_in_connected_state(hdd_ctx->hHal)) {
6501 hddLog(LOGE, "Connected sessions present, Do not change NSS");
6502 return CDF_STATUS_E_INVAL;
6503 }
6504
6505 hdd_config->enable2x2 = enable2x2;
6506
6507 if (!hdd_config->enable2x2) {
6508 /* 1x1 */
6509 rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
6510 tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
6511 } else {
6512 /* 2x2 */
6513 rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
6514 tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
6515 }
6516
6517 /* Update Rx Highest Long GI data Rate */
6518 if (sme_cfg_set_int(hdd_ctx->hHal,
6519 WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE,
6520 rx_supp_data_rate) == CDF_STATUS_E_FAILURE) {
6521 status = false;
6522 hddLog(LOGE,
6523 "Could not pass on WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
6524 }
6525
6526 /* Update Tx Highest Long GI data Rate */
6527 if (sme_cfg_set_int(hdd_ctx->hHal,
6528 WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE,
6529 tx_supp_data_rate) == CDF_STATUS_E_FAILURE) {
6530 status = false;
6531 hddLog(LOGE,
6532 "Could not pass on WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
6533 }
6534
6535 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO, &temp);
6536 val16 = (uint16_t)temp;
6537 ht_cap_info = (tSirMacHTCapabilityInfo *)&val16;
6538 if (!(hdd_ctx->ht_tx_stbc_supported && hdd_config->enable2x2))
6539 ht_cap_info->txSTBC = 0;
6540 else
6541 ht_cap_info->txSTBC = hdd_config->enableTxSTBC;
6542 temp = val16;
6543 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
6544 temp) == CDF_STATUS_E_FAILURE) {
6545 status = false;
6546 hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
6547 }
6548
6549 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
6550 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
6551 if (hdd_config->enable2x2)
6552 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
6553 else
6554 temp |= 0x000C;
6555
6556 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
6557 temp) == CDF_STATUS_E_FAILURE) {
6558 status = false;
6559 hddLog(LOGE,
6560 "Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
6561 }
6562
6563 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
6564 temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
6565 if (hdd_config->enable2x2)
6566 temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
6567 else
6568 temp |= 0x000C;
6569
6570 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
6571 temp) == CDF_STATUS_E_FAILURE) {
6572 status = false;
6573 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
6574 }
6575
6576 sme_cfg_get_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
6577 temp = (temp & 0xFFFC) | hdd_config->vhtTxMCS;
6578 if (hdd_config->enable2x2)
6579 temp = (temp & 0xFFF3) | (hdd_config->vhtTxMCS2x2 << 2);
6580 else
6581 temp |= 0x000C;
6582
6583 if (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
6584 temp) == CDF_STATUS_E_FAILURE) {
6585 status = false;
6586 hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
6587 }
6588
6589#define WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES 0xff
6590 val = SIZE_OF_SUPPORTED_MCS_SET;
6591 sme_cfg_get_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
6592 mcs_set_temp, &val);
6593
6594 mcs_set[0] = mcs_set_temp[0];
6595 if (hdd_config->enable2x2)
6596 for (val = 0; val < nss; val++)
6597 mcs_set[val] = WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES;
6598
6599 if (sme_cfg_set_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
6600 mcs_set,
6601 SIZE_OF_SUPPORTED_MCS_SET) ==
6602 CDF_STATUS_E_FAILURE) {
6603 status = false;
6604 hddLog(LOGE, "Could not pass on MCS SET to CFG");
6605 }
6606#undef WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES
6607
6608 if (CDF_STATUS_SUCCESS != sme_update_nss(hdd_ctx->hHal, nss))
6609 status = false;
6610
6611 return (status == false) ? CDF_STATUS_E_FAILURE : CDF_STATUS_SUCCESS;
6612}