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 = ®_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