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