/*
 * Copyright (c) 2012-2019,2021 The Linux Foundation. All rights reserved.
 *
 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
 *
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * This file was originally distributed by Qualcomm Atheros, Inc.
 * under proprietary terms before Copyright ownership was assigned
 * to the Linux Foundation.
 */

/**=========================================================================

                       EDIT HISTORY FOR FILE


  This section contains comments describing changes made to the module.
  Notice that changes are listed in reverse chronological order.


  $Header:$   $DateTime: $ $Author: $


  when        who    what, where, why
  --------    ---    --------------------------------------------------------
  07/27/09    kanand Created module.

  ==========================================================================*/

/*--------------------------------------------------------------------------
  Include Files
  ------------------------------------------------------------------------*/


#include <linux/firmware.h>
#include <linux/string.h>
#include <wlan_hdd_includes.h>
#include <wlan_hdd_main.h>
#include <wlan_hdd_assoc.h>
#include <wlan_hdd_cfg.h>
#include <linux/string.h>
#include <vos_types.h>
#include <csrApi.h>
#include <pmcApi.h>
#include <wlan_hdd_misc.h>

static char *mac_param;
module_param_named(mac, mac_param, charp, S_IRUGO);
MODULE_PARM_DESC(mac, "mac address override");

#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
static void
cbNotifySetRoamPrefer5GHz(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateRoamPrefer5GHz(pHddCtx->hHal, pHddCtx->cfg_ini->nRoamPrefer5GHz);
}

static void
cbNotifySetImmediateRoamRssiDiff(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateImmediateRoamRssiDiff(pHddCtx->hHal,
                                    pHddCtx->cfg_ini->nImmediateRoamRssiDiff,
                                    0);
}

static void
cbNotifySetRoamRssiDiff(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateRoamRssiDiff(pHddCtx->hHal,
                           0,
                           pHddCtx->cfg_ini->RoamRssiDiff);
}

static void
cbNotifySetFastTransitionEnabled(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateFastTransitionEnabled(pHddCtx->hHal,
                                    pHddCtx->cfg_ini->isFastTransitionEnabled);
}

static void
cbNotifySetRoamIntraBand(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_setRoamIntraBand(pHddCtx->hHal, pHddCtx->cfg_ini->nRoamIntraBand);
}

static void
cbNotifySetWESMode(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateWESMode(pHddCtx->hHal,
                      pHddCtx->cfg_ini->isWESModeEnabled,
                      0);
}

static void
cbNotifySetRoamScanNProbes(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateRoamScanNProbes(pHddCtx->hHal, 0,
                              pHddCtx->cfg_ini->nProbes);
}

static void
cbNotifySetRoamScanHomeAwayTime(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
     sme_UpdateRoamScanHomeAwayTime(pHddCtx->hHal, 0,
                                    pHddCtx->cfg_ini->nRoamScanHomeAwayTime,
                                    eANI_BOOLEAN_TRUE);
}
#endif

#ifdef FEATURE_WLAN_OKC
static void
cbNotifySetOkcFeatureEnabled(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
}
#endif

#ifdef FEATURE_WLAN_LFR
static void
NotifyIsFastRoamIniFeatureEnabled(hdd_context_t *pHddCtx,
                                  unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateIsFastRoamIniFeatureEnabled(pHddCtx->hHal, 0,
                               pHddCtx->cfg_ini->isFastRoamIniFeatureEnabled );
}

static void
NotifyIsMAWCIniFeatureEnabled(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateIsMAWCIniFeatureEnabled(pHddCtx->hHal,
                                      pHddCtx->cfg_ini->MAWCEnabled );
}
#endif

#ifdef FEATURE_WLAN_ESE
static void
cbNotifySetEseFeatureEnabled(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateIsEseFeatureEnabled(pHddCtx->hHal, 0,
                                  pHddCtx->cfg_ini->isEseIniFeatureEnabled );
}
#endif

static void
cbNotifySetFwRssiMonitoring(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateConfigFwRssiMonitoring(pHddCtx->hHal,
                                     pHddCtx->cfg_ini->fEnableFwRssiMonitoring);
}

#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
static void cbNotifySetOpportunisticScanThresholdDiff(hdd_context_t *pHddCtx,
                                                      unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_SetRoamOpportunisticScanThresholdDiff(pHddCtx->hHal, 0,
                          pHddCtx->cfg_ini->nOpportunisticThresholdDiff );
}

static void cbNotifySetRoamRescanRssiDiff(hdd_context_t *pHddCtx,
                                          unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_SetRoamRescanRssiDiff(pHddCtx->hHal,
                              0,
                              pHddCtx->cfg_ini->nRoamRescanRssiDiff);
}

static void
cbNotifySetNeighborLookupRssiThreshold(hdd_context_t *pHddCtx,
                                       unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_setNeighborLookupRssiThreshold(pHddCtx->hHal, 0,
                               pHddCtx->cfg_ini->nNeighborLookupRssiThreshold);
}

static void
cb_notify_set_delay_before_vdev_stop(hdd_context_t *pHddCtx,
                                     unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_set_delay_before_vdev_stop(pHddCtx->hHal, 0,
                                   pHddCtx->cfg_ini->delay_before_vdev_stop);
}

static void
cbNotifySetNeighborScanPeriod(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_setNeighborScanPeriod(pHddCtx->hHal, 0,
                              pHddCtx->cfg_ini->nNeighborScanPeriod );
}

static void
cbNotifySetNeighborResultsRefreshPeriod(hdd_context_t *pHddCtx,
                                        unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_setNeighborScanRefreshPeriod(pHddCtx->hHal, 0,
                               pHddCtx->cfg_ini->nNeighborResultsRefreshPeriod);
}

static void
cbNotifySetEmptyScanRefreshPeriod(hdd_context_t *pHddCtx,
                                  unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateEmptyScanRefreshPeriod(pHddCtx->hHal, 0,
                                     pHddCtx->cfg_ini->nEmptyScanRefreshPeriod);
}

static void
cbNotifySetNeighborScanMinChanTime(hdd_context_t *pHddCtx,
                                   unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_setNeighborScanMinChanTime(pHddCtx->hHal,
                                   pHddCtx->cfg_ini->nNeighborScanMinChanTime,
                                   0);
}

static void
cbNotifySetNeighborScanMaxChanTime(hdd_context_t *pHddCtx,
                                   unsigned long NotifyId)
{
    sme_setNeighborScanMaxChanTime(pHddCtx->hHal, 0,
                                   pHddCtx->cfg_ini->nNeighborScanMaxChanTime);
}
static void cbNotifySetRoamBmissFirstBcnt(hdd_context_t *pHddCtx,
                                          unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_SetRoamBmissFirstBcnt(pHddCtx->hHal,
                              0,
                              pHddCtx->cfg_ini->nRoamBmissFirstBcnt);
}

static void cbNotifySetRoamBmissFinalBcnt(hdd_context_t *pHddCtx,
                                          unsigned long NotifyId)
{
    sme_SetRoamBmissFinalBcnt(pHddCtx->hHal, 0,
                              pHddCtx->cfg_ini->nRoamBmissFinalBcnt);
}

static void cbNotifySetRoamBeaconRssiWeight(hdd_context_t *pHddCtx,
                                          unsigned long NotifyId)
{
    sme_SetRoamBeaconRssiWeight(pHddCtx->hHal, 0,
                              pHddCtx->cfg_ini->nRoamBeaconRssiWeight);
}

static void
cbNotifySetDFSScanMode(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    /* At the point this routine is called, the value in the cfg_ini
       table has already been updated */
    sme_UpdateDFSScanMode(pHddCtx->hHal, 0,
                          pHddCtx->cfg_ini->allowDFSChannelRoam);
}

#endif

static void cbNotifySetEnableSSR(hdd_context_t *pHddCtx, unsigned long NotifyId)
{
    sme_UpdateEnableSSR(pHddCtx->hHal, pHddCtx->cfg_ini->enableSSR);
}


static void cbNotify_set_gSapPreferredChanLocation(hdd_context_t *pHddCtx,
                                                   unsigned long NotifyId)
{
    WLANSAP_set_Dfs_Preferred_Channel_location(pHddCtx->hHal,
                              pHddCtx->cfg_ini->gSapPreferredChanLocation);
}


static void chNotify_set_gDisableDfsJapanW53(hdd_context_t *pHddCtx,
                                             unsigned long NotifyId)
{
    WLANSAP_set_Dfs_Restrict_JapanW53(pHddCtx->hHal,
                              pHddCtx->cfg_ini->gDisableDfsJapanW53);
}

#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
static void
cbNotifyUpdateRoamScanOffloadEnabled(hdd_context_t *pHddCtx,
                                     unsigned long NotifyId)
{
    sme_UpdateRoamScanOffloadEnabled(pHddCtx->hHal,
                                    pHddCtx->cfg_ini->isRoamOffloadScanEnabled);
    if (0 == pHddCtx->cfg_ini->isRoamOffloadScanEnabled) {
        pHddCtx->cfg_ini->bFastRoamInConIniFeatureEnabled = 0;
        sme_UpdateEnableFastRoamInConcurrency(pHddCtx->hHal,
                             pHddCtx->cfg_ini->bFastRoamInConIniFeatureEnabled);
    }
}

static void
cbNotifySetEnableFastRoamInConcurrency(hdd_context_t *pHddCtx,
                                       unsigned long NotifyId)
{
    sme_UpdateEnableFastRoamInConcurrency(pHddCtx->hHal,
                             pHddCtx->cfg_ini->bFastRoamInConIniFeatureEnabled);
}

#endif

/**
 * cb_notify_set_roam_scan_hi_rssi_scan_params() - configure hi rssi
 * scan params from cfg to sme.
 * @hdd_ctx: HDD context data structure
 * @notify_id: Identifies 1 of the 4 parameters to be modified
 *
 * Picks up the value from hd configuration and passes it to SME.
 * Return: void
 */

static void
cb_notify_set_roam_scan_hi_rssi_scan_params(hdd_context_t *hdd_ctx,
				    unsigned long notify_id)
{
	int32_t val;

	if (wlan_hdd_validate_context(hdd_ctx))
		return;

	switch (notify_id) {
	case eCSR_HI_RSSI_SCAN_MAXCOUNT_ID:
		val = hdd_ctx->cfg_ini->nhi_rssi_scan_max_count;
		break;

	case eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID:
		val = hdd_ctx->cfg_ini->nhi_rssi_scan_rssi_delta;
		break;

	case eCSR_HI_RSSI_SCAN_DELAY_ID:
		val = hdd_ctx->cfg_ini->nhi_rssi_scan_delay;
		break;

	case eCSR_HI_RSSI_SCAN_RSSI_UB_ID:
		val = hdd_ctx->cfg_ini->nhi_rssi_scan_rssi_ub;
		break;

	default:
		return;
	}

	sme_update_roam_scan_hi_rssi_scan_params(hdd_ctx->hHal, 0,
		notify_id, val);
}


REG_TABLE_ENTRY g_registry_table[] =
{
   REG_VARIABLE( CFG_RTS_THRESHOLD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, RTSThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RTS_THRESHOLD_DEFAULT,
                 CFG_RTS_THRESHOLD_MIN,
                 CFG_RTS_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_FRAG_THRESHOLD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, FragmentationThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FRAG_THRESHOLD_DEFAULT,
                 CFG_FRAG_THRESHOLD_MIN,
                 CFG_FRAG_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_OPERATING_CHANNEL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, OperatingChannel,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_OPERATING_CHANNEL_DEFAULT,
                 CFG_OPERATING_CHANNEL_MIN,
                 CFG_OPERATING_CHANNEL_MAX ),

   REG_VARIABLE( CFG_SHORT_SLOT_TIME_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ShortSlotTimeEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SHORT_SLOT_TIME_ENABLED_DEFAULT,
                 CFG_SHORT_SLOT_TIME_ENABLED_MIN,
                 CFG_SHORT_SLOT_TIME_ENABLED_MAX ),

   REG_VARIABLE( CFG_11D_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, Is11dSupportEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_11D_SUPPORT_ENABLED_DEFAULT,
                 CFG_11D_SUPPORT_ENABLED_MIN,
                 CFG_11D_SUPPORT_ENABLED_MAX ),

   REG_VARIABLE( CFG_11H_SUPPORT_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, Is11hSupportEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_11H_SUPPORT_ENABLED_DEFAULT,
                 CFG_11H_SUPPORT_ENABLED_MIN,
                 CFG_11H_SUPPORT_ENABLED_MAX ),

   REG_VARIABLE( CFG_ENFORCE_11D_CHANNELS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnforce11dChannels,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENFORCE_11D_CHANNELS_DEFAULT,
                 CFG_ENFORCE_11D_CHANNELS_MIN,
                 CFG_ENFORCE_11D_CHANNELS_MAX ),

   REG_VARIABLE( CFG_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fSupplicantCountryCodeHasPriority,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_COUNTRY_CODE_PRIORITY_DEFAULT,
                 CFG_COUNTRY_CODE_PRIORITY_MIN,
                 CFG_COUNTRY_CODE_PRIORITY_MAX),

   REG_VARIABLE( CFG_ENFORCE_COUNTRY_CODE_MATCH_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnforceCountryCodeMatch,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENFORCE_COUNTRY_CODE_MATCH_DEFAULT,
                 CFG_ENFORCE_COUNTRY_CODE_MATCH_MIN,
                 CFG_ENFORCE_COUNTRY_CODE_MATCH_MAX ),

   REG_VARIABLE( CFG_ENFORCE_DEFAULT_DOMAIN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnforceDefaultDomain,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENFORCE_DEFAULT_DOMAIN_DEFAULT,
                 CFG_ENFORCE_DEFAULT_DOMAIN_MIN,
                 CFG_ENFORCE_DEFAULT_DOMAIN_MAX ),

   REG_VARIABLE( CFG_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, HeartbeatThresh24,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_HEARTBEAT_THRESH_24_DEFAULT,
                 CFG_HEARTBEAT_THRESH_24_MIN,
                 CFG_HEARTBEAT_THRESH_24_MAX ),

   REG_VARIABLE_STRING( CFG_POWER_USAGE_NAME, WLAN_PARAM_String,
                        hdd_config_t, PowerUsageControl,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_POWER_USAGE_DEFAULT ),

   REG_VARIABLE( CFG_ENABLE_SUSPEND_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nEnableSuspend,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_SUSPEND_DEFAULT,
                 CFG_ENABLE_SUSPEND_MIN,
                 CFG_ENABLE_SUSPEND_MAX ),

   REG_VARIABLE( CFG_ENABLE_ENABLE_DRIVER_STOP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nEnableDriverStop,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_ENABLE_DRIVER_STOP_DEFAULT,
                 CFG_ENABLE_ENABLE_DRIVER_STOP_MIN,
                 CFG_ENABLE_ENABLE_DRIVER_STOP_MAX ),

   REG_VARIABLE( CFG_ENABLE_LOGP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsLogpEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_LOGP_DEFAULT,
                 CFG_ENABLE_LOGP_MIN,
                 CFG_ENABLE_LOGP_MAX ),

   REG_VARIABLE( CFG_ENABLE_IMPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsImpsEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_IMPS_DEFAULT,
                 CFG_ENABLE_IMPS_MIN,
                 CFG_ENABLE_IMPS_MAX ),

   REG_VARIABLE( CFG_IMPS_MINIMUM_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nImpsMinSleepTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IMPS_MINIMUM_SLEEP_TIME_DEFAULT,
                 CFG_IMPS_MINIMUM_SLEEP_TIME_MIN,
                 CFG_IMPS_MINIMUM_SLEEP_TIME_MAX ),

   REG_VARIABLE( CFG_IMPS_MAXIMUM_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nImpsMaxSleepTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IMPS_MAXIMUM_SLEEP_TIME_DEFAULT,
                 CFG_IMPS_MAXIMUM_SLEEP_TIME_MIN,
                 CFG_IMPS_MAXIMUM_SLEEP_TIME_MAX ),

   REG_VARIABLE( CFG_IMPS_MODERATE_SLEEP_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nImpsModSleepTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IMPS_MODERATE_SLEEP_TIME_DEFAULT,
                 CFG_IMPS_MODERATE_SLEEP_TIME_MIN,
                 CFG_IMPS_MODERATE_SLEEP_TIME_MAX ),

   REG_VARIABLE( CFG_ENABLE_BMPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsBmpsEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_BMPS_DEFAULT,
                 CFG_ENABLE_BMPS_MIN,
                 CFG_ENABLE_BMPS_MAX ),

   REG_VARIABLE( CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nBmpsMinListenInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BMPS_MINIMUM_LI_DEFAULT,
                 CFG_BMPS_MINIMUM_LI_MIN,
                 CFG_BMPS_MINIMUM_LI_MAX ),

   REG_VARIABLE( CFG_BMPS_MAXIMUM_LI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nBmpsMaxListenInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BMPS_MAXIMUM_LI_DEFAULT,
                 CFG_BMPS_MAXIMUM_LI_MIN,
                 CFG_BMPS_MAXIMUM_LI_MAX ),

   REG_VARIABLE( CFG_BMPS_MODERATE_LI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nBmpsModListenInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BMPS_MODERATE_LI_DEFAULT,
                 CFG_BMPS_MODERATE_LI_MIN,
                 CFG_BMPS_MODERATE_LI_MAX ),

   REG_VARIABLE( CFG_ENABLE_AUTO_BMPS_TIMER_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsAutoBmpsTimerEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_AUTO_BMPS_TIMER_DEFAULT,
                 CFG_ENABLE_AUTO_BMPS_TIMER_MIN,
                 CFG_ENABLE_AUTO_BMPS_TIMER_MAX ),

   REG_VARIABLE( CFG_AUTO_BMPS_TIMER_VALUE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nAutoBmpsTimerValue,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AUTO_BMPS_TIMER_VALUE_DEFAULT,
                 CFG_AUTO_BMPS_TIMER_VALUE_MIN,
                 CFG_AUTO_BMPS_TIMER_VALUE_MAX ),

   REG_VARIABLE( CFG_DOT11_MODE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dot11Mode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_DOT11_MODE_DEFAULT,
                 CFG_DOT11_MODE_MIN,
                 CFG_DOT11_MODE_MAX ),

   REG_VARIABLE( CFG_CHANNEL_BONDING_MODE_24GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nChannelBondingMode24GHz,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_CHANNEL_BONDING_MODE_DEFAULT,
                 CFG_CHANNEL_BONDING_MODE_MIN,
                 CFG_CHANNEL_BONDING_MODE_MAX),

   REG_VARIABLE(CFG_OVERRIDE_HT40_20_24GHZ_NAME, WLAN_PARAM_Integer,
                hdd_config_t, override_ht20_40_24g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_OVERRIDE_HT40_20_24GHZ_DEFAULT,
                CFG_OVERRIDE_HT40_20_24GHZ_MIN,
                CFG_OVERRIDE_HT40_20_24GHZ_MAX),

   REG_VARIABLE( CFG_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nChannelBondingMode5GHz,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_CHANNEL_BONDING_MODE_DEFAULT,
                 CFG_CHANNEL_BONDING_MODE_MIN,
                 CFG_CHANNEL_BONDING_MODE_MAX),

   REG_VARIABLE( CFG_MAX_RX_AMPDU_FACTOR_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, MaxRxAmpduFactor,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_MAX_RX_AMPDU_FACTOR_DEFAULT,
                 CFG_MAX_RX_AMPDU_FACTOR_MIN,
                 CFG_MAX_RX_AMPDU_FACTOR_MAX),

   REG_VARIABLE(CFG_HT_MPDU_DENSITY_NAME, WLAN_PARAM_Integer,
                hdd_config_t, ht_mpdu_density,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                CFG_HT_MPDU_DENSITY_DEFAULT,
                CFG_HT_MPDU_DENSITY_MIN,
                CFG_HT_MPDU_DENSITY_MAX),

   REG_VARIABLE( CFG_FIXED_RATE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, TxRate,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_FIXED_RATE_DEFAULT,
                 CFG_FIXED_RATE_MIN,
                 CFG_FIXED_RATE_MAX ),

   REG_VARIABLE( CFG_SHORT_GI_20MHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ShortGI20MhzEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SHORT_GI_20MHZ_DEFAULT,
                 CFG_SHORT_GI_20MHZ_MIN,
                 CFG_SHORT_GI_20MHZ_MAX ),

   REG_VARIABLE( CFG_BLOCK_ACK_AUTO_SETUP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, BlockAckAutoSetup,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_BLOCK_ACK_AUTO_SETUP_DEFAULT,
                 CFG_BLOCK_ACK_AUTO_SETUP_MIN,
                 CFG_BLOCK_ACK_AUTO_SETUP_MAX ),

   REG_VARIABLE( CFG_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ScanResultAgeCount,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SCAN_RESULT_AGE_COUNT_DEFAULT,
                 CFG_SCAN_RESULT_AGE_COUNT_MIN,
                 CFG_SCAN_RESULT_AGE_COUNT_MAX ),

   REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_NCNPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nScanAgeTimeNCNPS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SCAN_RESULT_AGE_TIME_NCNPS_DEFAULT,
                 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MIN,
                 CFG_SCAN_RESULT_AGE_TIME_NCNPS_MAX ),

   REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_NCPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nScanAgeTimeNCPS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SCAN_RESULT_AGE_TIME_NCPS_DEFAULT,
                 CFG_SCAN_RESULT_AGE_TIME_NCPS_MIN,
                 CFG_SCAN_RESULT_AGE_TIME_NCPS_MAX ),

   REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_CNPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nScanAgeTimeCNPS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SCAN_RESULT_AGE_TIME_CNPS_DEFAULT,
                 CFG_SCAN_RESULT_AGE_TIME_CNPS_MIN,
                 CFG_SCAN_RESULT_AGE_TIME_CNPS_MAX ),

   REG_VARIABLE( CFG_SCAN_RESULT_AGE_TIME_CPS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nScanAgeTimeCPS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SCAN_RESULT_AGE_TIME_CPS_DEFAULT,
                 CFG_SCAN_RESULT_AGE_TIME_CPS_MIN,
                 CFG_SCAN_RESULT_AGE_TIME_CPS_MAX ),

   REG_VARIABLE( CFG_RSSI_CATEGORY_GAP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nRssiCatGap,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RSSI_CATEGORY_GAP_DEFAULT,
                 CFG_RSSI_CATEGORY_GAP_MIN,
                 CFG_RSSI_CATEGORY_GAP_MAX ),

   REG_VARIABLE( CFG_SHORT_PREAMBLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsShortPreamble,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SHORT_PREAMBLE_DEFAULT,
                 CFG_SHORT_PREAMBLE_MIN,
                 CFG_SHORT_PREAMBLE_MAX ),

   REG_VARIABLE_STRING( CFG_IBSS_BSSID_NAME, WLAN_PARAM_MacAddr,
                        hdd_config_t, IbssBssid,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_IBSS_BSSID_DEFAULT ),

   REG_VARIABLE_STRING( CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
                        hdd_config_t, intfMacAddr[0],
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_INTF0_MAC_ADDR_DEFAULT ),

   REG_VARIABLE_STRING( CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
                        hdd_config_t, intfMacAddr[1],
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_INTF1_MAC_ADDR_DEFAULT ),

   REG_VARIABLE_STRING( CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
                        hdd_config_t, intfMacAddr[2],
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_INTF2_MAC_ADDR_DEFAULT ),

   REG_VARIABLE_STRING( CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
                        hdd_config_t, intfMacAddr[3],
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_INTF3_MAC_ADDR_DEFAULT ),

   REG_VARIABLE( CFG_AP_QOS_UAPSD_MODE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, apUapsdEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_QOS_UAPSD_MODE_DEFAULT,
                 CFG_AP_QOS_UAPSD_MODE_MIN,
                 CFG_AP_QOS_UAPSD_MODE_MAX ),

   REG_VARIABLE_STRING( CFG_AP_COUNTRY_CODE, WLAN_PARAM_String,
                        hdd_config_t, apCntryCode,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_AP_COUNTRY_CODE_DEFAULT ),

   REG_VARIABLE( CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apRandomBssidEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_ENABLE_RANDOM_BSSID_DEFAULT,
                 CFG_AP_ENABLE_RANDOM_BSSID_MIN,
                 CFG_AP_ENABLE_RANDOM_BSSID_MAX ),

   REG_VARIABLE( CFG_AP_ENABLE_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apProtEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_ENABLE_PROTECTION_MODE_DEFAULT,
                 CFG_AP_ENABLE_PROTECTION_MODE_MIN,
                 CFG_AP_ENABLE_PROTECTION_MODE_MAX ),

   REG_VARIABLE( CFG_AP_PROTECTION_MODE_NAME, WLAN_PARAM_HexInteger,
                 hdd_config_t, apProtection,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_PROTECTION_MODE_DEFAULT,
                 CFG_AP_PROTECTION_MODE_MIN,
                  CFG_AP_PROTECTION_MODE_MAX ),

   REG_VARIABLE( CFG_AP_OBSS_PROTECTION_MODE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apOBSSProtEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_OBSS_PROTECTION_MODE_DEFAULT,
                 CFG_AP_OBSS_PROTECTION_MODE_MIN,
                 CFG_AP_OBSS_PROTECTION_MODE_MAX ),

   REG_VARIABLE( CFG_AP_STA_SECURITY_SEPERATION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apDisableIntraBssFwd,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_STA_SECURITY_SEPERATION_DEFAULT,
                 CFG_AP_STA_SECURITY_SEPERATION_MIN,
                 CFG_AP_STA_SECURITY_SEPERATION_MAX ),

   REG_VARIABLE( CFG_FRAMES_PROCESSING_TH_MODE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, MinFramesProcThres,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FRAMES_PROCESSING_TH_DEFAULT,
                 CFG_FRAMES_PROCESSING_TH_MIN,
                 CFG_FRAMES_PROCESSING_TH_MAX ),

   REG_VARIABLE(CFG_FORCE_SAP_ACS, WLAN_PARAM_Integer,
                 hdd_config_t, force_sap_acs,
                 VAR_FLAGS_DYNAMIC_CFG |
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FORCE_SAP_ACS_DEFAULT,
                 CFG_FORCE_SAP_ACS_MIN,
                 CFG_FORCE_SAP_ACS_MAX),

   REG_VARIABLE(CFG_FORCE_SAP_ACS_START_CH, WLAN_PARAM_Integer,
                 hdd_config_t, force_sap_acs_st_ch,
                 VAR_FLAGS_DYNAMIC_CFG |
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FORCE_SAP_ACS_START_CH_DEFAULT,
                 CFG_FORCE_SAP_ACS_START_CH_MIN,
                 CFG_FORCE_SAP_ACS_START_CH_MAX),

   REG_VARIABLE(CFG_FORCE_SAP_ACS_END_CH, WLAN_PARAM_Integer,
                 hdd_config_t, force_sap_acs_end_ch,
                 VAR_FLAGS_DYNAMIC_CFG |
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FORCE_SAP_ACS_END_CH_DEFAULT,
                 CFG_FORCE_SAP_ACS_END_CH_MIN,
                 CFG_FORCE_SAP_ACS_END_CH_MAX),


   REG_VARIABLE( CFG_ENABLE_LTE_COEX , WLAN_PARAM_Integer,
                 hdd_config_t, enableLTECoex,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_LTE_COEX_DEFAULT,
                 CFG_ENABLE_LTE_COEX_MIN,
                 CFG_ENABLE_LTE_COEX_MAX ),

   REG_VARIABLE( CFG_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apKeepAlivePeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_KEEP_ALIVE_PERIOD_DEFAULT,
                 CFG_AP_KEEP_ALIVE_PERIOD_MIN,
                 CFG_AP_KEEP_ALIVE_PERIOD_MAX),

   REG_VARIABLE( CFG_GO_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, goKeepAlivePeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_GO_KEEP_ALIVE_PERIOD_DEFAULT,
                 CFG_GO_KEEP_ALIVE_PERIOD_MIN,
                 CFG_GO_KEEP_ALIVE_PERIOD_MAX),

   REG_VARIABLE( CFG_AP_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, apLinkMonitorPeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_LINK_MONITOR_PERIOD_DEFAULT,
                 CFG_AP_LINK_MONITOR_PERIOD_MIN,
                 CFG_AP_LINK_MONITOR_PERIOD_MAX),

   REG_VARIABLE( CFG_GO_LINK_MONITOR_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, goLinkMonitorPeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_GO_LINK_MONITOR_PERIOD_DEFAULT,
                 CFG_GO_LINK_MONITOR_PERIOD_MIN,
                 CFG_GO_LINK_MONITOR_PERIOD_MAX),

   REG_VARIABLE( CFG_DISABLE_PACKET_FILTER , WLAN_PARAM_Integer,
                 hdd_config_t, disablePacketFilter,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_PACKET_FILTER_DEFAULT,
                 CFG_DISABLE_PACKET_FILTER_MIN,
                 CFG_DISABLE_PACKET_FILTER_MAX ),

   REG_VARIABLE( CFG_BEACON_INTERVAL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nBeaconInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_BEACON_INTERVAL_DEFAULT,
                 CFG_BEACON_INTERVAL_MIN,
                 CFG_BEACON_INTERVAL_MAX ),

   REG_VARIABLE( CFG_ENABLE_IDLE_SCAN_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, nEnableIdleScan,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_IDLE_SCAN_DEFAULT,
                 CFG_ENABLE_IDLE_SCAN_MIN,
                 CFG_ENABLE_IDLE_SCAN_MAX ),

   REG_VARIABLE( CFG_ROAMING_TIME_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, nRoamingTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ROAMING_TIME_DEFAULT,
                 CFG_ROAMING_TIME_MIN,
                 CFG_ROAMING_TIME_MAX ),

   REG_VARIABLE( CFG_VCC_RSSI_TRIGGER_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, nVccRssiTrigger,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VCC_RSSI_TRIGGER_DEFAULT,
                 CFG_VCC_RSSI_TRIGGER_MIN,
                 CFG_VCC_RSSI_TRIGGER_MAX ),

   REG_VARIABLE( CFG_VCC_UL_MAC_LOSS_THRESH_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, nVccUlMacLossThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VCC_UL_MAC_LOSS_THRESH_DEFAULT,
                 CFG_VCC_UL_MAC_LOSS_THRESH_MIN,
                 CFG_VCC_UL_MAC_LOSS_THRESH_MAX ),

   REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nPassiveMaxChnTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_MIN,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_MAX ),

   REG_VARIABLE( CFG_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nPassiveMinChnTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_MIN,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_MAX ),

   REG_VARIABLE( CFG_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nActiveMaxChnTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_MIN,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_MAX ),

   REG_VARIABLE( CFG_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nActiveMinChnTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_MIN,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_MAX ),

   REG_VARIABLE( CFG_RETRY_LIMIT_ZERO_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, retryLimitZero,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RETRY_LIMIT_ZERO_DEFAULT,
                 CFG_RETRY_LIMIT_ZERO_MIN,
                 CFG_RETRY_LIMIT_ZERO_MAX ),

   REG_VARIABLE( CFG_RETRY_LIMIT_ONE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, retryLimitOne,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RETRY_LIMIT_ONE_DEFAULT,
                 CFG_RETRY_LIMIT_ONE_MIN,
                 CFG_RETRY_LIMIT_ONE_MAX ),

   REG_VARIABLE( CFG_RETRY_LIMIT_TWO_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, retryLimitTwo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RETRY_LIMIT_TWO_DEFAULT,
                 CFG_RETRY_LIMIT_TWO_MIN,
                 CFG_RETRY_LIMIT_TWO_MAX ),

   REG_VARIABLE( CFG_DISABLE_AGG_WITH_BTC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, disableAggWithBtc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_AGG_WITH_BTC_DEFAULT,
                 CFG_DISABLE_AGG_WITH_BTC_MIN,
                 CFG_DISABLE_AGG_WITH_BTC_MAX ),

#ifdef WLAN_AP_STA_CONCURRENCY
   REG_VARIABLE( CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nPassiveMaxChnTimeConc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MIN,
                 CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_MAX ),

   REG_VARIABLE( CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nPassiveMinChnTimeConc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MIN,
                 CFG_PASSIVE_MIN_CHANNEL_TIME_CONC_MAX ),

   REG_VARIABLE( CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nActiveMaxChnTimeConc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_DEFAULT,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MIN,
                 CFG_ACTIVE_MAX_CHANNEL_TIME_CONC_MAX ),

   REG_VARIABLE( CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nActiveMinChnTimeConc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_DEFAULT,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MIN,
                 CFG_ACTIVE_MIN_CHANNEL_TIME_CONC_MAX ),

   REG_VARIABLE( CFG_REST_TIME_CONC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nRestTimeConc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_REST_TIME_CONC_DEFAULT,
                 CFG_REST_TIME_CONC_MIN,
                 CFG_REST_TIME_CONC_MAX ),

   REG_VARIABLE( CFG_MIN_REST_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, min_rest_time_conc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MIN_REST_TIME_DEFAULT,
                 CFG_MIN_REST_TIME_MIN,
                 CFG_MIN_REST_TIME_MAX ),

   REG_VARIABLE( CFG_IDLE_TIME_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, idle_time_conc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IDLE_TIME_DEFAULT,
                 CFG_IDLE_TIME_MIN,
                 CFG_IDLE_TIME_MAX ),
#endif

   REG_VARIABLE( CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nMaxPsPoll,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_PS_POLL_DEFAULT,
                 CFG_MAX_PS_POLL_MIN,
                 CFG_MAX_PS_POLL_MAX ),

    REG_VARIABLE( CFG_MAX_TX_POWER_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nTxPowerCap,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_TX_POWER_DEFAULT,
                 CFG_MAX_TX_POWER_MIN,
                 CFG_MAX_TX_POWER_MAX ),

   REG_VARIABLE( CFG_TX_POWER_CTRL_NAME, WLAN_PARAM_Integer,
                hdd_config_t, allow_tpc_from_ap,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_POWER_CTRL_DEFAULT,
                CFG_TX_POWER_CTRL_MIN,
                CFG_TX_POWER_CTRL_MAX ),

   REG_VARIABLE( CFG_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIsLowGainOverride,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LOW_GAIN_OVERRIDE_DEFAULT,
                 CFG_LOW_GAIN_OVERRIDE_MIN,
                 CFG_LOW_GAIN_OVERRIDE_MAX ),

   REG_VARIABLE( CFG_RSSI_FILTER_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nRssiFilterPeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RSSI_FILTER_PERIOD_DEFAULT,
                 CFG_RSSI_FILTER_PERIOD_MIN,
                 CFG_RSSI_FILTER_PERIOD_MAX ),

   REG_VARIABLE( CFG_IGNORE_DTIM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fIgnoreDtim,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IGNORE_DTIM_DEFAULT,
                 CFG_IGNORE_DTIM_MIN,
                 CFG_IGNORE_DTIM_MAX ),

   REG_VARIABLE( CFG_MAX_LI_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fMaxLIModulatedDTIM,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_LI_MODULATED_DTIM_DEFAULT,
                 CFG_MAX_LI_MODULATED_DTIM_MIN,
                 CFG_MAX_LI_MODULATED_DTIM_MAX ),

   REG_VARIABLE( CFG_RX_ANT_CONFIGURATION_NAME, WLAN_PARAM_Integer,
                hdd_config_t, nRxAnt,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_RX_ANT_CONFIGURATION_NAME_DEFAULT,
                CFG_RX_ANT_CONFIGURATION_NAME_MIN,
                CFG_RX_ANT_CONFIGURATION_NAME_MAX ),

   REG_VARIABLE( CFG_FW_HEART_BEAT_MONITORING_NAME, WLAN_PARAM_Integer,
                hdd_config_t, fEnableFwHeartBeatMonitoring,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FW_HEART_BEAT_MONITORING_DEFAULT,
                CFG_FW_HEART_BEAT_MONITORING_MIN,
                CFG_FW_HEART_BEAT_MONITORING_MAX ),

   REG_VARIABLE( CFG_FW_BEACON_FILTERING_NAME, WLAN_PARAM_Integer,
                hdd_config_t, fEnableFwBeaconFiltering,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FW_BEACON_FILTERING_DEFAULT,
                CFG_FW_BEACON_FILTERING_MIN,
                CFG_FW_BEACON_FILTERING_MAX ),

   REG_DYNAMIC_VARIABLE( CFG_FW_RSSI_MONITORING_NAME, WLAN_PARAM_Integer,
                hdd_config_t, fEnableFwRssiMonitoring,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FW_RSSI_MONITORING_DEFAULT,
                CFG_FW_RSSI_MONITORING_MIN,
                CFG_FW_RSSI_MONITORING_MAX,
                cbNotifySetFwRssiMonitoring, 0 ),

   REG_VARIABLE(CFG_FW_MCC_RTS_CTS_PROT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, mcc_rts_cts_prot_enable,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FW_MCC_RTS_CTS_PROT_DEFAULT,
                CFG_FW_MCC_RTS_CTS_PROT_MIN,
                CFG_FW_MCC_RTS_CTS_PROT_MAX),

   REG_VARIABLE(CFG_FW_MCC_BCAST_PROB_RESP_NAME, WLAN_PARAM_Integer,
                hdd_config_t, mcc_bcast_prob_resp_enable,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FW_MCC_BCAST_PROB_RESP_DEFAULT,
                CFG_FW_MCC_BCAST_PROB_RESP_MIN,
                CFG_FW_MCC_BCAST_PROB_RESP_MAX),

   REG_VARIABLE( CFG_DATA_INACTIVITY_TIMEOUT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, nDataInactivityTimeout,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DATA_INACTIVITY_TIMEOUT_DEFAULT,
                CFG_DATA_INACTIVITY_TIMEOUT_MIN,
                CFG_DATA_INACTIVITY_TIMEOUT_MAX ),

   REG_VARIABLE( CFG_NTH_BEACON_FILTER_NAME, WLAN_PARAM_Integer,
                hdd_config_t, nthBeaconFilter,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_NTH_BEACON_FILTER_DEFAULT,
                CFG_NTH_BEACON_FILTER_MIN,
                CFG_NTH_BEACON_FILTER_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_MODE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, WmmMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_MODE_DEFAULT,
                 CFG_QOS_WMM_MODE_MIN,
                 CFG_QOS_WMM_MODE_MAX ),

   REG_VARIABLE( CFG_STA_LOCAL_EDCA_FOR_ETSI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, gStaLocalEDCAEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_STA_LOCAL_EDCA_FOR_ETSI_DEFAULT,
                 CFG_STA_LOCAL_EDCA_FOR_ETSI_MIN,
                 CFG_STA_LOCAL_EDCA_FOR_ETSI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_80211E_ENABLED_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, b80211eIsEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_80211E_ENABLED_DEFAULT,
                 CFG_QOS_WMM_80211E_ENABLED_MIN,
                 CFG_QOS_WMM_80211E_ENABLED_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, UapsdMask,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_UAPSD_MASK_DEFAULT,
                 CFG_QOS_WMM_UAPSD_MASK_MIN,
                 CFG_QOS_WMM_UAPSD_MASK_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdVoSrvIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SRV_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdVoSuspIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_VO_SUS_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdViSrvIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SRV_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdViSuspIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_VI_SUS_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdBeSrvIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SRV_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdBeSuspIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_BE_SUS_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdBkSrvIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SRV_INTV_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraUapsdBkSuspIntv,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_DEFAULT,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MIN,
                 CFG_QOS_WMM_INFRA_UAPSD_BK_SUS_INTV_MAX ),

#ifdef FEATURE_WLAN_ESE
   REG_VARIABLE( CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, InfraInactivityInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
                 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
                 CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),

   REG_DYNAMIC_VARIABLE( CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, isEseIniFeatureEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ESE_FEATURE_ENABLED_DEFAULT,
                         CFG_ESE_FEATURE_ENABLED_MIN,
                         CFG_ESE_FEATURE_ENABLED_MAX,
                         cbNotifySetEseFeatureEnabled, 0 ),
#endif // FEATURE_WLAN_ESE

#ifdef FEATURE_WLAN_LFR
   // flag to turn ON/OFF Legacy Fast Roaming
   REG_DYNAMIC_VARIABLE( CFG_LFR_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, isFastRoamIniFeatureEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_LFR_FEATURE_ENABLED_DEFAULT,
                         CFG_LFR_FEATURE_ENABLED_MIN,
                         CFG_LFR_FEATURE_ENABLED_MAX,
                         NotifyIsFastRoamIniFeatureEnabled, 0 ),

   /* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */
   REG_DYNAMIC_VARIABLE( CFG_LFR_MAWC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, MAWCEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_LFR_MAWC_FEATURE_ENABLED_DEFAULT,
                         CFG_LFR_MAWC_FEATURE_ENABLED_MIN,
                         CFG_LFR_MAWC_FEATURE_ENABLED_MAX,
                         NotifyIsMAWCIniFeatureEnabled, 0 ),

#endif // FEATURE_WLAN_LFR

#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
   // flag to turn ON/OFF 11r and ESE FastTransition
   REG_DYNAMIC_VARIABLE( CFG_FAST_TRANSITION_ENABLED_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, isFastTransitionEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_FAST_TRANSITION_ENABLED_NAME_DEFAULT,
                         CFG_FAST_TRANSITION_ENABLED_NAME_MIN,
                         CFG_FAST_TRANSITION_ENABLED_NAME_MAX,
                         cbNotifySetFastTransitionEnabled, 0 ),

   /* Variable to specify the delta/difference between the RSSI of current AP
    * and roamable AP while roaming */
   REG_DYNAMIC_VARIABLE( CFG_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, RoamRssiDiff,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_RSSI_DIFF_DEFAULT,
                         CFG_ROAM_RSSI_DIFF_MIN,
                         CFG_ROAM_RSSI_DIFF_MAX,
                         cbNotifySetRoamRssiDiff, 0),

   REG_DYNAMIC_VARIABLE( CFG_IMMEDIATE_ROAM_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nImmediateRoamRssiDiff,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_IMMEDIATE_ROAM_RSSI_DIFF_DEFAULT,
                         CFG_IMMEDIATE_ROAM_RSSI_DIFF_MIN,
                         CFG_IMMEDIATE_ROAM_RSSI_DIFF_MAX,
                         cbNotifySetImmediateRoamRssiDiff, 0),

   REG_DYNAMIC_VARIABLE( CFG_ENABLE_WES_MODE_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, isWESModeEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ENABLE_WES_MODE_NAME_DEFAULT,
                         CFG_ENABLE_WES_MODE_NAME_MIN,
                         CFG_ENABLE_WES_MODE_NAME_MAX,
                         cbNotifySetWESMode, 0),
#endif
#ifdef FEATURE_WLAN_OKC
   REG_DYNAMIC_VARIABLE( CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, isOkcIniFeatureEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_OKC_FEATURE_ENABLED_DEFAULT,
                         CFG_OKC_FEATURE_ENABLED_MIN,
                         CFG_OKC_FEATURE_ENABLED_MAX,
                         cbNotifySetOkcFeatureEnabled, 0 ),
#endif
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
   REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer,
                         hdd_config_t, isRoamOffloadScanEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_SCAN_OFFLOAD_ENABLED_DEFAULT,
                         CFG_ROAM_SCAN_OFFLOAD_ENABLED_MIN,
                         CFG_ROAM_SCAN_OFFLOAD_ENABLED_MAX,
                         cbNotifyUpdateRoamScanOffloadEnabled, 0),
#endif
   REG_VARIABLE( CFG_QOS_WMM_PKT_CLASSIFY_BASIS_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, PktClassificationBasis,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_DEFAULT,
                 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MIN,
                 CFG_QOS_WMM_PKT_CLASSIFY_BASIS_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VO_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraDirAcVo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_VO_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_VO_MIN,
                 CFG_QOS_WMM_INFRA_DIR_AC_VO_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraNomMsduSizeAcVo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MIN,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VO_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMeanDataRateAcVo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MIN,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VO_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMinPhyRateAcVo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MIN,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VO_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VO_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraSbaAcVo,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_VO_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_VO_MIN,
                 CFG_QOS_WMM_INFRA_SBA_AC_VO_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_VI_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraDirAcVi,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_VI_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_VI_MIN,
                 CFG_QOS_WMM_INFRA_DIR_AC_VI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraNomMsduSizeAcVi,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MIN,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_VI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMeanDataRateAcVi,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MIN,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_VI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMinPhyRateAcVi,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MIN,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_VI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_VI_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraSbaAcVi,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_VI_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_VI_MIN,
                 CFG_QOS_WMM_INFRA_SBA_AC_VI_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraDirAcBe,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_BE_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_BE_MIN,
                 CFG_QOS_WMM_INFRA_DIR_AC_BE_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraNomMsduSizeAcBe,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MIN,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BE_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMeanDataRateAcBe,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MIN,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BE_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMinPhyRateAcBe,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MIN,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BE_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BE_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraSbaAcBe,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_BE_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_BE_MIN,
                 CFG_QOS_WMM_INFRA_SBA_AC_BE_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_DIR_AC_BK_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, InfraDirAcBk,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_BK_DEFAULT,
                 CFG_QOS_WMM_INFRA_DIR_AC_BK_MIN,
                 CFG_QOS_WMM_INFRA_DIR_AC_BK_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraNomMsduSizeAcBk,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_DEFAULT,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MIN,
                 CFG_QOS_WMM_INFRA_NOM_MSDU_SIZE_AC_BK_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMeanDataRateAcBk,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_DEFAULT,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MIN,
                 CFG_QOS_WMM_INFRA_MEAN_DATA_RATE_AC_BK_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraMinPhyRateAcBk,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_DEFAULT,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MIN,
                 CFG_QOS_WMM_INFRA_MIN_PHY_RATE_AC_BK_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_INFRA_SBA_AC_BK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, InfraSbaAcBk,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_BK_DEFAULT,
                 CFG_QOS_WMM_INFRA_SBA_AC_BK_MIN,
                 CFG_QOS_WMM_INFRA_SBA_AC_BK_MAX ),

   REG_VARIABLE( CFG_TL_DELAYED_TRGR_FRM_INT_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, DelayedTriggerFrmInt,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
                 CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
                 CFG_TL_DELAYED_TRGR_FRM_INT_MAX ),

   REG_VARIABLE_STRING( CFG_WOWL_PATTERN_NAME, WLAN_PARAM_String,
                        hdd_config_t, wowlPattern,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_WOWL_PATTERN_DEFAULT ),

   REG_VARIABLE( CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, bImplicitQosEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT,
                 CFG_QOS_IMPLICIT_SETUP_ENABLED_MIN,
                 CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX ),

   REG_VARIABLE( CFG_BTC_EXECUTION_MODE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, btcExecutionMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BTC_EXECUTION_MODE_DEFAULT,
                 CFG_BTC_EXECUTION_MODE_MIN,
                 CFG_BTC_EXECUTION_MODE_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG1_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[0],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG2_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[1],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG3_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[2],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG4_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[3],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG5_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[4],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_MWS_COEX_CONFIG6_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, mwsCoexConfig[5],
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_DEFAULT,
                 CFG_MWS_COEX_CONFIGX_MIN,
                 CFG_MWS_COEX_CONFIGX_MAX ),

   REG_VARIABLE( CFG_AP_LISTEN_MODE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, nEnableListenMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_LISTEN_MODE_DEFAULT,
                 CFG_AP_LISTEN_MODE_MIN,
                 CFG_AP_LISTEN_MODE_MAX ),

   REG_VARIABLE( CFG_AP_AUTO_SHUT_OFF , WLAN_PARAM_Integer,
                 hdd_config_t, nAPAutoShutOff,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AP_AUTO_SHUT_OFF_DEFAULT,
                 CFG_AP_AUTO_SHUT_OFF_MIN,
                 CFG_AP_AUTO_SHUT_OFF_MAX ),

#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
   REG_VARIABLE( CFG_WLAN_MCC_TO_SCC_SWITCH_MODE , WLAN_PARAM_Integer,
                 hdd_config_t, WlanMccToSccSwitchMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_DEFAULT,
                 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MIN,
                 CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MAX ),

   REG_VARIABLE( CFG_WLAN_BAND_SWITCH_ENABLE , WLAN_PARAM_Integer,
                 hdd_config_t, wlan_band_switch_enable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WLAN_BAND_SWITCH_ENABLE_DEFAULT,
                 CFG_WLAN_BAND_SWITCH_ENABLE_MIN,
                 CFG_WLAN_BAND_SWITCH_ENABLE_MAX ),

   REG_VARIABLE( CFG_WLAN_AP_P2PGO_CONC_ENABLE , WLAN_PARAM_Integer,
                 hdd_config_t, wlan_ap_p2pgo_conc_enable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WLAN_AP_P2PGO_CONC_ENABLE_DEFAULT,
                 CFG_WLAN_AP_P2PGO_CONC_ENABLE_MIN,
                 CFG_WLAN_AP_P2PGO_CONC_ENABLE_MAX ),

   REG_VARIABLE( CFG_WLAN_AP_P2PGC_CONC_ENABLE , WLAN_PARAM_Integer,
                 hdd_config_t, wlan_ap_p2pclient_conc_enable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WLAN_AP_P2PGC_CONC_ENABLE_DEFAULT,
                 CFG_WLAN_AP_P2PGC_CONC_ENABLE_MIN,
                 CFG_WLAN_AP_P2PGC_CONC_ENABLE_MAX ),
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
   REG_VARIABLE( CFG_WLAN_AUTO_SHUTDOWN , WLAN_PARAM_Integer,
                 hdd_config_t, WlanAutoShutdown,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WLAN_AUTO_SHUTDOWN_DEFAULT,
                 CFG_WLAN_AUTO_SHUTDOWN_MIN,
                 CFG_WLAN_AUTO_SHUTDOWN_MAX ),
#endif
#if defined WLAN_FEATURE_VOWIFI
   REG_VARIABLE( CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fRrmEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RRM_ENABLE_DEFAULT,
                 CFG_RRM_ENABLE_MIN,
                 CFG_RRM_ENABLE_MAX ),

   REG_VARIABLE( CFG_RRM_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nInChanMeasMaxDuration,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RRM_OPERATING_CHAN_MAX_DURATION_DEFAULT,
                 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MIN,
                 CFG_RRM_OPERATING_CHAN_MAX_DURATION_MAX ),

   REG_VARIABLE( CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nOutChanMeasMaxDuration,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_DEFAULT,
                 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MIN,
                 CFG_RRM_NON_OPERATING_CHAN_MAX_DURATION_MAX ),

   REG_VARIABLE( CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nRrmRandnIntvl,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
                 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
                 CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX ),

   REG_VARIABLE_STRING(CFG_RM_CAPABILITY_NAME, WLAN_PARAM_String,
                hdd_config_t, rm_capability, VAR_FLAGS_OPTIONAL,
                (void *) CFG_RM_CAPABILITY_DEFAULT),
#endif

#ifdef WLAN_FEATURE_VOWIFI_11R
   REG_VARIABLE( CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fFTResourceReqSupported,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_FT_RESOURCE_REQ_DEFAULT,
                 CFG_FT_RESOURCE_REQ_MIN,
                 CFG_FT_RESOURCE_REQ_MAX ),
#endif

#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
   REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_TIMER_PERIOD_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nNeighborScanPeriod,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_TIMER_PERIOD_DEFAULT,
                         CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MIN,
                         CFG_NEIGHBOR_SCAN_TIMER_PERIOD_MAX,
                         cbNotifySetNeighborScanPeriod, 0 ),

   REG_VARIABLE( CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nNeighborReassocRssiThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_DEFAULT,
                 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MIN,
                 CFG_NEIGHBOR_REASSOC_RSSI_THRESHOLD_MAX ),

   REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nNeighborLookupRssiThreshold,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_DEFAULT,
                         CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MIN,
                         CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_MAX,
                         cbNotifySetNeighborLookupRssiThreshold, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nOpportunisticThresholdDiff,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_DEFAULT,
                         CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MIN,
                         CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_MAX,
                          cbNotifySetOpportunisticScanThresholdDiff, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamRescanRssiDiff,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_RESCAN_RSSI_DIFF_DEFAULT,
                         CFG_ROAM_RESCAN_RSSI_DIFF_MIN,
                         CFG_ROAM_RESCAN_RSSI_DIFF_MAX,
                         cbNotifySetRoamRescanRssiDiff, 0 ),

   REG_VARIABLE_STRING( CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
                        hdd_config_t, neighborScanChanList,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT ),

   REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nNeighborScanMinChanTime,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MIN,
                         CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_MAX,
                         cbNotifySetNeighborScanMinChanTime, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nNeighborScanMaxChanTime,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MIN,
                         CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_MAX,
                         cbNotifySetNeighborScanMaxChanTime, 0 ),

   REG_VARIABLE( CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nMaxNeighborReqTries,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_DEFAULT,
                 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MIN,
                 CFG_11R_NEIGHBOR_REQ_MAX_TRIES_MAX),

   REG_DYNAMIC_VARIABLE( CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nNeighborResultsRefreshPeriod,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_DEFAULT,
                         CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MIN,
                         CFG_NEIGHBOR_SCAN_RESULTS_REFRESH_PERIOD_MAX,
                         cbNotifySetNeighborResultsRefreshPeriod, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nEmptyScanRefreshPeriod,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_EMPTY_SCAN_REFRESH_PERIOD_DEFAULT,
                         CFG_EMPTY_SCAN_REFRESH_PERIOD_MIN,
                         CFG_EMPTY_SCAN_REFRESH_PERIOD_MAX,
                         cbNotifySetEmptyScanRefreshPeriod, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamBmissFirstBcnt,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_BMISS_FIRST_BCNT_DEFAULT,
                         CFG_ROAM_BMISS_FIRST_BCNT_MIN,
                         CFG_ROAM_BMISS_FIRST_BCNT_MAX,
                         cbNotifySetRoamBmissFirstBcnt, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamBmissFinalBcnt,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_BMISS_FINAL_BCNT_DEFAULT,
                         CFG_ROAM_BMISS_FINAL_BCNT_MIN,
                         CFG_ROAM_BMISS_FINAL_BCNT_MAX,
                         cbNotifySetRoamBmissFinalBcnt, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_BEACON_RSSI_WEIGHT_NAME, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamBeaconRssiWeight,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_BEACON_RSSI_WEIGHT_DEFAULT,
                         CFG_ROAM_BEACON_RSSI_WEIGHT_MIN,
                         CFG_ROAM_BEACON_RSSI_WEIGHT_MAX,
                         cbNotifySetRoamBeaconRssiWeight, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAMING_DFS_CHANNEL_NAME , WLAN_PARAM_Integer,
                         hdd_config_t, allowDFSChannelRoam,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAMING_DFS_CHANNEL_DEFAULT,
                         CFG_ROAMING_DFS_CHANNEL_MIN,
                         CFG_ROAMING_DFS_CHANNEL_MAX,
                         cbNotifySetDFSScanMode, 0),

   REG_DYNAMIC_VARIABLE( CFG_DELAY_BEFORE_VDEV_STOP_NAME, WLAN_PARAM_Integer,
                      hdd_config_t, delay_before_vdev_stop,
                      VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                      CFG_DELAY_BEFORE_VDEV_STOP_DEFAULT,
                      CFG_DELAY_BEFORE_VDEV_STOP_MIN,
                      CFG_DELAY_BEFORE_VDEV_STOP_MAX,
                      cb_notify_set_delay_before_vdev_stop, 0 ),

   REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_NAME,
                        WLAN_PARAM_Integer,
                        hdd_config_t, nhi_rssi_scan_max_count,
                        VAR_FLAGS_OPTIONAL |
                                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MIN,
                        CFG_ROAM_SCAN_HI_RSSI_MAXCOUNT_MAX,
                        cb_notify_set_roam_scan_hi_rssi_scan_params,
                        eCSR_HI_RSSI_SCAN_MAXCOUNT_ID),

   REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELTA_NAME, WLAN_PARAM_Integer,
                        hdd_config_t, nhi_rssi_scan_rssi_delta,
                        VAR_FLAGS_OPTIONAL |
                                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_DELTA_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_DELTA_MIN,
                        CFG_ROAM_SCAN_HI_RSSI_DELTA_MAX,
                        cb_notify_set_roam_scan_hi_rssi_scan_params,
                        eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID),

   REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_DELAY_NAME, WLAN_PARAM_Integer,
                        hdd_config_t, nhi_rssi_scan_delay,
                        VAR_FLAGS_OPTIONAL |
                                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_DELAY_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_DELAY_MIN,
                        CFG_ROAM_SCAN_HI_RSSI_DELAY_MAX,
                        cb_notify_set_roam_scan_hi_rssi_scan_params,
                        eCSR_HI_RSSI_SCAN_DELAY_ID),

   REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HI_RSSI_UB_NAME,
                        WLAN_PARAM_SignedInteger,
                        hdd_config_t, nhi_rssi_scan_rssi_ub,
                        VAR_FLAGS_OPTIONAL |
                                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_UB_DEFAULT,
                        CFG_ROAM_SCAN_HI_RSSI_UB_MIN,
                        CFG_ROAM_SCAN_HI_RSSI_UB_MAX,
                        cb_notify_set_roam_scan_hi_rssi_scan_params,
                        eCSR_HI_RSSI_SCAN_RSSI_UB_ID),


#endif /* WLAN_FEATURE_NEIGHBOR_ROAMING */

   REG_VARIABLE( CFG_QOS_WMM_BURST_SIZE_DEFN_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, burstSizeDefinition,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
                 CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
                 CFG_QOS_WMM_BURST_SIZE_DEFN_MAX ),

   REG_VARIABLE( CFG_MCAST_BCAST_FILTER_SETTING_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, mcastBcastFilterSetting,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MCAST_BCAST_FILTER_SETTING_DEFAULT,
                 CFG_MCAST_BCAST_FILTER_SETTING_MIN,
                 CFG_MCAST_BCAST_FILTER_SETTING_MAX ),

   REG_VARIABLE( CFG_ENABLE_HOST_ARPOFFLOAD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fhostArpOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_HOST_ARPOFFLOAD_DEFAULT,
                 CFG_ENABLE_HOST_ARPOFFLOAD_MIN,
                 CFG_ENABLE_HOST_ARPOFFLOAD_MAX ),

#ifdef FEATURE_WLAN_RA_FILTERING
   REG_VARIABLE( CFG_RA_FILTER_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IsRArateLimitEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RA_FILTER_ENABLE_DEFAULT,
                 CFG_RA_FILTER_ENABLE_MIN,
                 CFG_RA_FILTER_ENABLE_MAX ),

   REG_VARIABLE( CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, RArateLimitInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RA_RATE_LIMIT_INTERVAL_DEFAULT,
                 CFG_RA_RATE_LIMIT_INTERVAL_MIN,
                 CFG_RA_RATE_LIMIT_INTERVAL_MAX ),
#endif

   REG_VARIABLE( CFG_ENABLE_HOST_SSDP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ssdp,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_HOST_SSDP_DEFAULT,
                 CFG_ENABLE_HOST_SSDP_MIN,
                 CFG_ENABLE_HOST_SSDP_MAX ),

   REG_VARIABLE( CFG_ENABLE_HOST_BROADCAST_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bcastptrn,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_HOST_BROADCAST_DEFAULT,
                 CFG_ENABLE_HOST_BROADCAST_MIN,
                 CFG_ENABLE_HOST_BROADCAST_MAX ),

#ifdef FEATURE_RUNTIME_PM
   REG_VARIABLE( CFG_ENABLE_RUNTIME_PM, WLAN_PARAM_Integer,
                 hdd_config_t, runtime_pm,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_RUNTIME_PM_DEFAULT,
                 CFG_ENABLE_RUNTIME_PM_MIN,
                 CFG_ENABLE_RUNTIME_PM_MAX ),

   REG_VARIABLE( CFG_RUNTIME_PM_AUTO_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, runtime_pm_delay,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RUNTIME_PM_AUTO_DEFAULT,
                 CFG_RUNTIME_PM_AUTO_MIN,
                 CFG_RUNTIME_PM_AUTO_MAX ),
#endif

#ifdef FEATURE_SECURE_FIRMWARE
   REG_VARIABLE(CFG_ENABLE_FW_HASH_CHECK_NAME, WLAN_PARAM_Integer,
                hdd_config_t, enable_fw_hash_check,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_FW_HASH_CHECK_DEFAULT,
                CFG_ENABLE_FW_HASH_CHECK_MIN,
                CFG_ENABLE_FW_HASH_CHECK_MAX),
#endif

   REG_VARIABLE( CFG_ENABLE_HOST_NSOFFLOAD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fhostNSOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_HOST_NSOFFLOAD_DEFAULT,
                 CFG_ENABLE_HOST_NSOFFLOAD_MIN,
                 CFG_ENABLE_HOST_NSOFFLOAD_MAX ),

   REG_VARIABLE( CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, tsInfoAckPolicy,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
                 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
                 CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX ),

    REG_VARIABLE( CFG_SINGLE_TID_RC_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, bSingleTidRc,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_SINGLE_TID_RC_DEFAULT,
                  CFG_SINGLE_TID_RC_MIN,
                  CFG_SINGLE_TID_RC_MAX),

    REG_VARIABLE( CFG_DYNAMIC_PSPOLL_VALUE_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, dynamicPsPollValue,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_DYNAMIC_PSPOLL_VALUE_DEFAULT,
                  CFG_DYNAMIC_PSPOLL_VALUE_MIN,
                  CFG_DYNAMIC_PSPOLL_VALUE_MAX ),

   REG_VARIABLE( CFG_TELE_BCN_WAKEUP_EN_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, teleBcnWakeupEn,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_TELE_BCN_WAKEUP_EN_DEFAULT,
                  CFG_TELE_BCN_WAKEUP_EN_MIN,
                  CFG_TELE_BCN_WAKEUP_EN_MAX ),

    REG_VARIABLE( CFG_INFRA_STA_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, infraStaKeepAlivePeriod,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_INFRA_STA_KEEP_ALIVE_PERIOD_DEFAULT,
                  CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MIN,
                  CFG_INFRA_STA_KEEP_ALIVE_PERIOD_MAX),

    REG_VARIABLE( CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME , WLAN_PARAM_Integer,
                  hdd_config_t, AddTSWhenACMIsOff,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
                  CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
                  CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX ),


    REG_VARIABLE( CFG_VALIDATE_SCAN_LIST_NAME , WLAN_PARAM_Integer,
                  hdd_config_t, fValidateScanList,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_VALIDATE_SCAN_LIST_DEFAULT,
                  CFG_VALIDATE_SCAN_LIST_MIN,
                  CFG_VALIDATE_SCAN_LIST_MAX ),

    REG_VARIABLE( CFG_NULLDATA_AP_RESP_TIMEOUT_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, nNullDataApRespTimeout,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_NULLDATA_AP_RESP_TIMEOUT_DEFAULT,
                  CFG_NULLDATA_AP_RESP_TIMEOUT_MIN,
                  CFG_NULLDATA_AP_RESP_TIMEOUT_MAX ),

    REG_VARIABLE( CFG_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, apDataAvailPollPeriodInMs,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_AP_DATA_AVAIL_POLL_PERIOD_DEFAULT,
                  CFG_AP_DATA_AVAIL_POLL_PERIOD_MIN,
                  CFG_AP_DATA_AVAIL_POLL_PERIOD_MAX ),

   REG_VARIABLE( CFG_BAND_CAPABILITY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nBandCapability,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAND_CAPABILITY_DEFAULT,
                 CFG_BAND_CAPABILITY_MIN,
                 CFG_BAND_CAPABILITY_MAX ),

   REG_VARIABLE( CFG_ENABLE_BEACON_EARLY_TERMINATION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableBeaconEarlyTermination,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_BEACON_EARLY_TERMINATION_DEFAULT,
                 CFG_ENABLE_BEACON_EARLY_TERMINATION_MIN,
                 CFG_ENABLE_BEACON_EARLY_TERMINATION_MAX ),

/* CFG_VOS_TRACE_ENABLE Parameters */
   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_TL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableTL,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableWDI,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHDD,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableSME,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnablePE,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_PMC_NAME,  WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnablePMC,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_WDA_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableWDA,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableSYS,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_VOSS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableVOSS,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableSAP,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE( CFG_VOS_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHDDSAP,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX ),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_CFG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableCFG,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_ADF_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableADF,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_TXRX_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableTXRX,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_HTC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHTC,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_HIF_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHIF,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_HDD_SAP_DATA_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHDDSAPDATA,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE(CFG_VOS_TRACE_ENABLE_HDD_DATA_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vosTraceEnableHDDDATA,
                 VAR_FLAGS_OPTIONAL,
                 CFG_VOS_TRACE_ENABLE_DEFAULT,
                 CFG_VOS_TRACE_ENABLE_MIN,
                 CFG_VOS_TRACE_ENABLE_MAX),

   REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nTeleBcnTransListenInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TELE_BCN_TRANS_LI_DEFAULT,
                 CFG_TELE_BCN_TRANS_LI_MIN,
                 CFG_TELE_BCN_TRANS_LI_MAX ),

   REG_VARIABLE( CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nTeleBcnTransLiNumIdleBeacons,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_DEFAULT,
                 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MIN,
                 CFG_TELE_BCN_TRANS_LI_NUM_IDLE_BCNS_MAX ),

   REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nTeleBcnMaxListenInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TELE_BCN_MAX_LI_DEFAULT,
                 CFG_TELE_BCN_MAX_LI_MIN,
                 CFG_TELE_BCN_MAX_LI_MAX ),

   REG_VARIABLE( CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nTeleBcnMaxLiNumIdleBeacons,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_DEFAULT,
                 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MIN,
                 CFG_TELE_BCN_MAX_LI_NUM_IDLE_BCNS_MAX ),

   REG_VARIABLE( CFG_BCN_EARLY_TERM_WAKE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bcnEarlyTermWakeInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BCN_EARLY_TERM_WAKE_DEFAULT,
                 CFG_BCN_EARLY_TERM_WAKE_MIN,
                 CFG_BCN_EARLY_TERM_WAKE_MAX ),

   REG_VARIABLE( CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableBypass11d,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_BYPASS_11D_DEFAULT,
                 CFG_ENABLE_BYPASS_11D_MIN,
                 CFG_ENABLE_BYPASS_11D_MAX ),

   REG_VARIABLE( CFG_ENABLE_DFS_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableDFSChnlScan,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT,
                 CFG_ENABLE_DFS_CHNL_SCAN_MIN,
                 CFG_ENABLE_DFS_CHNL_SCAN_MAX ),

   REG_VARIABLE( CFG_ENABLE_DFS_PNO_CHNL_SCAN_NAME, WLAN_PARAM_Integer,
              hdd_config_t, enable_dfs_pno_chnl_scan,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_DFS_PNO_CHNL_SCAN_DEFAULT,
              CFG_ENABLE_DFS_PNO_CHNL_SCAN_MIN,
              CFG_ENABLE_DFS_PNO_CHNL_SCAN_MAX ),

   REG_VARIABLE( CFG_ENABLE_DYNAMIC_DTIM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableDynamicDTIM,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_DYNAMIC_DTIM_DEFAULT,
                 CFG_ENABLE_DYNAMIC_DTIM_MIN,
                 CFG_ENABLE_DYNAMIC_DTIM_MAX ),

   REG_VARIABLE( CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ShortGI40MhzEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SHORT_GI_40MHZ_DEFAULT,
                 CFG_SHORT_GI_40MHZ_MIN,
                 CFG_SHORT_GI_40MHZ_MAX ),

   REG_DYNAMIC_VARIABLE( CFG_REPORT_MAX_LINK_SPEED, WLAN_PARAM_Integer,
                         hdd_config_t, reportMaxLinkSpeed,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_REPORT_MAX_LINK_SPEED_DEFAULT,
                         CFG_REPORT_MAX_LINK_SPEED_MIN,
                         CFG_REPORT_MAX_LINK_SPEED_MAX,
                         NULL, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_HIGH, WLAN_PARAM_SignedInteger,
                         hdd_config_t, linkSpeedRssiHigh,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_LINK_SPEED_RSSI_HIGH_DEFAULT,
                         CFG_LINK_SPEED_RSSI_HIGH_MIN,
                         CFG_LINK_SPEED_RSSI_HIGH_MAX,
                         NULL, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_MID, WLAN_PARAM_SignedInteger,
                         hdd_config_t, linkSpeedRssiMid,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_LINK_SPEED_RSSI_MID_DEFAULT,
                         CFG_LINK_SPEED_RSSI_MID_MIN,
                         CFG_LINK_SPEED_RSSI_MID_MAX,
                         NULL, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_LINK_SPEED_RSSI_LOW, WLAN_PARAM_SignedInteger,
                         hdd_config_t, linkSpeedRssiLow,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_LINK_SPEED_RSSI_LOW_DEFAULT,
                         CFG_LINK_SPEED_RSSI_LOW_MIN,
                         CFG_LINK_SPEED_RSSI_LOW_MAX,
                         NULL, 0 ),

#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
   REG_DYNAMIC_VARIABLE( CFG_ROAM_PREFER_5GHZ, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamPrefer5GHz,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_PREFER_5GHZ_DEFAULT,
                         CFG_ROAM_PREFER_5GHZ_MIN,
                         CFG_ROAM_PREFER_5GHZ_MAX,
                         cbNotifySetRoamPrefer5GHz, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamIntraBand,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_INTRA_BAND_DEFAULT,
                         CFG_ROAM_INTRA_BAND_MIN,
                         CFG_ROAM_INTRA_BAND_MAX,
                         cbNotifySetRoamIntraBand, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer,
                         hdd_config_t, nProbes,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_SCAN_N_PROBES_DEFAULT,
                         CFG_ROAM_SCAN_N_PROBES_MIN,
                         CFG_ROAM_SCAN_N_PROBES_MAX,
                         cbNotifySetRoamScanNProbes, 0 ),

   REG_DYNAMIC_VARIABLE( CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer,
                         hdd_config_t, nRoamScanHomeAwayTime,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ROAM_SCAN_HOME_AWAY_TIME_DEFAULT,
                         CFG_ROAM_SCAN_HOME_AWAY_TIME_MIN,
                         CFG_ROAM_SCAN_HOME_AWAY_TIME_MAX,
                         cbNotifySetRoamScanHomeAwayTime, 0 ),

#endif

   REG_VARIABLE( CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, isP2pDeviceAddrAdministrated,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_DEFAULT,
                 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MIN,
                 CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_MAX ),

   REG_VARIABLE( CFG_ENABLE_MCC_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableMCC,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_MCC_ENABLED_DEFAULT,
                 CFG_ENABLE_MCC_ENABLED_MIN,
                 CFG_ENABLE_MCC_ENABLED_MAX ),

   REG_VARIABLE( CFG_ALLOW_MCC_GO_DIFF_BI_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, allowMCCGODiffBI,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT,
                 CFG_ALLOW_MCC_GO_DIFF_BI_MIN,
                 CFG_ALLOW_MCC_GO_DIFF_BI_MAX ),

   REG_VARIABLE( CFG_THERMAL_MIGRATION_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalMitigationEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_MIGRATION_ENABLE_DEFAULT,
                 CFG_THERMAL_MIGRATION_ENABLE_MIN,
                 CFG_THERMAL_MIGRATION_ENABLE_MAX ),

   REG_VARIABLE( CFG_THROTTLE_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, throttlePeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THROTTLE_PERIOD_DEFAULT,
                 CFG_THROTTLE_PERIOD_MIN,
                 CFG_THROTTLE_PERIOD_MAX ),

   REG_VARIABLE( CFG_THROTTLE_DUTY_CYCLE_LEVEL0_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, throttle_dutycycle_level0,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MIN,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL0_MAX ),

   REG_VARIABLE( CFG_THROTTLE_DUTY_CYCLE_LEVEL1_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, throttle_dutycycle_level1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MIN,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL1_MAX ),

   REG_VARIABLE( CFG_THROTTLE_DUTY_CYCLE_LEVEL2_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, throttle_dutycycle_level2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MIN,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL2_MAX ),

   REG_VARIABLE( CFG_THROTTLE_DUTY_CYCLE_LEVEL3_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, throttle_dutycycle_level3,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_DEFAULT,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MIN,
                 CFG_THROTTLE_DUTY_CYCLE_LEVEL3_MAX ),

   REG_VARIABLE( CFG_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableModulatedDTIM,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_MODULATED_DTIM_DEFAULT,
                 CFG_ENABLE_MODULATED_DTIM_MIN,
                 CFG_ENABLE_MODULATED_DTIM_MAX ),

   REG_VARIABLE( CFG_MC_ADDR_LIST_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableMCAddrList,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MC_ADDR_LIST_ENABLE_DEFAULT,
                 CFG_MC_ADDR_LIST_ENABLE_MIN,
                 CFG_MC_ADDR_LIST_ENABLE_MAX ),

#ifdef WLAN_FEATURE_11AC
   REG_VARIABLE( CFG_VHT_CHANNEL_WIDTH, WLAN_PARAM_Integer,
                 hdd_config_t, vhtChannelWidth,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_VHT_CHANNEL_WIDTH_DEFAULT,
                 CFG_VHT_CHANNEL_WIDTH_MIN,
                 CFG_VHT_CHANNEL_WIDTH_MAX),

   REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS_8_9, WLAN_PARAM_Integer,
                 hdd_config_t, vhtRxMCS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_VHT_ENABLE_RX_MCS_8_9_DEFAULT,
                 CFG_VHT_ENABLE_RX_MCS_8_9_MIN,
                 CFG_VHT_ENABLE_RX_MCS_8_9_MAX),

   REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS_8_9, WLAN_PARAM_Integer,
                 hdd_config_t, vhtTxMCS,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_VHT_ENABLE_TX_MCS_8_9_DEFAULT,
                 CFG_VHT_ENABLE_TX_MCS_8_9_MIN,
                 CFG_VHT_ENABLE_TX_MCS_8_9_MAX),

   REG_VARIABLE( CFG_VHT_ENABLE_RX_MCS2x2_8_9, WLAN_PARAM_Integer,
                 hdd_config_t, vhtRxMCS2x2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_VHT_ENABLE_RX_MCS2x2_8_9_DEFAULT,
                 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MIN,
                 CFG_VHT_ENABLE_RX_MCS2x2_8_9_MAX),

   REG_VARIABLE( CFG_VHT_ENABLE_TX_MCS2x2_8_9, WLAN_PARAM_Integer,
                 hdd_config_t, vhtTxMCS2x2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_VHT_ENABLE_TX_MCS2x2_8_9_DEFAULT,
                 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MIN,
                 CFG_VHT_ENABLE_TX_MCS2x2_8_9_MAX),

   REG_VARIABLE( CFG_VHT_ENABLE_2x2_CAP_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enable2x2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_2x2_CAP_FEATURE_DEFAULT,
                 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MIN,
                 CFG_VHT_ENABLE_2x2_CAP_FEATURE_MAX ),

   REG_VARIABLE(CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK, WLAN_PARAM_Integer,
                 hdd_config_t, enable_dynamic_sta_chainmask,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_DEFAULT,
                 CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MIN,
                 CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK_MAX),

   REG_VARIABLE( CFG_RX_CHAIN_MASK_2G, WLAN_PARAM_Integer,
                 hdd_config_t, chain_mask_2g_rx,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RX_CHAIN_MASK_2G_DEFAULT,
                 CFG_RX_CHAIN_MASK_2G_MIN,
                 CFG_RX_CHAIN_MASK_2G_MAX ),

   REG_VARIABLE( CFG_RX_CHAIN_MASK_5G, WLAN_PARAM_Integer,
                 hdd_config_t, chain_mask_5g_rx,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RX_CHAIN_MASK_5G_DEFAULT,
                 CFG_RX_CHAIN_MASK_5G_MIN,
                 CFG_RX_CHAIN_MASK_5G_MAX ),

   REG_VARIABLE( CFG_TX_CHAIN_MASK_2G, WLAN_PARAM_Integer,
                 hdd_config_t, chain_mask_2g_tx,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TX_CHAIN_MASK_2G_DEFAULT,
                 CFG_TX_CHAIN_MASK_2G_MIN,
                 CFG_TX_CHAIN_MASK_2G_MAX ),

   REG_VARIABLE( CFG_TX_CHAIN_MASK_5G, WLAN_PARAM_Integer,
                 hdd_config_t, chain_mask_5g_tx,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TX_CHAIN_MASK_5G_DEFAULT,
                 CFG_TX_CHAIN_MASK_5G_MIN,
                 CFG_TX_CHAIN_MASK_5G_MAX ),

   REG_VARIABLE( CFG_VDEV_TYPE_NSS_2G, WLAN_PARAM_Integer,
                 hdd_config_t, vdev_type_nss_2g,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VDEV_TYPE_NSS_2G_DEFAULT,
                 CFG_VDEV_TYPE_NSS_2G_MIN,
                 CFG_VDEV_TYPE_NSS_2G_MAX ),

   REG_VARIABLE( CFG_VDEV_TYPE_NSS_5G, WLAN_PARAM_Integer,
                 hdd_config_t, vdev_type_nss_5g,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VDEV_TYPE_NSS_5G_DEFAULT,
                 CFG_VDEV_TYPE_NSS_5G_MIN,
                 CFG_VDEV_TYPE_NSS_5G_MAX ),

   REG_VARIABLE( CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableMuBformee,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_DEFAULT,
                 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MIN,
                 CFG_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE_MAX ),

   REG_VARIABLE( CFG_VHT_ENABLE_PAID_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableVhtpAid,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_PAID_FEATURE_DEFAULT,
                 CFG_VHT_ENABLE_PAID_FEATURE_MIN,
                 CFG_VHT_ENABLE_PAID_FEATURE_MAX ),

   REG_VARIABLE( CFG_VHT_ENABLE_GID_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableVhtGid,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_GID_FEATURE_DEFAULT,
                 CFG_VHT_ENABLE_GID_FEATURE_MIN,
                 CFG_VHT_ENABLE_GID_FEATURE_MAX ),
#endif

   REG_VARIABLE( CFG_VHT_ENABLE_1x1_TX_CHAINMASK, WLAN_PARAM_Integer,
                 hdd_config_t, txchainmask1x1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_DEFAULT,
                 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MIN,
                 CFG_VHT_ENABLE_1x1_TX_CHAINMASK_MAX ),

   REG_VARIABLE( CFG_VHT_ENABLE_1x1_RX_CHAINMASK, WLAN_PARAM_Integer,
                 hdd_config_t, rxchainmask1x1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_DEFAULT,
                 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MIN,
                 CFG_VHT_ENABLE_1x1_RX_CHAINMASK_MAX ),

   REG_VARIABLE( CFG_ENABLE_AMPDUPS_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableAmpduPs,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_AMPDUPS_FEATURE_DEFAULT,
                 CFG_ENABLE_AMPDUPS_FEATURE_MIN,
                 CFG_ENABLE_AMPDUPS_FEATURE_MAX ),

   REG_VARIABLE( CFG_HT_ENABLE_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableHtSmps,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_HT_ENABLE_SMPS_CAP_FEATURE_DEFAULT,
                 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MIN,
                 CFG_HT_ENABLE_SMPS_CAP_FEATURE_MAX ),

   REG_VARIABLE( CFG_HT_SMPS_CAP_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, htSmps,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_HT_SMPS_CAP_FEATURE_DEFAULT,
                 CFG_HT_SMPS_CAP_FEATURE_MIN,
                 CFG_HT_SMPS_CAP_FEATURE_MAX ),

   REG_VARIABLE( CFG_DISABLE_DFS_CH_SWITCH, WLAN_PARAM_Integer,
                 hdd_config_t, disableDFSChSwitch,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_DFS_CH_SWITCH_DEFAULT,
                 CFG_DISABLE_DFS_CH_SWITCH_MIN,
                 CFG_DISABLE_DFS_CH_SWITCH_MAX ),

   REG_VARIABLE( CFG_ENABLE_RADAR_WAR, WLAN_PARAM_Integer,
                 hdd_config_t, enable_radar_war,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_RADAR_WAR_DEFAULT,
                 CFG_ENABLE_RADAR_WAR_MIN,
                 CFG_ENABLE_RADAR_WAR_MAX ),

   REG_VARIABLE( CFG_ENABLE_DFS_MASTER_CAPABILITY, WLAN_PARAM_Integer,
                 hdd_config_t, enableDFSMasterCap,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_DFS_MASTER_CAPABILITY_DEFAULT,
                 CFG_ENABLE_DFS_MASTER_CAPABILITY_MIN,
                 CFG_ENABLE_DFS_MASTER_CAPABILITY_MAX ),

   REG_DYNAMIC_VARIABLE( CFG_SAP_PREFERRED_CHANNEL_LOCATION, WLAN_PARAM_Integer,
                 hdd_config_t, gSapPreferredChanLocation,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SAP_PREFERRED_CHANNEL_LOCATION_DEFAULT,
                 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MIN,
                 CFG_SAP_PREFERRED_CHANNEL_LOCATION_MAX,
                 cbNotify_set_gSapPreferredChanLocation, 0),

   REG_DYNAMIC_VARIABLE( CFG_DISABLE_DFS_JAPAN_W53, WLAN_PARAM_Integer,
                 hdd_config_t, gDisableDfsJapanW53,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_DFS_JAPAN_W53_DEFAULT,
                 CFG_DISABLE_DFS_JAPAN_W53_MIN,
                 CFG_DISABLE_DFS_JAPAN_W53_MAX,
                 chNotify_set_gDisableDfsJapanW53, 0),

   REG_VARIABLE(CFG_SET_RTS_FOR_SIFS_BURSTING, WLAN_PARAM_Integer,
                 hdd_config_t, enable_rts_sifsbursting,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SET_RTS_FOR_SIFS_BURSTING_DEFAULT,
                 CFG_SET_RTS_FOR_SIFS_BURSTING_MIN,
                 CFG_SET_RTS_FOR_SIFS_BURSTING_MAX),

   REG_VARIABLE(CFG_MAX_MPDUS_IN_AMPDU, WLAN_PARAM_Integer,
                 hdd_config_t, max_mpdus_inampdu,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_MPDUS_IN_AMPDU_DEFAULT,
                 CFG_MAX_MPDUS_IN_AMPDU_MIN,
                 CFG_MAX_MPDUS_IN_AMPDU_MAX),

   REG_VARIABLE(CFG_MAX_HT_MCS_FOR_TX_DATA, WLAN_PARAM_HexInteger,
                 hdd_config_t, max_ht_mcs_txdata,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_HT_MCS_FOR_TX_DATA_DEFAULT,
                 CFG_MAX_HT_MCS_FOR_TX_DATA_MIN,
                 CFG_MAX_HT_MCS_FOR_TX_DATA_MAX),

   REG_VARIABLE(CFG_MASK_FOR_TX_LEGACY_RATE, WLAN_PARAM_HexInteger,
                 hdd_config_t, mask_tx_legacy_rate,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MASK_FOR_TX_LEGACY_RATE_DEFAULT,
                 CFG_MASK_FOR_TX_LEGACY_RATE_MIN,
                 CFG_MASK_FOR_TX_LEGACY_RATE_MAX),

   REG_VARIABLE(CFG_MASK_FOR_TX_HT_RATE, WLAN_PARAM_HexInteger,
                 hdd_config_t, mask_tx_ht_rate,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MASK_FOR_TX_HT_RATE_DEFAULT,
                 CFG_MASK_FOR_TX_HT_RATE_MIN,
                 CFG_MASK_FOR_TX_HT_RATE_MAX),

   REG_VARIABLE(CFG_SAP_GET_PEER_INFO, WLAN_PARAM_Integer,
                 hdd_config_t, sap_get_peer_info,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SAP_GET_PEER_INFO_DEFAULT,
                 CFG_SAP_GET_PEER_INFO_MIN,
                 CFG_SAP_GET_PEER_INFO_MAX),

   REG_VARIABLE(CFG_DISABLE_ABG_RATE_FOR_TX_DATA, WLAN_PARAM_Integer,
                 hdd_config_t, disable_abg_rate_txdata,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_ABG_RATE_FOR_TX_DATA_DEFAULT,
                 CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MIN,
                 CFG_DISABLE_ABG_RATE_FOR_TX_DATA_MAX),

   REG_VARIABLE(CFG_RATE_FOR_TX_MGMT, WLAN_PARAM_HexInteger,
                 hdd_config_t, rate_for_tx_mgmt,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RATE_FOR_TX_MGMT_DEFAULT,
                 CFG_RATE_FOR_TX_MGMT_MIN,
                 CFG_RATE_FOR_TX_MGMT_MAX),

   REG_VARIABLE(CFG_RATE_FOR_TX_MGMT_2G, WLAN_PARAM_HexInteger,
                hdd_config_t, rate_for_tx_mgmt_2g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_RATE_FOR_TX_MGMT_2G_DEFAULT,
                CFG_RATE_FOR_TX_MGMT_2G_MIN,
                CFG_RATE_FOR_TX_MGMT_2G_MAX),

   REG_VARIABLE(CFG_RATE_FOR_TX_MGMT_5G, WLAN_PARAM_HexInteger,
                hdd_config_t, rate_for_tx_mgmt_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_RATE_FOR_TX_MGMT_5G_DEFAULT,
                CFG_RATE_FOR_TX_MGMT_5G_MIN,
                CFG_RATE_FOR_TX_MGMT_5G_MAX),

   REG_VARIABLE( CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableFirstScan2GOnly,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_FIRST_SCAN_2G_ONLY_DEFAULT,
                 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MIN,
                 CFG_ENABLE_FIRST_SCAN_2G_ONLY_MAX ),

   REG_VARIABLE( CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, skipDfsChnlInP2pSearch,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_DEFAULT,
                 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MIN,
                 CFG_ENABLE_SKIP_DFS_IN_P2P_SEARCH_MAX ),

   REG_VARIABLE( CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ignoreDynamicDtimInP2pMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_DEFAULT,
                 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
                 CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ),

   REG_VARIABLE( CFG_NUM_BUFF_ADVERT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t,numBuffAdvert ,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_NUM_BUFF_ADVERT_DEFAULT,
                 CFG_NUM_BUFF_ADVERT_MIN,
                 CFG_NUM_BUFF_ADVERT_MAX ),

   REG_VARIABLE( CFG_MCC_CONFIG_PARAM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, configMccParam,
                 VAR_FLAGS_OPTIONAL,
                 CFG_MCC_CONFIG_PARAM_DEFAULT,
                 CFG_MCC_CONFIG_PARAM_MIN,
                 CFG_MCC_CONFIG_PARAM_MAX ),

   REG_VARIABLE( CFG_ENABLE_RX_STBC, WLAN_PARAM_Integer,
                 hdd_config_t, enableRxSTBC,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_RX_STBC_DEFAULT,
                 CFG_ENABLE_RX_STBC_MIN,
                 CFG_ENABLE_RX_STBC_MAX ),

   REG_VARIABLE( CFG_ENABLE_TX_STBC, WLAN_PARAM_Integer,
                 hdd_config_t, enableTxSTBC,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_TX_STBC_DEFAULT,
                 CFG_ENABLE_TX_STBC_MIN,
                 CFG_ENABLE_TX_STBC_MAX ),

   REG_VARIABLE( CFG_ENABLE_RX_LDPC, WLAN_PARAM_Integer,
                 hdd_config_t, enableRxLDPC,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_RX_LDPC_DEFAULT,
                 CFG_ENABLE_RX_LDPC_MIN,
                 CFG_ENABLE_RX_LDPC_MAX ),

   REG_VARIABLE( CFG_PPS_ENABLE_5G_EBT, WLAN_PARAM_Integer,
                 hdd_config_t, enable5gEBT,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PPS_ENABLE_5G_EBT_FEATURE_DEFAULT,
                 CFG_PPS_ENABLE_5G_EBT_FEATURE_MIN,
                 CFG_PPS_ENABLE_5G_EBT_FEATURE_MAX ),

#ifdef FEATURE_WLAN_TDLS
   REG_VARIABLE( CFG_TDLS_SUPPORT_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableTDLSSupport,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
                 CFG_TDLS_SUPPORT_ENABLE_MIN,
                 CFG_TDLS_SUPPORT_ENABLE_MAX ),

   REG_VARIABLE( CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableTDLSImplicitTrigger,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT,
                 CFG_TDLS_IMPLICIT_TRIGGER_MIN,
                 CFG_TDLS_IMPLICIT_TRIGGER_MAX ),

   REG_VARIABLE( CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSTxStatsPeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_TX_STATS_PERIOD_DEFAULT,
                 CFG_TDLS_TX_STATS_PERIOD_MIN,
                 CFG_TDLS_TX_STATS_PERIOD_MAX ),

   REG_VARIABLE( CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSTxPacketThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT,
                 CFG_TDLS_TX_PACKET_THRESHOLD_MIN,
                 CFG_TDLS_TX_PACKET_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_TDLS_DISCOVERY_PERIOD, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSDiscoveryPeriod,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_DISCOVERY_PERIOD_DEFAULT,
                 CFG_TDLS_DISCOVERY_PERIOD_MIN,
                 CFG_TDLS_DISCOVERY_PERIOD_MAX ),

   REG_VARIABLE( CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSMaxDiscoveryAttempt,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT,
                 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN,
                 CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX ),

   REG_VARIABLE( CFG_TDLS_IDLE_TIMEOUT, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSIdleTimeout,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_IDLE_TIMEOUT_DEFAULT,
                 CFG_TDLS_IDLE_TIMEOUT_MIN,
                 CFG_TDLS_IDLE_TIMEOUT_MAX ),

   REG_VARIABLE( CFG_TDLS_IDLE_PACKET_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSIdlePacketThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_IDLE_PACKET_THRESHOLD_DEFAULT,
                 CFG_TDLS_IDLE_PACKET_THRESHOLD_MIN,
                 CFG_TDLS_IDLE_PACKET_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_TDLS_RSSI_HYSTERESIS, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSRSSIHysteresis,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_RSSI_HYSTERESIS_DEFAULT,
                 CFG_TDLS_RSSI_HYSTERESIS_MIN,
                 CFG_TDLS_RSSI_HYSTERESIS_MAX ),

   REG_VARIABLE( CFG_TDLS_RSSI_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger,
                 hdd_config_t, fTDLSRSSITriggerThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_DEFAULT,
                 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MIN,
                 CFG_TDLS_RSSI_TRIGGER_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_TDLS_RSSI_TEARDOWN_THRESHOLD, WLAN_PARAM_SignedInteger,
                 hdd_config_t, fTDLSRSSITeardownThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_DEFAULT,
                 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MIN,
                 CFG_TDLS_RSSI_TEARDOWN_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_TDLS_RSSI_DELTA, WLAN_PARAM_SignedInteger,
                 hdd_config_t, fTDLSRSSIDelta,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_RSSI_DELTA_DEFAULT,
                 CFG_TDLS_RSSI_DELTA_MIN,
                 CFG_TDLS_RSSI_DELTA_MAX ),

   REG_VARIABLE( CFG_TDLS_QOS_WMM_UAPSD_MASK_NAME , WLAN_PARAM_HexInteger,
                 hdd_config_t, fTDLSUapsdMask,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_QOS_WMM_UAPSD_MASK_DEFAULT,
                 CFG_TDLS_QOS_WMM_UAPSD_MASK_MIN,
                 CFG_TDLS_QOS_WMM_UAPSD_MASK_MAX ),

   REG_VARIABLE( CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableTDLSBufferSta,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_DEFAULT,
                 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MIN,
                 CFG_TDLS_BUFFER_STA_SUPPORT_ENABLE_MAX ),

   REG_VARIABLE( CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableTDLSOffChannel,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_DEFAULT,
                 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MIN,
                 CFG_TDLS_OFF_CHANNEL_SUPPORT_ENABLE_MAX ),

   REG_VARIABLE( CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSPrefOffChanNum,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_DEFAULT,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MIN,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_NUM_MAX ),

   REG_VARIABLE( CFG_TDLS_PREFERRED_OFF_CHANNEL_BW, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSPrefOffChanBandwidth,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_DEFAULT,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MIN,
                 CFG_TDLS_PREFERRED_OFF_CHANNEL_BW_MAX ),

   REG_VARIABLE( CFG_TDLS_PUAPSD_INACTIVITY_TIME, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSPuapsdInactivityTimer,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PUAPSD_INACTIVITY_TIME_DEFAULT,
                 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MIN,
                 CFG_TDLS_PUAPSD_INACTIVITY_TIME_MAX ),

   REG_VARIABLE( CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSRxFrameThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_DEFAULT,
                 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MIN,
                 CFG_TDLS_PUAPSD_RX_FRAME_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSPuapsdPTIWindow,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_DEFAULT,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MIN,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_IND_WINDOW_MAX ),

   REG_VARIABLE( CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT, WLAN_PARAM_Integer,
                 hdd_config_t, fTDLSPuapsdPTRTimeout,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_DEFAULT,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MIN,
                 CFG_TDLS_PUAPSD_PEER_TRAFFIC_RSP_TIMEOUT_MAX ),

    REG_VARIABLE( CFG_TDLS_EXTERNAL_CONTROL, WLAN_PARAM_Integer,
                  hdd_config_t, fTDLSExternalControl,
                  VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_TDLS_EXTERNAL_CONTROL_DEFAULT,
                  CFG_TDLS_EXTERNAL_CONTROL_MIN,
                  CFG_TDLS_EXTERNAL_CONTROL_MAX ),

   REG_VARIABLE( CFG_TDLS_WMM_MODE_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableTDLSWmmMode,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_WMM_MODE_ENABLE_DEFAULT,
                 CFG_TDLS_WMM_MODE_ENABLE_MIN,
                 CFG_TDLS_WMM_MODE_ENABLE_MAX ),

   REG_VARIABLE( CFG_TDLS_SCAN_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, enable_tdls_scan,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_SCAN_ENABLE_DEFAULT,
                 CFG_TDLS_SCAN_ENABLE_MIN,
                 CFG_TDLS_SCAN_ENABLE_MAX ),

   REG_VARIABLE( CFG_TDLS_PEER_KICKOUT_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, tdls_peer_kickout_threshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TDLS_PEER_KICKOUT_THRESHOLD_DEFAULT,
                 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MIN,
                 CFG_TDLS_PEER_KICKOUT_THRESHOLD_MAX ),

#endif

#ifdef WLAN_SOFTAP_VSTA_FEATURE
   REG_VARIABLE( CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableVSTASupport,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VSTA_SUPPORT_ENABLE_DEFAULT,
                 CFG_VSTA_SUPPORT_ENABLE_MIN,
                 CFG_VSTA_SUPPORT_ENABLE_MAX ),
#endif
   REG_VARIABLE( CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableLpwrImgTransition,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ),

#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
   REG_VARIABLE( CFG_ACTIVEMODE_OFFLOAD_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableActiveModeOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ACTIVEMODE_OFFLOAD_ENABLE_DEFAULT,
                 CFG_ACTIVEMODE_OFFLOAD_ENABLE_MIN,
                 CFG_ACTIVEMODE_OFFLOAD_ENABLE_MAX ),
#endif
   REG_VARIABLE( CFG_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableLpwrImgTransition,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_DEFAULT,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_MIN,
                 CFG_ENABLE_LPWR_IMG_TRANSITION_MAX ),


   REG_VARIABLE( CFG_SCAN_AGING_PARAM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, scanAgingTimeout,
                 VAR_FLAGS_OPTIONAL,
                 CFG_SCAN_AGING_PARAM_DEFAULT,
                 CFG_SCAN_AGING_PARAM_MIN,
                 CFG_SCAN_AGING_PARAM_MAX ),

   REG_VARIABLE( CFG_TX_LDPC_ENABLE_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableTxLdpc,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TX_LDPC_ENABLE_FEATURE_DEFAULT,
                 CFG_TX_LDPC_ENABLE_FEATURE_MIN,
                 CFG_TX_LDPC_ENABLE_FEATURE_MAX ),

   REG_VARIABLE( CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableMCCAdaptiveScheduler,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_DEFAULT,
                 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MIN,
                 CFG_ENABLE_MCC_ADATIVE_SCHEDULER_ENABLED_MAX ),

   REG_VARIABLE( CFG_ANDRIOD_POWER_SAVE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, isAndroidPsEn,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ANDRIOD_POWER_SAVE_DEFAULT,
                 CFG_ANDRIOD_POWER_SAVE_MIN,
                 CFG_ANDRIOD_POWER_SAVE_MAX),

   REG_VARIABLE( CFG_IBSS_ADHOC_CHANNEL_5GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, AdHocChannel5G,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_ADHOC_CHANNEL_5GHZ_DEFAULT,
                 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MIN,
                 CFG_IBSS_ADHOC_CHANNEL_5GHZ_MAX),

   REG_VARIABLE( CFG_IBSS_ADHOC_CHANNEL_24GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, AdHocChannel24G,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_ADHOC_CHANNEL_24GHZ_DEFAULT,
                 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MIN,
                 CFG_IBSS_ADHOC_CHANNEL_24GHZ_MAX),

#ifdef WLAN_FEATURE_11AC
   REG_VARIABLE( CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
                 hdd_config_t, enableTxBF,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_DEFAULT,
                 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MIN,
                 CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE_MAX ),

   REG_VARIABLE( CFG_VHT_ENABLE_TXBF_IN_20MHZ, WLAN_PARAM_Integer,
                 hdd_config_t, enableTxBFin20MHz,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_ENABLE_TXBF_IN_20MHZ_DEFAULT,
                 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MIN,
                 CFG_VHT_ENABLE_TXBF_IN_20MHZ_MAX ),

   REG_VARIABLE( CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED, WLAN_PARAM_Integer,
                 hdd_config_t, txBFCsnValue,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_DEFAULT,
                 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MIN,
                 CFG_VHT_CSN_BEAMFORMEE_ANT_SUPPORTED_MAX ),
#endif

   REG_VARIABLE( CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, sapAllowAllChannel,
                 VAR_FLAGS_OPTIONAL,
                 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_DEFAULT,
                 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MIN,
                 CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_MAX ),

#ifdef WLAN_FEATURE_11AC
   REG_VARIABLE( CFG_DISABLE_LDPC_WITH_TXBF_AP, WLAN_PARAM_Integer,
                 hdd_config_t, disableLDPCWithTxbfAP,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DISABLE_LDPC_WITH_TXBF_AP_DEFAULT,
                 CFG_DISABLE_LDPC_WITH_TXBF_AP_MIN,
                 CFG_DISABLE_LDPC_WITH_TXBF_AP_MAX ),
#endif

   REG_VARIABLE_STRING( CFG_LIST_OF_NON_DFS_COUNTRY_CODE, WLAN_PARAM_String,
                        hdd_config_t, listOfNonDfsCountryCode,
                        VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        (void *)CFG_LIST_OF_NON_DFS_COUNTRY_CODE_DEFAULT),

   REG_DYNAMIC_VARIABLE( CFG_ENABLE_SSR, WLAN_PARAM_Integer,
                         hdd_config_t, enableSSR,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ENABLE_SSR_DEFAULT,
                         CFG_ENABLE_SSR_MIN,
                         CFG_ENABLE_SSR_MAX,
                         cbNotifySetEnableSSR, 0 ),

   REG_VARIABLE( CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer,
                 hdd_config_t, cfgMaxMediumTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MAX_MEDIUM_TIME_STADEFAULT,
                 CFG_MAX_MEDIUM_TIME_STAMIN,
                 CFG_MAX_MEDIUM_TIME_STAMAX ),

#ifdef WLAN_FEATURE_11AC
   REG_VARIABLE( CFG_ENABLE_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableVhtFor24GHzBand,
                 VAR_FLAGS_OPTIONAL,
                 CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT,
                 CFG_ENABLE_VHT_FOR_24GHZ_MIN,
                 CFG_ENABLE_VHT_FOR_24GHZ_MAX),

   REG_VARIABLE( CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enable_vendor_vht_for_24ghz_band,
                 VAR_FLAGS_OPTIONAL,
                 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_DEFAULT,
                 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MIN,
                 CFG_ENABLE_VENDOR_VHT_FOR_24GHZ_MAX),
#endif

#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
   REG_DYNAMIC_VARIABLE( CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY, WLAN_PARAM_Integer,
                         hdd_config_t, bFastRoamInConIniFeatureEnabled,
                         VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                         CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_DEFAULT,
                         CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MIN,
                         CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY_MAX,
                         cbNotifySetEnableFastRoamInConcurrency, 0 ),
#endif

   REG_VARIABLE( CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableAdaptRxDrain,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_ENABLE_ADAPT_RX_DRAIN_DEFAULT,
                 CFG_ENABLE_ADAPT_RX_DRAIN_MIN,
                 CFG_ENABLE_ADAPT_RX_DRAIN_MAX),

   REG_VARIABLE( CFG_FLEX_CONNECT_POWER_FACTOR_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, flexConnectPowerFactor,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_MINMAX,
                 CFG_FLEX_CONNECT_POWER_FACTOR_DEFAULT,
                 CFG_FLEX_CONNECT_POWER_FACTOR_MIN,
                 CFG_FLEX_CONNECT_POWER_FACTOR_MAX ),

   REG_VARIABLE( CFG_ENABLE_HEART_BEAT_OFFLOAD, WLAN_PARAM_Integer,
                 hdd_config_t, enableIbssHeartBeatOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_HEART_BEAT_OFFLOAD_DEFAULT,
                 CFG_ENABLE_HEART_BEAT_OFFLOAD_MIN,
                 CFG_ENABLE_HEART_BEAT_OFFLOAD_MAX),

   REG_VARIABLE( CFG_ANTENNA_DIVERSITY_PARAM_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, antennaDiversity,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ANTENNA_DIVERSITY_PARAM_DEFAULT,
                 CFG_ANTENNA_DIVERSITY_PARAM_MIN,
                 CFG_ANTENNA_DIVERSITY_PARAM_MAX),

   REG_VARIABLE( CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fEnableSNRMonitoring,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_ENABLE_SNR_MONITORING_DEFAULT,
                 CFG_ENABLE_SNR_MONITORING_MIN,
                 CFG_ENABLE_SNR_MONITORING_MAX),

#ifdef FEATURE_WLAN_SCAN_PNO
   REG_VARIABLE( CFG_PNO_SCAN_SUPPORT, WLAN_PARAM_Integer,
                 hdd_config_t, configPNOScanSupport,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PNO_SCAN_SUPPORT_DEFAULT,
                 CFG_PNO_SCAN_SUPPORT_DISABLE,
                 CFG_PNO_SCAN_SUPPORT_ENABLE),

   REG_VARIABLE( CFG_PNO_SCAN_TIMER_REPEAT_VALUE, WLAN_PARAM_Integer,
                 hdd_config_t, configPNOScanTimerRepeatValue,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_DEFAULT,
                 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MIN,
                 CFG_PNO_SCAN_TIMER_REPEAT_VALUE_MAX),

   REG_VARIABLE( CFG_PNO_SLOW_SCAN_MULTIPLIER, WLAN_PARAM_Integer,
                 hdd_config_t, pno_slow_scan_multiplier,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PNO_SLOW_SCAN_MULTIPLIER_DEFAULT,
                 CFG_PNO_SLOW_SCAN_MULTIPLIER_MIN,
                 CFG_PNO_SLOW_SCAN_MULTIPLIER_MAX),
#endif
   REG_VARIABLE(CFG_MAX_AMSDU_NUM_NAME , WLAN_PARAM_Integer,
                hdd_config_t, max_amsdu_num,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MAX_AMSDU_NUM_DEFAULT,
                CFG_MAX_AMSDU_NUM_MIN,
                CFG_MAX_AMSDU_NUM_MAX),

   REG_VARIABLE( CFG_STRICT_5GHZ_PREF_BY_MARGIN , WLAN_PARAM_Integer,
                 hdd_config_t, nSelect5GHzMargin,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_STRICT_5GHZ_PREF_BY_MARGIN_DEFAULT,
                 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MIN,
                 CFG_STRICT_5GHZ_PREF_BY_MARGIN_MAX ),

   REG_VARIABLE( CFG_ENABLE_TCP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
                 hdd_config_t, enableTCPChkSumOffld,
                 VAR_FLAGS_OPTIONAL,
                 CFG_ENABLE_TCP_CHKSUM_OFFLOAD_DEFAULT,
                 CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MIN,
                 CFG_ENABLE_TCP_CHKSUM_OFFLOAD_MAX),

   REG_VARIABLE( CFG_ENABLE_IP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
                 hdd_config_t, enableIPChecksumOffload,
                 VAR_FLAGS_OPTIONAL,
                 CFG_ENABLE_IP_CHKSUM_OFFLOAD_DEFAULT,
                 CFG_ENABLE_IP_CHKSUM_OFFLOAD_DISABLE,
                 CFG_ENABLE_IP_CHKSUM_OFFLOAD_ENABLE ),

   REG_VARIABLE( CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enablePowersaveOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_POWERSAVE_OFFLOAD_DEFAULT,
                 CFG_POWERSAVE_OFFLOAD_MIN,
                 CFG_POWERSAVE_OFFLOAD_MAX ),

#ifdef CONFIG_GPIO_OOB
   REG_VARIABLE(CFG_ENABLE_OOB_GPIO_FLAG_NAME, WLAN_PARAM_Integer,
                hdd_config_t, oob_gpio_flag,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                CFG_ENABLE_OOB_GPIO_FLAG_DEFAULT,
                CFG_ENABLE_OOB_GPIO_FLAG_MIN,
                CFG_ENABLE_OOB_GPIO_FLAG_MAX),

   REG_VARIABLE(CFG_ENABLE_OOB_GPIO_NUM_NAME, WLAN_PARAM_Integer,
                hdd_config_t, oob_gpio_num,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                CFG_ENABLE_OOB_GPIO_NUM_DEFAULT,
                CFG_ENABLE_OOB_GPIO_NUM_MIN,
                CFG_ENABLE_OOB_GPIO_NUM_MAX),
#endif

   REG_VARIABLE( CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enablefwprint,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_FW_UART_PRINT_DEFAULT,
                 CFG_ENABLE_FW_UART_PRINT_DISABLE,
                 CFG_ENABLE_FW_UART_PRINT_ENABLE),

   REG_VARIABLE( CFG_ENABLE_FW_LOG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enablefwlog,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_FW_LOG_DEFAULT,
                 CFG_ENABLE_FW_LOG_DISABLE,
                 CFG_ENABLE_FW_LOG_ENABLE),

   REG_VARIABLE( CFG_ENABLE_FAST_FW_DUMP_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fastfwdump,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_FAST_FW_DUMP_DEFAULT,
                 CFG_ENABLE_FAST_FW_DUMP_DISABLE,
                 CFG_ENABLE_FAST_FW_DUMP_ENABLE),

   REG_VARIABLE( CFG_ENABLE_FW_SELF_RECOVERY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableFwSelfRecovery,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_FW_SELF_RECOVERY_DEFAULT,
                 CFG_ENABLE_FW_SELF_RECOVERY_DISABLE,
                 CFG_ENABLE_FW_SELF_RECOVERY_ENABLE),

#ifdef FEATURE_USB_WARM_RESET
   REG_VARIABLE( CFG_ENABLE_USB_WARM_RESET_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enable_usb_warm_reset,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_USB_WARM_RESET_DEFAULT,
                 CFG_ENABLE_USB_WARM_RESET_DISABLE,
                 CFG_ENABLE_USB_WARM_RESET_ENABLE),
#endif

#ifdef IPA_OFFLOAD
   REG_VARIABLE( CFG_IPA_OFFLOAD_CONFIG_NAME, WLAN_PARAM_HexInteger,
                 hdd_config_t, IpaConfig,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IPA_OFFLOAD_CONFIG_DEFAULT,
                 CFG_IPA_OFFLOAD_CONFIG_MIN,
                 CFG_IPA_OFFLOAD_CONFIG_MAX),

   REG_VARIABLE( CFG_IPA_DESC_SIZE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaDescSize,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IPA_DESC_SIZE_DEFAULT,
                 CFG_IPA_DESC_SIZE_MIN,
                 CFG_IPA_DESC_SIZE_MAX ),

   REG_VARIABLE( CFG_IPA_HIGH_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
                 hdd_config_t, IpaHighBandwidthMbps,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IPA_HIGH_BANDWIDTH_MBPS_DEFAULT,
                 CFG_IPA_HIGH_BANDWIDTH_MBPS_MIN,
                 CFG_IPA_HIGH_BANDWIDTH_MBPS_MAX),

   REG_VARIABLE( CFG_IPA_MEDIUM_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
                 hdd_config_t, IpaMediumBandwidthMbps,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_DEFAULT,
                 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MIN,
                 CFG_IPA_MEDIUM_BANDWIDTH_MBPS_MAX),

   REG_VARIABLE( CFG_IPA_LOW_BANDWIDTH_MBPS, WLAN_PARAM_Integer,
                 hdd_config_t, IpaLowBandwidthMbps,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IPA_LOW_BANDWIDTH_MBPS_DEFAULT,
                 CFG_IPA_LOW_BANDWIDTH_MBPS_MIN,
                 CFG_IPA_LOW_BANDWIDTH_MBPS_MAX),
#endif
   REG_VARIABLE( CFG_P2P_LISTEN_OFFLOAD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fP2pListenOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_P2P_LISTEN_OFFLOAD_DEFAULT,
                 CFG_P2P_LISTEN_OFFLOAD_DISABLE,
                 CFG_P2P_LISTEN_OFFLOAD_ENABLE ),

#ifdef WLAN_FEATURE_11AC
   REG_VARIABLE( CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fVhtAmpduLenExponent,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_VHT_AMPDU_LEN_EXPONENT_DEFAULT,
                 CFG_VHT_AMPDU_LEN_EXPONENT_MIN,
                 CFG_VHT_AMPDU_LEN_EXPONENT_MAX),

   REG_VARIABLE( CFG_VHT_MPDU_LEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, vhtMpduLen,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_VHT_MPDU_LEN_DEFAULT,
                 CFG_VHT_MPDU_LEN_MIN,
                 CFG_VHT_MPDU_LEN_MAX),
#endif

   REG_VARIABLE( CFG_MAX_WOW_FILTERS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, maxWoWFilters,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK ,
                 CFG_MAX_WOW_FILTERS_DEFAULT,
                 CFG_MAX_WOW_FILTERS_MIN,
                 CFG_MAX_WOW_FILTERS_MAX),

   REG_VARIABLE( CFG_WOW_STATUS_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, wowEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_WOW_STATUS_DEFAULT,
                 CFG_WOW_ENABLE_MIN,
                 CFG_WOW_ENABLE_MAX),

   REG_VARIABLE( CFG_COALESING_IN_IBSS_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, isCoalesingInIBSSAllowed,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_COALESING_IN_IBSS_DEFAULT,
                 CFG_COALESING_IN_IBSS_MIN,
                 CFG_COALESING_IN_IBSS_MAX ),

   REG_VARIABLE( CFG_IBSS_ATIM_WIN_SIZE_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, ibssATIMWinSize,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_ATIM_WIN_SIZE_DEFAULT,
                 CFG_IBSS_ATIM_WIN_SIZE_MIN,
                 CFG_IBSS_ATIM_WIN_SIZE_MAX ),

   REG_VARIABLE( CFG_SAP_MAX_NO_PEERS, WLAN_PARAM_Integer,
                 hdd_config_t, max_sap_peers,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SAP_MAX_NO_PEERS_DEFAULT,
                 CFG_SAP_MAX_NO_PEERS_MIN,
                 CFG_SAP_MAX_NO_PEERS_MAX),

   REG_VARIABLE( CFG_GO_MAX_NO_PEERS, WLAN_PARAM_Integer,
                 hdd_config_t, max_go_peers,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_GO_MAX_NO_PEERS_DEFAULT,
                 CFG_GO_MAX_NO_PEERS_MIN,
                 CFG_GO_MAX_NO_PEERS_MAX),

   REG_VARIABLE( CFG_IBSS_IS_POWER_SAVE_ALLOWED_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, isIbssPowerSaveAllowed,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_IS_POWER_SAVE_ALLOWED_DEFAULT,
                 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MIN,
                 CFG_IBSS_IS_POWER_SAVE_ALLOWED_MAX ),

   REG_VARIABLE( CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, isIbssPowerCollapseAllowed,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_DEFAULT,
                 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MIN,
                 CFG_IBSS_IS_POWER_COLLAPSE_ALLOWED_MAX ),

   REG_VARIABLE( CFG_IBSS_AWAKE_ON_TX_RX_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, isIbssAwakeOnTxRx,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_AWAKE_ON_TX_RX_DEFAULT,
                 CFG_IBSS_AWAKE_ON_TX_RX_MIN,
                 CFG_IBSS_AWAKE_ON_TX_RX_MAX ),

   REG_VARIABLE( CFG_IBSS_INACTIVITY_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ibssInactivityCount,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_INACTIVITY_TIME_DEFAULT,
                 CFG_IBSS_INACTIVITY_TIME_MIN,
                 CFG_IBSS_INACTIVITY_TIME_MAX ),

   REG_VARIABLE( CFG_IBSS_TXSP_END_INACTIVITY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ibssTxSpEndInactivityTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_TXSP_END_INACTIVITY_DEFAULT,
                 CFG_IBSS_TXSP_END_INACTIVITY_MIN,
                 CFG_IBSS_TXSP_END_INACTIVITY_MAX ),

   REG_VARIABLE( CFG_IBSS_PS_WARMUP_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ibssPsWarmupTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_PS_WARMUP_TIME_DEFAULT,
                 CFG_IBSS_PS_WARMUP_TIME_MIN,
                 CFG_IBSS_PS_WARMUP_TIME_MAX ),

   REG_VARIABLE( CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, ibssPs1RxChainInAtimEnable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT,
                 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MIN,
                 CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX ),

#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_txctl_enable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_ENABLE_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_ENABLE_MIN,
                 CFG_BAD_PEER_TX_CTL_ENABLE_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_PERIOD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_txctl_prd,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PERIOD_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PERIOD_MIN,
                 CFG_BAD_PEER_TX_CTL_PERIOD_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_txctl_txq_lmt,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_MIN,
                 CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tgt_backoff,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_MIN,
                 CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tgt_report_prd,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_MIN,
                 CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_cond_ieee80211b,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_MIN,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_delta_ieee80211b,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_MIN,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_pct_ieee80211b,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_MIN,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_MAX,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_DEFAULT ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tput_ieee80211b,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_MIN,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_limit_ieee80211b,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_MIN,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_cond_ieee80211ag,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_MIN,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_delta_ieee80211ag,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_MIN,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_pct_ieee80211ag,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_MIN,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tput_ieee80211ag,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_MIN,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_limit_ieee80211ag,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_MIN,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_cond_ieee80211n,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_MIN,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_delta_ieee80211n,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_MIN,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_pct_ieee80211n,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_MIN,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tput_ieee80211n,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_MIN,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_limit_ieee80211n,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_MIN,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_cond_ieee80211ac,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_MIN,
                 CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_delta_ieee80211ac,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_MIN,
                 CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_pct_ieee80211ac,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_MIN,
                 CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_tput_ieee80211ac,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_MIN,
                 CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_MAX ),

   REG_VARIABLE( CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, bad_peer_limit_ieee80211ac,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_DEFAULT,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_MIN,
                 CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_MAX ),
#endif
   REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMinLevel0,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL0_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL0_MIN,
                 CFG_THERMAL_TEMP_MIN_LEVEL0_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL0_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMaxLevel0,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL0_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL0_MIN,
                 CFG_THERMAL_TEMP_MAX_LEVEL0_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL1_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMinLevel1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL1_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL1_MIN,
                 CFG_THERMAL_TEMP_MIN_LEVEL1_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL1_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMaxLevel1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL1_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL1_MIN,
                 CFG_THERMAL_TEMP_MAX_LEVEL1_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL2_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMinLevel2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL2_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL2_MIN,
                 CFG_THERMAL_TEMP_MIN_LEVEL2_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL2_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMaxLevel2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL2_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL2_MIN,
                 CFG_THERMAL_TEMP_MAX_LEVEL2_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MIN_LEVEL3_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMinLevel3,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL3_DEFAULT,
                 CFG_THERMAL_TEMP_MIN_LEVEL3_MIN,
                 CFG_THERMAL_TEMP_MIN_LEVEL3_MAX ),

   REG_VARIABLE( CFG_THERMAL_TEMP_MAX_LEVEL3_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermalTempMaxLevel3,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL3_DEFAULT,
                 CFG_THERMAL_TEMP_MAX_LEVEL3_MIN,
                 CFG_THERMAL_TEMP_MAX_LEVEL3_MAX ),

#ifdef FEATURE_WLAN_THERMAL_SHUTDOWN
   REG_VARIABLE( CFG_THERMAL_SHUTDOWN_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_shutdown_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_ENABLE_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_ENABLE_MIN,
                 CFG_THERMAL_SHUTDOWN_ENABLE_MAX),

   REG_VARIABLE( CFG_THERMAL_SHUTDOWN_AUTO_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_shutdown_auto_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_AUTO_ENABLE_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_AUTO_ENABLE_MIN,
                 CFG_THERMAL_SHUTDOWN_AUTO_ENABLE_MAX),

   REG_VARIABLE( CFG_THERMAL_SHUTDOWN_TEMP_RESUME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_resume_threshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_RESUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_RESUME_MIN,
                 CFG_THERMAL_SHUTDOWN_TEMP_RESUME_MAX),

   REG_VARIABLE( CFG_THERMAL_SHUTDOWN_TEMP_WARNING_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_warning_threshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_WARNING_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_WARNING_MIN,
                 CFG_THERMAL_SHUTDOWN_TEMP_WARNING_MAX),

   REG_VARIABLE( CFG_THERMAL_SHUTDOWN_TEMP_SUSPEND_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_suspend_threshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_SUSPEND_DEFAULT,
                 CFG_THERMAL_SHUTDOWN_TEMP_SUSPEND_MIN,
                 CFG_THERMAL_SHUTDOWN_TEMP_SUSPEND_MAX),

   REG_VARIABLE( CFG_THERMAL_SAMPLE_RATE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, thermal_sample_rate,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_THERMAL_SAMPLE_RATE_DEFAULT,
                 CFG_THERMAL_SAMPLE_RATE_MIN,
                 CFG_THERMAL_SAMPLE_RATE_MAX),
#endif /* FEATURE_WLAN_THERMAL_SHUTDOWN */

   REG_VARIABLE( CFG_REMOVE_TIME_STAMP_SYNC_CMD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, remove_time_stamp_sync_cmd,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_REMOVE_TIME_STAMP_SYNC_CMD_DEFAULT,
                 CFG_REMOVE_TIME_STAMP_SYNC_CMD_MIN,
                 CFG_REMOVE_TIME_STAMP_SYNC_CMD_MAX),

   /* Runtime DPD Recaliberation INI Parameters BEGINS */
   REG_VARIABLE( CFG_DPD_RECALIB_ENABLE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dpd_recalib_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DPD_RECALIB_ENABLE_DEFAULT,
                 CFG_DPD_RECALIB_ENABLE_MIN,
                 CFG_DPD_RECALIB_ENABLE_MAX),

   REG_VARIABLE( CFG_DPD_RECALIB_DELTA_DEGREE_HIGH_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dpd_recalib_delta_degreehigh,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DPD_RECALIB_DELTA_DEGREE_HIGH_DEFAULT,
                 CFG_DPD_RECALIB_DELTA_DEGREE_HIGH_MIN,
                 CFG_DPD_RECALIB_DELTA_DEGREE_HIGH_MAX),

   REG_VARIABLE( CFG_DPD_RECALIB_DELTA_DEGREE_LOW_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dpd_recalib_delta_degreelow,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DPD_RECALIB_DELTA_DEGREE_LOW_DEFAULT,
                 CFG_DPD_RECALIB_DELTA_DEGREE_LOW_MIN,
                 CFG_DPD_RECALIB_DELTA_DEGREE_LOW_MAX),

   REG_VARIABLE( CFG_DPD_RECALIB_COOLING_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dpd_recalib_cooling_time,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DPD_RECALIB_COOLING_TIME_DEFAULT,
                 CFG_DPD_RECALIB_COOLING_TIME_MIN,
                 CFG_DPD_RECALIB_COOLING_TIME_MAX),

   REG_VARIABLE( CFG_DPD_RECALIB_DURATION_MAX_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dpd_recalib_duration_max,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DPD_RECALIB_DURATION_MAX_DEFAULT,
                 CFG_DPD_RECALIB_DURATION_MAX_MIN,
                 CFG_DPD_RECALIB_DURATION_MAX_MAX),
   /* DPD Runtime Recaliberation INI Parameters END */

  REG_VARIABLE( CFG_SET_TXPOWER_LIMIT2G_NAME , WLAN_PARAM_Integer,
                hdd_config_t, TxPower2g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SET_TXPOWER_LIMIT2G_DEFAULT,
                CFG_SET_TXPOWER_LIMIT2G_MIN,
                CFG_SET_TXPOWER_LIMIT2G_MAX ),

  REG_VARIABLE( CFG_SET_TXPOWER_LIMIT5G_NAME , WLAN_PARAM_Integer,
                hdd_config_t, TxPower5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SET_TXPOWER_LIMIT5G_DEFAULT,
                CFG_SET_TXPOWER_LIMIT5G_MIN,
                CFG_SET_TXPOWER_LIMIT5G_MAX ),

   REG_VARIABLE( CFG_ENABLE_DEBUG_CONNECT_ISSUE, WLAN_PARAM_Integer,
                 hdd_config_t, gEnableDebugLog,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_DEBUG_CONNECT_ISSUE_DEFAULT,
                 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MIN ,
                 CFG_ENABLE_DEBUG_CONNECT_ISSUE_MAX),

   REG_VARIABLE( CFG_ENABLE_SAP_EAPOL_CHECKING, WLAN_PARAM_Integer,
                 hdd_config_t, gEnableSapEapolChecking,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_SAP_EAPOL_CHECKING_DEFAULT,
                 CFG_ENABLE_SAP_EAPOL_CHECKING_MIN ,
                 CFG_ENABLE_SAP_EAPOL_CHECKING_MAX),

   REG_VARIABLE( CFG_RX_HANDLE, WLAN_PARAM_Integer,
                 hdd_config_t, rxhandle,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_RX_HANDLE_DEFAULT,
                 CFG_RX_HANDLE_MIN,
                 CFG_RX_HANDLE_MAX),

   REG_VARIABLE_STRING( CFG_RPS_RX_QUEUE_CPU_MAP_LIST_NAME, WLAN_PARAM_String,
                        hdd_config_t, cpu_map_list,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_RPS_RX_QUEUE_CPU_MAP_LIST_DEFAULT ),

   REG_VARIABLE( CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fDfsPhyerrFilterOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_DEFAULT,
                 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MIN,
                 CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_MAX ),

   REG_VARIABLE( CFG_ENABLE_OVERLAP_CH, WLAN_PARAM_Integer,
                 hdd_config_t, gEnableOverLapCh,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENABLE_OVERLAP_CH_DEFAULT,
                 CFG_ENABLE_OVERLAP_CH_MIN,
                 CFG_ENABLE_OVERLAP_CH_MAX ),

   REG_VARIABLE( CFG_REG_CHANGE_DEF_COUNTRY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, fRegChangeDefCountry,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_REG_CHANGE_DEF_COUNTRY_DEFAULT,
                 CFG_REG_CHANGE_DEF_COUNTRY_MIN,
                 CFG_REG_CHANGE_DEF_COUNTRY_MAX),

   REG_VARIABLE( CFG_SAP_SCAN_BAND_PREFERENCE, WLAN_PARAM_Integer,
                 hdd_config_t, acsScanBandPreference,
#ifndef WLAN_FEATURE_MBSSID
                 VAR_FLAGS_DYNAMIC_CFG |
#endif
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SAP_SCAN_BAND_PREFERENCE_DEFAULT,
                 CFG_SAP_SCAN_BAND_PREFERENCE_MIN,
                 CFG_SAP_SCAN_BAND_PREFERENCE_MAX ),

   REG_VARIABLE( CFG_AUTO_CHANNEL_SELECT_WEIGHT, WLAN_PARAM_HexInteger,
                 hdd_config_t, auto_channel_select_weight,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_AUTO_CHANNEL_SELECT_WEIGHT_DEFAULT,
                 CFG_AUTO_CHANNEL_SELECT_WEIGHT_MIN,
                 CFG_AUTO_CHANNEL_SELECT_WEIGHT_MAX ),

#ifdef QCA_LL_TX_FLOW_CT
   REG_VARIABLE( CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
                 hdd_config_t, TxFlowLowWaterMark,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_FLOW_LWM_DEFAULT,
                 CFG_LL_TX_FLOW_LWM_MIN,
                 CFG_LL_TX_FLOW_LWM_MAX ),

   REG_VARIABLE( CFG_LL_TX_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
                 hdd_config_t, TxFlowHighWaterMarkOffset,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_FLOW_HWM_OFFSET_DEFAULT,
                 CFG_LL_TX_FLOW_HWM_OFFSET_MIN,
                 CFG_LL_TX_FLOW_HWM_OFFSET_MAX ),

   REG_VARIABLE( CFG_LL_TX_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
                 hdd_config_t, TxFlowMaxQueueDepth,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_FLOW_MAX_Q_DEPTH_DEFAULT,
                 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MIN,
                 CFG_LL_TX_FLOW_MAX_Q_DEPTH_MAX ),

   REG_VARIABLE( CFG_LL_TX_LBW_FLOW_LWM, WLAN_PARAM_Integer,
                 hdd_config_t, TxLbwFlowLowWaterMark,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_LWM_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_LWM_MIN,
                 CFG_LL_TX_LBW_FLOW_LWM_MAX ),

   REG_VARIABLE( CFG_LL_TX_LBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
                 hdd_config_t, TxLbwFlowHighWaterMarkOffset,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MIN,
                 CFG_LL_TX_LBW_FLOW_HWM_OFFSET_MAX ),

   REG_VARIABLE( CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
                 hdd_config_t, TxLbwFlowMaxQueueDepth,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_DEFAULT,
                 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MIN,
                 CFG_LL_TX_LBW_FLOW_MAX_Q_DEPTH_MAX ),

   REG_VARIABLE( CFG_LL_TX_HBW_FLOW_LWM, WLAN_PARAM_Integer,
                 hdd_config_t, TxHbwFlowLowWaterMark,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_LWM_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_LWM_MIN,
                 CFG_LL_TX_HBW_FLOW_LWM_MAX ),

   REG_VARIABLE( CFG_LL_TX_HBW_FLOW_HWM_OFFSET, WLAN_PARAM_Integer,
                 hdd_config_t, TxHbwFlowHighWaterMarkOffset,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MIN,
                 CFG_LL_TX_HBW_FLOW_HWM_OFFSET_MAX ),

   REG_VARIABLE( CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH, WLAN_PARAM_Integer,
                 hdd_config_t, TxHbwFlowMaxQueueDepth,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_DEFAULT,
                 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MIN,
                 CFG_LL_TX_HBW_FLOW_MAX_Q_DEPTH_MAX ),
#endif /* QCA_LL_TX_FLOW_CT */

   REG_VARIABLE( CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, nInitialDwellTime,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_INITIAL_DWELL_TIME_DEFAULT,
                 CFG_INITIAL_DWELL_TIME_MIN,
                 CFG_INITIAL_DWELL_TIME_MAX ),

   REG_VARIABLE( CFG_INITIAL_SCAN_NO_DFS_CHNL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, initial_scan_no_dfs_chnl,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_INITIAL_SCAN_NO_DFS_CHNL_DEFAULT,
                 CFG_INITIAL_SCAN_NO_DFS_CHNL_MIN,
                 CFG_INITIAL_SCAN_NO_DFS_CHNL_MAX ),

   REG_VARIABLE( CFG_ACS_BAND_SWITCH_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, acsBandSwitchThreshold,
#ifndef WLAN_FEATURE_MBSSID
                 VAR_FLAGS_DYNAMIC_CFG |
#endif
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_DEFAULT,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_MIN,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer,
                 hdd_config_t, apMaxOffloadPeers,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SAP_MAX_OFFLOAD_PEERS_DEFAULT,
                 CFG_SAP_MAX_OFFLOAD_PEERS_MIN,
                 CFG_SAP_MAX_OFFLOAD_PEERS_MAX ),

   REG_VARIABLE( CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS, WLAN_PARAM_Integer,
                 hdd_config_t, apMaxOffloadReorderBuffs,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_DEFAULT,
                 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MIN,
                 CFG_SAP_MAX_OFFLOAD_REORDER_BUFFS_MAX ),

   REG_VARIABLE( CFG_ADVERTISE_CONCURRENT_OPERATION_NAME , WLAN_PARAM_Integer,
                 hdd_config_t, advertiseConcurrentOperation,
                 VAR_FLAGS_OPTIONAL,
                 CFG_ADVERTISE_CONCURRENT_OPERATION_DEFAULT,
                 CFG_ADVERTISE_CONCURRENT_OPERATION_MIN,
                 CFG_ADVERTISE_CONCURRENT_OPERATION_MAX ),

   REG_VARIABLE( CFG_ENABLE_MEMORY_DEEP_SLEEP, WLAN_PARAM_Integer,
                 hdd_config_t, enableMemDeepSleep,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_MEMORY_DEEP_SLEEP_DEFAULT,
                 CFG_ENABLE_MEMORY_DEEP_SLEEP_MIN,
                 CFG_ENABLE_MEMORY_DEEP_SLEEP_MAX ),

   REG_VARIABLE( CFG_DEFAULT_RATE_INDEX_24GH, WLAN_PARAM_Integer,
                 hdd_config_t, defaultRateIndex24Ghz,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEFAULT_RATE_INDEX_24GH_DEFAULT,
                 CFG_DEFAULT_RATE_INDEX_24GH_MIN,
                 CFG_DEFAULT_RATE_INDEX_24GH_MAX ),

   REG_VARIABLE_STRING( CFG_OVERRIDE_COUNTRY_CODE, WLAN_PARAM_String,
                        hdd_config_t, overrideCountryCode,
                        VAR_FLAGS_OPTIONAL,
                        (void *)CFG_OVERRIDE_COUNTRY_CODE_DEFAULT),

   REG_VARIABLE( CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, debugP2pRemainOnChannel,
                 VAR_FLAGS_OPTIONAL,
                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT,
                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN,
                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX ),

   REG_VARIABLE( CFG_ENABLE_PACKET_LOG, WLAN_PARAM_Integer,
                 hdd_config_t, enablePacketLog,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_PACKET_LOG_DEFAULT,
                 CFG_ENABLE_PACKET_LOG_MIN,
                 CFG_ENABLE_PACKET_LOG_MAX ),
   REG_VARIABLE( CFG_EDCA_FROM_HOSTAPD,  WLAN_PARAM_Integer,
                 hdd_config_t, enable_hostapd_edca_local,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_EDCA_FROM_HOSTAPD_DEFAULT,
                 CFG_EDCA_FROM_HOSTAPD_MIN,
                 CFG_EDCA_FROM_HOSTAPD_MAX),

#ifdef WLAN_FEATURE_ROAM_OFFLOAD
   REG_VARIABLE( CFG_ROAMING_OFFLOAD_NAME,  WLAN_PARAM_Integer,
                 hdd_config_t, isRoamOffloadEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ROAMING_OFFLOAD_DEFAULT,
                 CFG_ROAMING_OFFLOAD_MIN,
                 CFG_ROAMING_OFFLOAD_MAX),
#endif
#ifdef FEATURE_BUS_BANDWIDTH
   REG_VARIABLE( CFG_BUS_BANDWIDTH_HIGH_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, busBandwidthHighThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_DEFAULT,
                 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MIN,
                 CFG_BUS_BANDWIDTH_HIGH_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, busBandwidthMediumThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_DEFAULT,
                 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MIN,
                 CFG_BUS_BANDWIDTH_MEDIUM_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_BUS_BANDWIDTH_LOW_THRESHOLD, WLAN_PARAM_Integer,
                 hdd_config_t, busBandwidthLowThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_DEFAULT,
                 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MIN,
                 CFG_BUS_BANDWIDTH_LOW_THRESHOLD_MAX ),

   REG_VARIABLE( CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL, WLAN_PARAM_Integer,
                 hdd_config_t, busBandwidthComputeInterval,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_DEFAULT,
                 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MIN,
                 CFG_BUS_BANDWIDTH_COMPUTE_INTERVAL_MAX),

   REG_VARIABLE( CFG_TCP_DELACK_THRESHOLD_HIGH, WLAN_PARAM_Integer,
                hdd_config_t, tcpDelackThresholdHigh,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TCP_DELACK_THRESHOLD_HIGH_DEFAULT,
                CFG_TCP_DELACK_THRESHOLD_HIGH_MIN,
                CFG_TCP_DELACK_THRESHOLD_HIGH_MAX ),

   REG_VARIABLE( CFG_TCP_DELACK_THRESHOLD_LOW, WLAN_PARAM_Integer,
                hdd_config_t, tcpDelackThresholdLow,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TCP_DELACK_THRESHOLD_LOW_DEFAULT,
                CFG_TCP_DELACK_THRESHOLD_LOW_MIN,
                CFG_TCP_DELACK_THRESHOLD_LOW_MAX ),

   REG_VARIABLE( CFG_TCP_DELACK_TIMER_COUNT, WLAN_PARAM_Integer,
                hdd_config_t, tcpDelackTimerCount,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TCP_DELACK_TIMER_COUNT_DEFAULT,
                CFG_TCP_DELACK_TIMER_COUNT_MIN,
                CFG_TCP_DELACK_TIMER_COUNT_MAX ),

    REG_VARIABLE( CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, tcp_tx_high_tput_thres,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_DEFAULT,
                 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MIN,
                 CFG_TCP_TX_HIGH_TPUT_THRESHOLD_MAX ),
#endif
#ifdef QCA_SUPPORT_TXRX_HL_BUNDLE

    REG_VARIABLE( CFG_PKT_BUNDLE_THRESHOLD_HIGH, WLAN_PARAM_Integer,
                 hdd_config_t, pkt_bundle_threshold_high,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PKT_BUNDLE_THRESHOLD_HIGH_DEFAULT,
                 CFG_PKT_BUNDLE_THRESHOLD_HIGH_MIN,
                 CFG_PKT_BUNDLE_THRESHOLD_HIGH_MAX ),

    REG_VARIABLE( CFG_PKT_BUNDLE_THRESHOLD_LOW, WLAN_PARAM_Integer,
                 hdd_config_t, pkt_bundle_threshold_low,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PKT_BUNDLE_THRESHOLD_LOW_DEFAULT,
                 CFG_PKT_BUNDLE_THRESHOLD_LOW_MIN,
                 CFG_PKT_BUNDLE_THRESHOLD_LOW_MAX ),

    REG_VARIABLE( CFG_PKT_BUNDLE_TIMER_IN_MS, WLAN_PARAM_Integer,
                 hdd_config_t, pkt_bundle_timer_value,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PKT_BUNDLE_TIMER_IN_MS_DEFAULT,
                 CFG_PKT_BUNDLE_TIMER_IN_MS_MIN,
                 CFG_PKT_BUNDLE_TIMER_IN_MS_MAX ),

    REG_VARIABLE( CFG_PKT_BUNDLE_SIZE, WLAN_PARAM_Integer,
                 hdd_config_t, pkt_bundle_size,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_PKT_BUNDLE_SIZE_DEFAULT,
                 CFG_PKT_BUNDLE_SIZE_MIN,
                 CFG_PKT_BUNDLE_SIZE_MAX ),

#endif

#ifdef QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK

    REG_VARIABLE(CFG_DEL_ACK_THRESHOLD_HIGH, WLAN_PARAM_Integer,
                 hdd_config_t, del_ack_threshold_high,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEL_ACK_THRESHOLD_HIGH_DEFAULT,
                 CFG_DEL_ACK_THRESHOLD_HIGH_MIN,
                 CFG_DEL_ACK_THRESHOLD_HIGH_MAX),

    REG_VARIABLE(CFG_DEL_ACK_THRESHOLD_LOW, WLAN_PARAM_Integer,
                 hdd_config_t, del_ack_threshold_low,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEL_ACK_THRESHOLD_LOW_DEFAULT,
                 CFG_DEL_ACK_THRESHOLD_LOW_MIN,
                 CFG_DEL_ACK_THRESHOLD_LOW_MAX),

    REG_VARIABLE(CFG_DEL_ACK_TIMER_IN_MS, WLAN_PARAM_Integer,
                 hdd_config_t, del_ack_timer_value,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEL_ACK_TIMER_IN_MS_DEFAULT,
                 CFG_DEL_ACK_TIMER_IN_MS_MIN,
                 CFG_DEL_ACK_TIMER_IN_MS_MAX),

    REG_VARIABLE(CFG_DEL_ACK_PKT_COUNT, WLAN_PARAM_Integer,
                 hdd_config_t, del_ack_pkt_count,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEL_ACK_PKT_COUNT_DEFAULT,
                 CFG_DEL_ACK_PKT_COUNT_MIN,
                 CFG_DEL_ACK_PKT_COUNT_MAX),

    REG_VARIABLE(CFG_DEL_ACK_ENABLE, WLAN_PARAM_Integer,
                 hdd_config_t, del_ack_enable,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DEL_ACK_ENABLE_DEFAULT,
                 CFG_DEL_ACK_ENABLE_MIN,
                 CFG_DEL_ACK_ENABLE_MAX),
#endif

   REG_VARIABLE( CFG_ENABLE_FW_LOG_TYPE , WLAN_PARAM_Integer,
                hdd_config_t, enableFwLogType,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_FW_LOG_TYPE_DEFAULT,
                CFG_ENABLE_FW_LOG_TYPE_MIN,
                CFG_ENABLE_FW_LOG_TYPE_MAX ),

   REG_VARIABLE( CFG_ENABLE_FW_DEBUG_LOG_LEVEL, WLAN_PARAM_Integer,
                hdd_config_t, enableFwLogLevel,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_FW_DEBUG_LOG_LEVEL_DEFAULT,
                CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MIN,
                CFG_ENABLE_FW_DEBUG_LOG_LEVEL_MAX ),

   REG_VARIABLE( CFG_ENABLE_FW_RTS_PROFILE, WLAN_PARAM_Integer,
                hdd_config_t, rts_profile,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_FW_RTS_PROFILE_DEFAULT,
                CFG_ENABLE_FW_RTS_PROFILE_MIN,
                CFG_ENABLE_FW_RTS_PROFILE_MAX ),

   REG_VARIABLE_STRING( CFG_ENABLE_FW_MODULE_LOG_LEVEL, WLAN_PARAM_String,
                hdd_config_t, enableFwModuleLogLevel,
                VAR_FLAGS_OPTIONAL,
                (void *) CFG_ENABLE_FW_MODULE_LOG_DEFAULT),



#ifdef WLAN_FEATURE_11W
   REG_VARIABLE(CFG_PMF_SA_QUERY_MAX_RETRIES_NAME, WLAN_PARAM_Integer,
                hdd_config_t, pmfSaQueryMaxRetries,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PMF_SA_QUERY_MAX_RETRIES_DEFAULT,
                CFG_PMF_SA_QUERY_MAX_RETRIES_MIN,
                CFG_PMF_SA_QUERY_MAX_RETRIES_MAX ),

   REG_VARIABLE(CFG_PMF_SA_QUERY_RETRY_INTERVAL_NAME, WLAN_PARAM_Integer,
                hdd_config_t, pmfSaQueryRetryInterval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PMF_SA_QUERY_RETRY_INTERVAL_DEFAULT,
                CFG_PMF_SA_QUERY_RETRY_INTERVAL_MIN,
                CFG_PMF_SA_QUERY_RETRY_INTERVAL_MAX ),
#endif
   REG_VARIABLE(CFG_MAX_CONCURRENT_CONNECTIONS_NAME, WLAN_PARAM_Integer,
                hdd_config_t, gMaxConcurrentActiveSessions,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MAX_CONCURRENT_CONNECTIONS_DEFAULT,
                CFG_MAX_CONCURRENT_CONNECTIONS_MIN,
                CFG_MAX_CONCURRENT_CONNECTIONS_MAX ),

#ifdef FEATURE_GREEN_AP
   REG_VARIABLE(CFG_ENABLE_GREEN_AP_FEATURE, WLAN_PARAM_Integer,
                hdd_config_t, enableGreenAP,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_GREEN_AP_FEATURE_DEFAULT,
                CFG_ENABLE_GREEN_AP_FEATURE_MIN,
                CFG_ENABLE_GREEN_AP_FEATURE_MAX),

   REG_VARIABLE(CFG_ENABLE_EGAP_ENABLE_FEATURE, WLAN_PARAM_Integer,
                hdd_config_t, enable_egap,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_EGAP_ENABLE_FEATURE_DEFAULT,
                CFG_ENABLE_EGAP_ENABLE_FEATURE_MIN,
                CFG_ENABLE_EGAP_ENABLE_FEATURE_MAX),

   REG_VARIABLE(CFG_ENABLE_EGAP_INACT_TIME_FEATURE, WLAN_PARAM_Integer,
                hdd_config_t, egap_inact_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_EGAP_INACT_TIME_FEATURE_DEFAULT,
                CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MIN,
                CFG_ENABLE_EGAP_INACT_TIME_FEATURE_MAX),

   REG_VARIABLE(CFG_ENABLE_EGAP_WAIT_TIME_FEATURE, WLAN_PARAM_Integer,
                hdd_config_t, egap_wait_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_DEFAULT,
                CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MIN,
                CFG_ENABLE_EGAP_WAIT_TIME_FEATURE_MAX),

   REG_VARIABLE(CFG_ENABLE_EGAP_FLAGS_FEATURE, WLAN_PARAM_Integer,
                hdd_config_t, egap_feature_flag,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_EGAP_FLAGS_FEATURE_DEFAULT,
                CFG_ENABLE_EGAP_FLAGS_FEATURE_MIN,
                CFG_ENABLE_EGAP_FLAGS_FEATURE_MAX),
#endif

   REG_VARIABLE(CFG_ENABLE_CRASH_INJECT, WLAN_PARAM_Integer,
                 hdd_config_t, crash_inject_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_CRASH_INJECT_DEFAULT,
                 CFG_ENABLE_CRASH_INJECT_MIN,
                 CFG_ENABLE_CRASH_INJECT_MAX),

   REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
                hdd_config_t, ignoreCAC,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_IGNORE_CAC_DEFAULT,
                CFG_IGNORE_CAC_MIN,
                CFG_IGNORE_CAC_MAX),

   REG_VARIABLE(CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_NAME, WLAN_PARAM_Integer,
                hdd_config_t, IsSapDfsChSifsBurstEnabled,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_DEFAULT,
                CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MIN,
                CFG_ENABLE_SAP_DFS_CH_SIFS_BURST_MAX ),

   REG_VARIABLE(CFG_DFS_RADAR_PRI_MULTIPLIER_NAME, WLAN_PARAM_Integer,
                hdd_config_t, dfsRadarPriMultiplier,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DFS_RADAR_PRI_MULTIPLIER_DEFAULT,
                CFG_DFS_RADAR_PRI_MULTIPLIER_MIN,
                CFG_DFS_RADAR_PRI_MULTIPLIER_MAX),

   REG_VARIABLE( CFG_REORDER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
                        hdd_config_t, reorderOffloadSupport,
                        VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                        CFG_REORDER_OFFLOAD_SUPPORT_DEFAULT,
                        CFG_REORDER_OFFLOAD_SUPPORT_MIN,
                        CFG_REORDER_OFFLOAD_SUPPORT_MAX ),
#ifdef IPA_UC_OFFLOAD
   REG_VARIABLE( CFG_IPA_UC_OFFLOAD_ENABLED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaUcOffloadEnabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_IPA_UC_OFFLOAD_ENABLED_DEFAULT,
                 CFG_IPA_UC_OFFLOAD_ENABLED_MIN,
                 CFG_IPA_UC_OFFLOAD_ENABLED_MAX ),

   REG_VARIABLE( CFG_IPA_UC_TX_BUF_COUNT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaUcTxBufCount,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_IPA_UC_TX_BUF_COUNT_DEFAULT,
                 CFG_IPA_UC_TX_BUF_COUNT_MIN,
                 CFG_IPA_UC_TX_BUF_COUNT_MAX ),

   REG_VARIABLE( CFG_IPA_UC_TX_BUF_SIZE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaUcTxBufSize,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_IPA_UC_TX_BUF_SIZE_DEFAULT,
                 CFG_IPA_UC_TX_BUF_SIZE_MIN,
                 CFG_IPA_UC_TX_BUF_SIZE_MAX ),

   REG_VARIABLE( CFG_IPA_UC_RX_IND_RING_COUNT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaUcRxIndRingCount,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_IPA_UC_RX_IND_RING_COUNT_DEFAULT,
                 CFG_IPA_UC_RX_IND_RING_COUNT_MIN,
                 CFG_IPA_UC_RX_IND_RING_COUNT_MAX ),

   REG_VARIABLE( CFG_IPA_UC_TX_PARTITION_BASE_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, IpaUcTxPartitionBase,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_IPA_UC_TX_PARTITION_BASE_DEFAULT,
                 CFG_IPA_UC_TX_PARTITION_BASE_MIN,
                 CFG_IPA_UC_TX_PARTITION_BASE_MAX ),
#endif /* IPA_UC_OFFLOAD */
#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
   REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wlanLoggingEnable,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WLAN_LOGGING_SUPPORT_DEFAULT,
                CFG_WLAN_LOGGING_SUPPORT_DISABLE,
                CFG_WLAN_LOGGING_SUPPORT_ENABLE ),

   REG_VARIABLE(CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wlanLoggingFEToConsole,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DEFAULT,
                CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_DISABLE,
                CFG_WLAN_LOGGING_FE_CONSOLE_SUPPORT_ENABLE ),

   REG_VARIABLE(CFG_WLAN_LOGGING_NUM_BUF_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wlanLoggingNumBuf,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WLAN_LOGGING_NUM_BUF_DEFAULT,
                CFG_WLAN_LOGGING_NUM_BUF_MIN,
                CFG_WLAN_LOGGING_NUM_BUF_MAX ),
#endif /* WLAN_LOGGING_SOCK_SVC_ENABLE */

   REG_VARIABLE( CFG_ENABLE_SIFS_BURST, WLAN_PARAM_Integer,
              hdd_config_t, enableSifsBurst,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_SIFS_BURST_DEFAULT,
              CFG_ENABLE_SIFS_BURST_MIN,
              CFG_ENABLE_SIFS_BURST_MAX ),

#ifdef WLAN_FEATURE_LPSS
   REG_VARIABLE(CFG_ENABLE_LPASS_SUPPORT, WLAN_PARAM_Integer,
               hdd_config_t, enablelpasssupport,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_ENABLE_LPASS_SUPPORT_DEFAULT,
               CFG_ENABLE_LPASS_SUPPORT_MIN,
               CFG_ENABLE_LPASS_SUPPORT_MAX),
#endif

#ifdef WLAN_FEATURE_NAN
   REG_VARIABLE(CFG_ENABLE_NAN_SUPPORT, WLAN_PARAM_Integer,
               hdd_config_t, enable_nan_support,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_ENABLE_NAN_SUPPORT_DEFAULT,
               CFG_ENABLE_NAN_SUPPORT_MIN,
               CFG_ENABLE_NAN_SUPPORT_MAX),
#endif

   REG_VARIABLE( CFG_ENABLE_SELF_RECOVERY, WLAN_PARAM_Integer,
              hdd_config_t, enableSelfRecovery,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_SELF_RECOVERY_DEFAULT,
              CFG_ENABLE_SELF_RECOVERY_MIN,
              CFG_ENABLE_SELF_RECOVERY_MAX ),

   REG_VARIABLE( CFG_ENABLE_AC_TXQ_OPTIMIZE, WLAN_PARAM_HexInteger,
              hdd_config_t, enable_ac_txq_optimize,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_AC_TXQ_OPTIMIZE_DEFAULT,
              CFG_ENABLE_AC_TXQ_OPTIMIZE_MIN,
              CFG_ENABLE_AC_TXQ_OPTIMIZE_MAX ),

#ifdef FEATURE_WLAN_FORCE_SAP_SCC
   REG_VARIABLE(CFG_SAP_SCC_CHAN_AVOIDANCE, WLAN_PARAM_Integer,
                 hdd_config_t, SapSccChanAvoidance,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_SAP_SCC_CHAN_AVOIDANCE_DEFAULT,
                 CFG_SAP_SCC_CHAN_AVOIDANCE_MIN,
                 CFG_SAP_SCC_CHAN_AVOIDANCE_MAX),
#endif /* FEATURE_WLAN_FORCE_SAP_SCC */

   REG_VARIABLE( CFG_ENABLE_SAP_SUSPEND, WLAN_PARAM_Integer,
               hdd_config_t, enableSapSuspend,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_ENABLE_SAP_SUSPEND_DEFAULT,
               CFG_ENABLE_SAP_SUSPEND_MIN,
               CFG_ENABLE_SAP_SUSPEND_MAX ),

#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
   REG_VARIABLE( CFG_EXTWOW_GO_TO_SUSPEND, WLAN_PARAM_Integer,
              hdd_config_t, extWowGotoSuspend,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_GO_TO_SUSPEND_DEFAULT,
              CFG_EXTWOW_GO_TO_SUSPEND_MIN,
              CFG_EXTWOW_GO_TO_SUSPEND_MAX ),

   REG_VARIABLE( CFG_EXTWOW_APP1_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp1WakeupPinNumber,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_DEFAULT,
              CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MIN,
              CFG_EXTWOW_APP1_WAKE_PIN_NUMBER_MAX ),

   REG_VARIABLE( CFG_EXTWOW_APP2_WAKE_PIN_NUMBER, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2WakeupPinNumber,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_DEFAULT,
              CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MIN,
              CFG_EXTWOW_APP2_WAKE_PIN_NUMBER_MAX ),

   REG_VARIABLE( CFG_EXTWOW_KA_INIT_PING_INTERVAL, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2KAInitPingInterval,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_KA_INIT_PING_INTERVAL_DEFAULT,
              CFG_EXTWOW_KA_INIT_PING_INTERVAL_MIN,
              CFG_EXTWOW_KA_INIT_PING_INTERVAL_MAX ),

   REG_VARIABLE( CFG_EXTWOW_KA_MIN_PING_INTERVAL, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2KAMinPingInterval,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_KA_MIN_PING_INTERVAL_DEFAULT,
              CFG_EXTWOW_KA_MIN_PING_INTERVAL_MIN,
              CFG_EXTWOW_KA_MIN_PING_INTERVAL_MAX ),

   REG_VARIABLE( CFG_EXTWOW_KA_MAX_PING_INTERVAL, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2KAMaxPingInterval,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_KA_MAX_PING_INTERVAL_DEFAULT,
              CFG_EXTWOW_KA_MAX_PING_INTERVAL_MIN,
              CFG_EXTWOW_KA_MAX_PING_INTERVAL_MAX ),

   REG_VARIABLE( CFG_EXTWOW_KA_INC_PING_INTERVAL, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2KAIncPingInterval,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_KA_INC_PING_INTERVAL_DEFAULT,
              CFG_EXTWOW_KA_INC_PING_INTERVAL_MIN,
              CFG_EXTWOW_KA_INC_PING_INTERVAL_MAX ),

   REG_VARIABLE( CFG_EXTWOW_TCP_SRC_PORT, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2TcpSrcPort,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_TCP_SRC_PORT_DEFAULT,
              CFG_EXTWOW_TCP_SRC_PORT_MIN,
              CFG_EXTWOW_TCP_SRC_PORT_MAX ),

   REG_VARIABLE( CFG_EXTWOW_TCP_DST_PORT, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2TcpDstPort,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_TCP_DST_PORT_DEFAULT,
              CFG_EXTWOW_TCP_DST_PORT_MIN,
              CFG_EXTWOW_TCP_DST_PORT_MAX ),

   REG_VARIABLE( CFG_EXTWOW_TCP_TX_TIMEOUT, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2TcpTxTimeout,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_TCP_TX_TIMEOUT_DEFAULT,
              CFG_EXTWOW_TCP_TX_TIMEOUT_MIN,
              CFG_EXTWOW_TCP_TX_TIMEOUT_MAX ),

   REG_VARIABLE( CFG_EXTWOW_TCP_RX_TIMEOUT, WLAN_PARAM_Integer,
              hdd_config_t, extWowApp2TcpRxTimeout,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_EXTWOW_TCP_RX_TIMEOUT_DEFAULT,
              CFG_EXTWOW_TCP_RX_TIMEOUT_MIN,
              CFG_EXTWOW_TCP_RX_TIMEOUT_MAX ),
#endif
   REG_VARIABLE( CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_NAME, WLAN_PARAM_Integer,
              hdd_config_t, gEnableDeauthToDisassocMap,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_DEFAULT,
              CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MIN,
              CFG_ENABLE_DEAUTH_TO_DISASSOC_MAP_MAX ),

#ifdef DHCP_SERVER_OFFLOAD
   REG_VARIABLE( CFG_DHCP_SERVER_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enableDHCPServerOffload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MIN,
                 CFG_DHCP_SERVER_OFFLOAD_SUPPORT_MAX ),

   REG_VARIABLE( CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, dhcpMaxNumClients,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MIN,
                 CFG_DHCP_SERVER_OFFLOAD_NUM_CLIENT_MAX ),

   REG_VARIABLE( CFG_DHCP_SERVER_OFFLOAD_CLIENT_IPBASE_NAME,
                 WLAN_PARAM_Integer, hdd_config_t, dhcp_client_start_ip,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_CLIENT_IPBASE_DEFAULT,
                 CFG_DHCP_SERVER_OFFLOAD_CLIENT_IPBASE_MIN,
                 CFG_DHCP_SERVER_OFFLOAD_CLIENT_IPBASE_MAX ),

   REG_VARIABLE_STRING( CFG_DHCP_SERVER_IP_NAME, WLAN_PARAM_String,
                 hdd_config_t, dhcpServerIP,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_DHCP_SERVER_IP_DEFAULT ),
#endif /* DHCP_SERVER_OFFLOAD */

   REG_VARIABLE(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION, WLAN_PARAM_Integer,
                hdd_config_t, sendDeauthBeforeCon,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_DEFAULT,
                CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MIN,
                CFG_ENABLE_DEAUTH_BEFORE_CONNECTION_MAX),

   REG_VARIABLE( CFG_IGNORE_PEER_ERP_INFO_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, ignorePeerErpInfo,
                  VAR_FLAGS_OPTIONAL |
                  VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_IGNORE_PEER_ERP_INFO_DEFAULT,
                  CFG_IGNORE_PEER_ERP_INFO_MIN,
                  CFG_IGNORE_PEER_ERP_INFO_MAX ),

   REG_VARIABLE( CFG_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer,
                 hdd_config_t, enable_mac_spoofing,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_MAC_ADDR_SPOOFING_DEFAULT,
                 CFG_ENABLE_MAC_ADDR_SPOOFING_MIN,
                 CFG_ENABLE_MAC_ADDR_SPOOFING_MAX ),
#ifdef IPA_UC_STA_OFFLOAD
   REG_VARIABLE( CFG_IPA_UC_STA_OFFLOAD, WLAN_PARAM_Integer,
              hdd_config_t, ipa_uc_sta_offload,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_IPA_UC_STA_OFFLOAD_DEFAULT,
              CFG_IPA_UC_STA_OFFLOAD_MIN,
              CFG_IPA_UC_STA_OFFLOAD_MAX ),
#endif

   REG_VARIABLE( CFG_ENABLE_CUSTOM_CONC_RULE1_NAME,  WLAN_PARAM_Integer,
                 hdd_config_t, conc_custom_rule1,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_DEFAULT,
                 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MIN,
                 CFG_ENABLE_CUSTOM_CONC_RULE1_NAME_MAX),

   REG_VARIABLE( CFG_ENABLE_CUSTOM_CONC_RULE2_NAME,  WLAN_PARAM_Integer,
                 hdd_config_t, conc_custom_rule2,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_DEFAULT,
                 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MIN,
                 CFG_ENABLE_CUSTOM_CONC_RULE2_NAME_MAX),

   REG_VARIABLE( CFG_ENABLE_STA_CONNECTION_IN_5GHZ,  WLAN_PARAM_Integer,
                 hdd_config_t, is_sta_connection_in_5gz_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_DEFAULT,
                 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MIN,
                 CFG_ENABLE_STA_CONNECTION_IN_5GHZ_MAX),

#ifdef MDNS_OFFLOAD
   REG_VARIABLE( CFG_MDNS_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, enable_mdns_offload,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MDNS_OFFLOAD_SUPPORT_DEFAULT,
                 CFG_MDNS_OFFLOAD_SUPPORT_MIN,
                 CFG_MDNS_OFFLOAD_SUPPORT_MAX ),

   REG_VARIABLE_STRING( CFG_MDNS_FQDN_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_fqdn,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_FQDN_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_UNIQUE_FQDN_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_uniquefqdn,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_UNIQUE_FQDN_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_A_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_a,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_A_DEFAULT ),

   REG_VARIABLE( CFG_MDNS_RESPONSE_TYPE_A_IPV4_NAME, WLAN_PARAM_HexInteger,
                 hdd_config_t, mdns_resp_type_a_ipv4,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_A_IPV4_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_A_IPV4_MIN,
                 CFG_MDNS_RESPONSE_TYPE_A_IPV4_MAX ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_TXT_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_txt,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_TXT_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_TXT_CNT_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_txt_content,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_TXT_CNT_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_PTR_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_ptr,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_PTR_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_PTR_DN_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_ptr_dname,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_PTR_DN_DEFAULT ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_SRV_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_srv,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_SRV_DEFAULT ),

   REG_VARIABLE( CFG_MDNS_RESPONSE_TYPE_SRV_PRIORITY_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, mdns_resp_type_srv_priority,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PRIORITY_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PRIORITY_MIN,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PRIORITY_MAX ),

   REG_VARIABLE( CFG_MDNS_RESPONSE_TYPE_SRV_WEIGHT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, mdns_resp_type_srv_weight,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_WEIGHT_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_WEIGHT_MIN,
                 CFG_MDNS_RESPONSE_TYPE_SRV_WEIGHT_MAX ),

   REG_VARIABLE( CFG_MDNS_RESPONSE_TYPE_SRV_PORT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, mdns_resp_type_srv_port,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PORT_DEFAULT,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PORT_MIN,
                 CFG_MDNS_RESPONSE_TYPE_SRV_PORT_MAX ),

   REG_VARIABLE_STRING( CFG_MDNS_RESPONSE_TYPE_SRV_TGT_NAME, WLAN_PARAM_String,
                 hdd_config_t, mdns_resp_type_srv_target,
                 VAR_FLAGS_OPTIONAL,
                 (void *) CFG_MDNS_RESPONSE_TYPE_SRV_TGT_DEFAULT ),
#endif /* MDNS_OFFLOAD */

#ifdef SAP_AUTH_OFFLOAD
   REG_VARIABLE( CFG_ENABLE_SAP_AUTH_OFL_NAME, WLAN_PARAM_Integer,
              hdd_config_t, enable_sap_auth_offload,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_ENABLE_SAP_AUTH_OFL_DEFAULT,
              CFG_ENABLE_SAP_AUTH_OFL_MIN,
              CFG_ENABLE_SAP_AUTH_OFL_MAX ),

   REG_VARIABLE( CFG_SAP_AUTH_OFL_SECURITY_TYPE_NAME, WLAN_PARAM_Integer,
              hdd_config_t, sap_auth_offload_sec_type,
              VAR_FLAGS_OPTIONAL | CFG_SAP_AUTH_OFL_SECURITY_TYPE_DEFAULT,
              CFG_SAP_AUTH_OFL_SECURITY_TYPE_DEFAULT,
              CFG_SAP_AUTH_OFL_SECURITY_TYPE_MIN,
              CFG_SAP_AUTH_OFL_SECURITY_TYPE_MAX ),

   REG_VARIABLE_STRING( CFG_SAP_AUTH_OFL_KEY_NAME, WLAN_PARAM_String,
              hdd_config_t, sap_auth_offload_key,
              VAR_FLAGS_OPTIONAL,
              (void *) CFG_SAP_AUTH_OFL_KEY_DEFAULT ),

   REG_VARIABLE( CFG_CONNECT_FAIL_COUNT_NAME, WLAN_PARAM_Integer,
              hdd_config_t, connect_fail_count,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_CONNECT_FAIL_COUNT_DEFAULT,
              CFG_CONNECT_FAIL_COUNT_MIN,
              CFG_CONNECT_FAIL_COUNT_MAX ),

   REG_VARIABLE( CFG_CONNECT_FAIL_DURATION_NAME, WLAN_PARAM_Integer,
              hdd_config_t, connect_fail_duration,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_CONNECT_FAIL_DURATION_DEFAULT,
              CFG_CONNECT_FAIL_DURATION_MIN,
              CFG_CONNECT_FAIL_DURATION_MAX ),

   REG_VARIABLE( CFG_CONNECT_BLOCK_DURATION_NAME, WLAN_PARAM_Integer,
              hdd_config_t, connect_block_duration,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_CONNECT_BLOCK_DURATION_DEFAULT,
              CFG_CONNECT_BLOCK_DURATION_MIN,
              CFG_CONNECT_BLOCK_DURATION_MAX ),
#endif /* SAP_AUTH_OFFLOAD */

#ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN
   REG_VARIABLE( CFG_SAP_CHANNEL_SWITCH_WITH_CSA_NAME, WLAN_PARAM_Integer,
              hdd_config_t, sap_ch_switch_with_csa,
              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
              CFG_SAP_CHANNEL_SWITCH_WITH_CSA_DEFAULT,
              CFG_SAP_CHANNEL_SWITCH_WITH_CSA_MIN,
              CFG_SAP_CHANNEL_SWITCH_WITH_CSA_MAX ),

#endif//#ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN

   REG_VARIABLE(CFG_DOT11P_MODE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, dot11p_mode,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DOT11P_MODE_DEFAULT,
                CFG_DOT11P_MODE_MIN,
                CFG_DOT11P_MODE_MAX),

   REG_VARIABLE( CFG_ENABLE_RAMDUMP_COLLECTION, WLAN_PARAM_Integer,
                 hdd_config_t, is_ramdump_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_ENABLE_RAMDUMP_COLLECTION_DEFAULT,
                 CFG_ENABLE_RAMDUMP_COLLECTION_MIN,
                 CFG_ENABLE_RAMDUMP_COLLECTION_MAX ),

   REG_VARIABLE(CFG_SAP_DOT11MC, WLAN_PARAM_Integer,
                hdd_config_t, sap_dot11mc,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_DOT11MC_DEFAULT,
                CFG_SAP_DOT11MC_MIN,
                CFG_SAP_DOT11MC_MAX ),

   REG_VARIABLE( CFG_STA_MIRACAST_MCC_REST_TIME_VAL, WLAN_PARAM_Integer,
                 hdd_config_t, sta_miracast_mcc_rest_time_val,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_DEFAULT,
                 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MIN,
                 CFG_STA_MIRACAST_MCC_REST_TIME_VAL_MAX ),

#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
   REG_VARIABLE(CFG_SAP_MCC_CHANNEL_AVOIDANCE_NAME,
                WLAN_PARAM_Integer,
                hdd_config_t,
                sap_channel_avoidance,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
                CFG_SAP_MCC_CHANNEL_AVOIDANCE_DEFAULT,
                CFG_SAP_MCC_CHANNEL_AVOIDANCE_MIN,
                CFG_SAP_MCC_CHANNEL_AVOIDANCE_MAX ),
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */

   REG_VARIABLE(CFG_SAP_P2P_11AC_OVERRIDE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sap_p2p_11ac_override,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_P2P_11AC_OVERRIDE_DEFAULT,
                CFG_SAP_P2P_11AC_OVERRIDE_MIN,
                CFG_SAP_P2P_11AC_OVERRIDE_MAX),

   REG_VARIABLE(CFG_ENABLE_NON_DFS_CHAN_ON_RADAR, WLAN_PARAM_Integer,
                hdd_config_t, prefer_non_dfs_on_radar,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_DEFAULT,
                CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MIN,
                CFG_ENABLE_NON_DFS_CHAN_ON_RADAR_MAX),
/* For P2P */
   REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_P2P, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_p2p_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_MIN,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_P2P, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_p2p_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MIN,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_MAX),
/* For STA */
   REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_sta_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_STA_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_STA_MIN,
                CFG_BTC_BT_INTERVAL_PAGE_STA_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_sta_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_STA_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_STA_MIN,
                CFG_BTC_WLAN_INTERVAL_PAGE_STA_MAX),
/* For SAP */
   REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_SAP, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_sap_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_SAP_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_SAP_MIN,
                CFG_BTC_BT_INTERVAL_PAGE_SAP_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_SAP, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_sap_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_SAP_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MIN,
                CFG_BTC_WLAN_INTERVAL_PAGE_SAP_MAX),

/* During WLAN Conn */
   REG_VARIABLE(CFG_BTC_WLAN_CONN_PARAM0, WLAN_PARAM_Integer,
                hdd_config_t, coex_config_wlan_conn_val0,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_CONN_PARAM0_DEFAULT,
                CFG_BTC_WLAN_CONN_PARAM0_MIN,
                CFG_BTC_WLAN_CONN_PARAM0_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_CONN_PARAM1, WLAN_PARAM_Integer,
                hdd_config_t, coex_config_wlan_conn_val1,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_CONN_PARAM1_DEFAULT,
                CFG_BTC_WLAN_CONN_PARAM1_MIN,
                CFG_BTC_WLAN_CONN_PARAM1_MAX),

   REG_VARIABLE(CFG_BTC_DYNAMIC_WLAN_BT_COEX, WLAN_PARAM_Integer,
                hdd_config_t, dynamic_wlan_bt_coex,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_DYNAMIC_WLAN_BT_COEX_DEFAULT,
                CFG_BTC_DYNAMIC_WLAN_BT_COEX_MIN,
                CFG_BTC_DYNAMIC_WLAN_BT_COEX_MAX),

   REG_VARIABLE(CFG_BTC_ANTENNA_ISOLATION, WLAN_PARAM_Integer,
                hdd_config_t, antenna_isolation,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_ANTENNA_ISOLATION_DEFAULT,
                CFG_BTC_ANTENNA_ISOLATION_MIN,
                CFG_BTC_ANTENNA_ISOLATION_MAX),

   REG_VARIABLE(CFG_BTC_BT_INTERVAL_PAGE_P2P_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_p2p_sta_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_STA_DEFAULT,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_STA_MIN,
                CFG_BTC_BT_INTERVAL_PAGE_P2P_STA_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_PAGE_P2P_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_page_p2p_sta_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_STA_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_STA_MIN,
                CFG_BTC_WLAN_INTERVAL_PAGE_P2P_STA_MAX),

   REG_VARIABLE(CFG_BTC_BT_INTERVAL_INQ_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_sta_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_STA_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_STA_MIN,
                CFG_BTC_BT_INTERVAL_INQ_STA_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_INQ_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_sta_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_STA_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_STA_MIN,
                CFG_BTC_WLAN_INTERVAL_INQ_STA_MAX),

   REG_VARIABLE(CFG_BTC_BT_INTERVAL_INQ_SAP, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_sap_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_SAP_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_SAP_MIN,
                CFG_BTC_BT_INTERVAL_INQ_SAP_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_INQ_SAP, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_sap_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_SAP_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_SAP_MIN,
                CFG_BTC_WLAN_INTERVAL_INQ_SAP_MAX),

   REG_VARIABLE(CFG_BTC_BT_INTERVAL_INQ_P2P, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_p2p_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_P2P_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_P2P_MIN,
                CFG_BTC_BT_INTERVAL_INQ_P2P_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_INQ_P2P, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_p2p_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_MIN,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_MAX),

   REG_VARIABLE(CFG_BTC_BT_INTERVAL_INQ_P2P_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_p2p_sta_bt_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_P2P_STA_DEFAULT,
                CFG_BTC_BT_INTERVAL_INQ_P2P_STA_MIN,
                CFG_BTC_BT_INTERVAL_INQ_P2P_STA_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_INTERVAL_INQ_P2P_STA, WLAN_PARAM_Integer,
                hdd_config_t, coex_inquiry_p2p_sta_wlan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_STA_DEFAULT,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_STA_MIN,
                CFG_BTC_WLAN_INTERVAL_INQ_P2P_STA_MAX),

   REG_VARIABLE(CFG_BTC_WLAN_COEX_TX_POWER, WLAN_PARAM_Integer,
                hdd_config_t, coex_tx_power,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BTC_WLAN_COEX_TX_POWER_DEFAULT,
                CFG_BTC_WLAN_COEX_TX_POWER_MIN,
                CFG_BTC_WLAN_COEX_TX_POWER_MAX),

#ifdef WMI_COEX_BTC_DUTYCYCLE
   REG_VARIABLE(CFG_COEX_PAUSE_NAME,
                WLAN_PARAM_Integer,
                hdd_config_t, coex_btc_PauseDuration,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_COEX_PAUSE_DEFAULT,
                CFG_COEX_PAUSE_MIN,
                CFG_COEX_PAUSE_MAX),

   REG_VARIABLE(CFG_COEX_UNPAUSE_NAME,
                WLAN_PARAM_Integer,
                hdd_config_t, coex_btc_UnPauseDuration,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_COEX_UNPAUSE_DEFAULT,
                CFG_COEX_UNPAUSE_MIN,
                CFG_COEX_UNPAUSE_MAX),
#endif

   REG_VARIABLE(CFG_INFORM_BSS_RSSI_RAW_NAME, WLAN_PARAM_Integer,
                hdd_config_t, inform_bss_rssi_raw,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_INFORM_BSS_RSSI_RAW_DEFAULT,
                CFG_INFORM_BSS_RSSI_RAW_MIN,
                CFG_INFORM_BSS_RSSI_RAW_MAX),
#ifdef WLAN_FEATURE_TSF
   REG_VARIABLE(CFG_SET_TSF_GPIO_PIN_HOST_NAME, WLAN_PARAM_Integer,
                hdd_config_t, tsf_gpio_pin_host,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SET_TSF_GPIO_PIN_HOST_DEFAULT,
                CFG_SET_TSF_GPIO_PIN_HOST_MIN,
                CFG_SET_TSF_GPIO_PIN_HOST_MAX),

   REG_VARIABLE(CFG_GET_TSF_BY_REGISTER_NAME, WLAN_PARAM_Integer,
                hdd_config_t, tsf_by_register,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_GET_TSF_BY_REGISTER_DEFAULT,
                CFG_GET_TSF_BY_REGISTER_MIN,
                CFG_GET_TSF_BY_REGISTER_MAX),

   REG_VARIABLE(CFG_SET_TSF_GPIO_PIN_NAME, WLAN_PARAM_Integer,
                hdd_config_t, tsf_gpio_pin,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SET_TSF_GPIO_PIN_DEFAULT,
                CFG_SET_TSF_GPIO_PIN_MIN,
                CFG_SET_TSF_GPIO_PIN_MAX),

#ifdef WLAN_FEATURE_TSF_PLUS
      REG_VARIABLE(CFG_SET_TSF_PTP_OPT_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, tsf_ptp_options,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SET_TSF_PTP_OPT_DEFAULT,
                CFG_SET_TSF_PTP_OPT_MIN,
                CFG_SET_TSF_PTP_OPT_MAX),
#endif /* WLAN_FEATURE_TSF_PLUS */
#endif
   REG_VARIABLE(CFG_FINE_TIME_MEAS_CAPABILITY, WLAN_PARAM_HexInteger,
                hdd_config_t, fine_time_meas_cap,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FINE_TIME_MEAS_CAPABILITY_DEFAULT,
                CFG_FINE_TIME_MEAS_CAPABILITY_MIN,
                CFG_FINE_TIME_MEAS_CAPABILITY_MAX),

   REG_VARIABLE(CFG_P2P_LISTEN_DEFER_INTERVAL_NAME, WLAN_PARAM_Integer,
                hdd_config_t, p2p_listen_defer_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_P2P_LISTEN_DEFER_INTERVAL_DEFAULT,
                CFG_P2P_LISTEN_DEFER_INTERVAL_MIN,
                CFG_P2P_LISTEN_DEFER_INTERVAL_MAX),

   REG_VARIABLE(CFG_MULTICAST_HOST_FW_MSGS, WLAN_PARAM_Integer,
                hdd_config_t, multicast_host_fw_msgs,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MULTICAST_HOST_FW_MSGS_DEFAULT,
                CFG_MULTICAST_HOST_FW_MSGS_MIN,
                CFG_MULTICAST_HOST_FW_MSGS_MAX),

   REG_VARIABLE(CFG_DROPPED_PKT_DISCONNECT_TH_NAME, WLAN_PARAM_Integer,
                hdd_config_t, pkt_err_disconn_th,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DROPPED_PKT_DISCONNECT_TH_DEFAULT,
                CFG_DROPPED_PKT_DISCONNECT_TH_MIN,
                CFG_DROPPED_PKT_DISCONNECT_TH_MAX),

   REG_VARIABLE(CFG_TX_CHAIN_MASK_CCK, WLAN_PARAM_Integer,
                hdd_config_t, tx_chain_mask_cck,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_CHAIN_MASK_CCK_DEFAULT,
                CFG_TX_CHAIN_MASK_CCK_MIN,
                CFG_TX_CHAIN_MASK_CCK_MAX),

   REG_VARIABLE(CFG_TX_CHAIN_MASK_1SS, WLAN_PARAM_Integer,
                hdd_config_t, tx_chain_mask_1ss,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_CHAIN_MASK_1SS_DEFAULT,
                CFG_TX_CHAIN_MASK_1SS_MIN,
                CFG_TX_CHAIN_MASK_1SS_MAX),

   REG_VARIABLE(CFG_TX_SCH_DELAY, WLAN_PARAM_Integer,
                hdd_config_t, tx_sch_delay,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_SCH_DELAY_DEFAULT,
                CFG_TX_SCH_DELAY_MIN,
                CFG_TX_SCH_DELAY_MAX),

   REG_VARIABLE(CFG_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer,
                hdd_config_t, self_gen_frm_pwr,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SELF_GEN_FRM_PWR_DEFAULT,
                CFG_SELF_GEN_FRM_PWR_MIN,
                CFG_SELF_GEN_FRM_PWR_MAX),

#ifdef FEATURE_WLAN_EXTSCAN
   REG_VARIABLE(CFG_EXTSCAN_ALLOWED_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, extscan_enabled,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_EXTSCAN_ALLOWED_DEF,
                 CFG_EXTSCAN_ALLOWED_MIN,
                 CFG_EXTSCAN_ALLOWED_MAX ),

   REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, extscan_passive_max_chn_time,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
                 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN,
                 CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX ),

   REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                hdd_config_t, extscan_passive_min_chn_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
                CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN,
                CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX),

   REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                hdd_config_t, extscan_active_max_chn_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
                CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN,
                CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX),

   REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME, WLAN_PARAM_Integer,
                hdd_config_t, extscan_active_min_chn_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
                CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN,
                CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX),
#endif


#ifdef WLAN_FEATURE_UDP_RESPONSE_OFFLOAD
   REG_VARIABLE(CFG_UDP_RESP_OFFLOAD_SUPPORT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, udp_resp_offload_support,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_UDP_RESP_OFFLOAD_SUPPORT_DEFAULT,
                CFG_UDP_RESP_OFFLOAD_SUPPORT_MIN,
                CFG_UDP_RESP_OFFLOAD_SUPPORT_MAX),

   REG_VARIABLE(CFG_UDP_RESP_OFFLOAD_DEST_PORT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, dest_port,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_UDP_RESP_OFFLOAD_DEST_PORT_DEFAULT,
                CFG_UDP_RESP_OFFLOAD_DEST_PORT_MIN,
                CFG_UDP_RESP_OFFLOAD_DEST_PORT_MAX),

   REG_VARIABLE_STRING(CFG_UDP_RESP_OFFLOAD_PAYLOAD_FILTER_NAME,
                WLAN_PARAM_String,
                hdd_config_t, payload_filter,
                VAR_FLAGS_OPTIONAL,
                (void *)CFG_UDP_RESP_OFFLOAD_PAYLOAD_FILTER_DEFAULT),

   REG_VARIABLE_STRING(CFG_UDP_RESP_OFFLOAD_RESPONSE_PAYLOAD_NAME,
                WLAN_PARAM_String,
                hdd_config_t, response_payload,
                VAR_FLAGS_OPTIONAL,
                (void *)CFG_UDP_RESP_OFFLOAD_RESPONSE_PAYLOAD_DEFAULT),

#endif

#ifdef WLAN_FEATURE_WOW_PULSE
   REG_VARIABLE(CFG_WOW_PULSE_SUPPORT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_support,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_SUPPORT_DEFAULT,
                CFG_WOW_PULSE_SUPPORT_MIN,
                CFG_WOW_PULSE_SUPPORT_MAX),

   REG_VARIABLE(CFG_WOW_PULSE_PIN_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_pin,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_PIN_DEFAULT,
                CFG_WOW_PULSE_PIN_MIN,
                CFG_WOW_PULSE_PIN_MAX),

   REG_VARIABLE(CFG_WOW_PULSE_INTERVAL_LOW_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_interval_low,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_INTERVAL_LOW_DEFAULT,
                CFG_WOW_PULSE_INTERVAL_LOW_MIN,
                CFG_WOW_PULSE_INTERVAL_LOW_MAX),

   REG_VARIABLE(CFG_WOW_PULSE_INTERVAL_HIGH_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_interval_high,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_INTERVAL_HIGH_DEFAULT,
                CFG_WOW_PULSE_INTERVAL_HIGH_MIN,
                CFG_WOW_PULSE_INTERVAL_HIGH_MAX),

   REG_VARIABLE(CFG_WOW_PULSE_REPEAT_COUNT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_repeat_count,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_REPEAT_COUNT_DEFAULT,
                CFG_WOW_PULSE_REPEAT_COUNT_MIN,
                CFG_WOW_PULSE_REPEAT_COUNT_MAX),

   REG_VARIABLE(CFG_WOW_PULSE_INIT_STATE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, wow_pulse_init_state,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_WOW_PULSE_INIT_STATE_DEFAULT,
                CFG_WOW_PULSE_INIT_STATE_MIN,
                CFG_WOW_PULSE_INIT_STATE_MAX),
#endif

   REG_VARIABLE(CFG_MIB_STATS_ENABLED_NAME, WLAN_PARAM_Integer,
                hdd_config_t, mib_stats_enabled,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MIB_STATS_ENABLED_DEFAULT,
                CFG_MIB_STATS_ENABLED_MIN,
                CFG_MIB_STATS_ENABLED_MAX),

   REG_VARIABLE(CFG_DBG_MAX_MGMT_TX_FAILURE_COUNT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, max_mgmt_tx_fail_count,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DBG_MAX_MGMT_TX_FAILURE_COUNT_DEFAULT,
                CFG_DBG_MAX_MGMT_TX_FAILURE_COUNT_MIN,
                CFG_DBG_MAX_MGMT_TX_FAILURE_COUNT_MAX),

   REG_VARIABLE(CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME, WLAN_PARAM_SignedInteger,
                hdd_config_t, first_scan_bucket_threshold,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_FIRST_SCAN_BUCKET_THRESHOLD_DEFAULT,
                CFG_FIRST_SCAN_BUCKET_THRESHOLD_MIN,
                CFG_FIRST_SCAN_BUCKET_THRESHOLD_MAX),

   REG_VARIABLE(CFG_ENABLE_FATAL_EVENT_TRIGGER, WLAN_PARAM_Integer,
                hdd_config_t, enable_fatal_event,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_FATAL_EVENT_TRIGGER_DEFAULT,
                CFG_ENABLE_FATAL_EVENT_TRIGGER_MIN,
                CFG_ENABLE_FATAL_EVENT_TRIGGER_MAX),

   REG_VARIABLE(CFG_ENABLE_GO_CTS2SELF_FOR_STA,
                WLAN_PARAM_Integer,
                hdd_config_t, enable_go_cts2self_for_sta,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_GO_CTS2SELF_FOR_STA_DEFAULT,
                CFG_ENABLE_GO_CTS2SELF_FOR_STA_MIN,
                CFG_ENABLE_GO_CTS2SELF_FOR_STA_MAX),

   REG_VARIABLE(CFG_INDOOR_CHANNEL_SUPPORT_NAME,
                WLAN_PARAM_Integer,
                hdd_config_t, indoor_channel_support,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_INDOOR_CHANNEL_SUPPORT_DEFAULT,
                CFG_INDOOR_CHANNEL_SUPPORT_MIN,
                CFG_INDOOR_CHANNEL_SUPPORT_MAX),

   REG_VARIABLE(CFG_SAP_TX_LEAKAGE_THRESHOLD_NAME,
                WLAN_PARAM_Integer,
                hdd_config_t, sap_tx_leakage_threshold,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_TX_LEAKAGE_THRESHOLD_DEFAULT,
                CFG_SAP_TX_LEAKAGE_THRESHOLD_MIN,
                CFG_SAP_TX_LEAKAGE_THRESHOLD_MAX),

   REG_VARIABLE(CFG_IGNORE_PEER_HT_MODE_NAME, WLAN_PARAM_Integer,
                  hdd_config_t, ignore_peer_ht_opmode,
                  VAR_FLAGS_OPTIONAL |
                  VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                  CFG_IGNORE_PEER_HT_MODE_DEFAULT,
                  CFG_IGNORE_PEER_HT_MODE_MIN,
                  CFG_IGNORE_PEER_HT_MODE_MAX),
#ifdef WLAN_FEATURE_NAN_DATAPATH
   REG_VARIABLE(CFG_ENABLE_NAN_DATAPATH_NAME, WLAN_PARAM_Integer,
                hdd_config_t, enable_nan_datapath,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_NAN_DATAPATH_DEFAULT,
                CFG_ENABLE_NAN_DATAPATH_MIN,
                CFG_ENABLE_NAN_DATAPATH_MAX),

   REG_VARIABLE(CFG_ENABLE_NAN_NDI_CHANNEL_NAME, WLAN_PARAM_Integer,
                hdd_config_t, nan_datapath_ndi_channel,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_NAN_NDI_CHANNEL_DEFAULT,
                CFG_ENABLE_NAN_NDI_CHANNEL_MIN,
                CFG_ENABLE_NAN_NDI_CHANNEL_MAX),
#endif
   REG_VARIABLE( CFG_OPTIMIZE_CA_EVENT_NAME, WLAN_PARAM_Integer,
                 hdd_config_t, goptimize_chan_avoid_event,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                 CFG_OPTIMIZE_CA_EVENT_DEFAULT,
                 CFG_OPTIMIZE_CA_EVENT_DISABLE,
                 CFG_OPTIMIZE_CA_EVENT_ENABLE ),

   REG_VARIABLE(CFG_USE_OTP_MAC, WLAN_PARAM_Integer,
                hdd_config_t, g_use_otpmac,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_USE_OTP_MAC_DEFAULT,
                CFG_USE_OTP_MAC_MIN,
                CFG_USE_OTP_MAC_MAX),

   REG_VARIABLE(CFG_TX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
                hdd_config_t, tx_aggregation_size,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_AGGREGATION_SIZE_DEFAULT,
                CFG_TX_AGGREGATION_SIZE_MIN,
                CFG_TX_AGGREGATION_SIZE_MAX),

   REG_VARIABLE(CFG_RX_AGGREGATION_SIZE, WLAN_PARAM_Integer,
                hdd_config_t, rx_aggregation_size,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_RX_AGGREGATION_SIZE_DEFAULT,
                CFG_RX_AGGREGATION_SIZE_MIN,
                CFG_RX_AGGREGATION_SIZE_MAX),

   REG_VARIABLE(CFG_TX_AGGR_SW_RETRY_BE, WLAN_PARAM_Integer,
                hdd_config_t, tx_aggr_sw_retry_threshhold_be,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_BE_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_BE_MIN,
                CFG_TX_AGGR_SW_RETRY_BE_MAX),

   REG_VARIABLE(CFG_TX_AGGR_SW_RETRY_BK, WLAN_PARAM_Integer,
                hdd_config_t, tx_aggr_sw_retry_threshhold_bk,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_BK_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_BK_MIN,
                CFG_TX_AGGR_SW_RETRY_BK_MAX),

   REG_VARIABLE(CFG_TX_AGGR_SW_RETRY_VI, WLAN_PARAM_Integer,
                hdd_config_t, tx_aggr_sw_retry_threshhold_vi,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_VI_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_VI_MIN,
                CFG_TX_AGGR_SW_RETRY_VI_MAX),

   REG_VARIABLE(CFG_TX_AGGR_SW_RETRY_VO, WLAN_PARAM_Integer,
                hdd_config_t, tx_aggr_sw_retry_threshhold_vo,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_VO_DEFAULT,
                CFG_TX_AGGR_SW_RETRY_VO_MIN,
                CFG_TX_AGGR_SW_RETRY_VO_MAX),

   REG_VARIABLE(CFG_TX_NON_AGGR_SW_RETRY_BE, WLAN_PARAM_Integer,
                hdd_config_t, tx_non_aggr_sw_retry_threshhold_be,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_BE_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_BE_MIN,
                CFG_TX_NON_AGGR_SW_RETRY_BE_MAX),

   REG_VARIABLE(CFG_TX_NON_AGGR_SW_RETRY_BK, WLAN_PARAM_Integer,
                hdd_config_t, tx_non_aggr_sw_retry_threshhold_bk,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_BK_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_BK_MIN,
                CFG_TX_NON_AGGR_SW_RETRY_BK_MAX),

   REG_VARIABLE(CFG_TX_NON_AGGR_SW_RETRY_VI, WLAN_PARAM_Integer,
                hdd_config_t, tx_non_aggr_sw_retry_threshhold_vi,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_VI_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_VI_MIN,
                CFG_TX_NON_AGGR_SW_RETRY_VI_MAX),

   REG_VARIABLE(CFG_TX_NON_AGGR_SW_RETRY_VO, WLAN_PARAM_Integer,
                hdd_config_t, tx_non_aggr_sw_retry_threshhold_vo,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_VO_DEFAULT,
                CFG_TX_NON_AGGR_SW_RETRY_VO_MIN,
                CFG_TX_NON_AGGR_SW_RETRY_VO_MAX),

   REG_VARIABLE(CFG_CREATE_BUG_REPORT_FOR_SCAN, WLAN_PARAM_Integer,
                hdd_config_t, bug_report_for_scan_results,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_CREATE_BUG_REPORT_FOR_SCAN_DEFAULT,
                CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE,
                CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE),

   REG_VARIABLE(CFG_ENABLE_EDCA_INI_NAME, WLAN_PARAM_Integer,
                hdd_config_t, enable_edca_params,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_EDCA_INI_DEFAULT,
                CFG_ENABLE_EDCA_INI_MIN,
                CFG_ENABLE_EDCA_INI_MAX),

   REG_VARIABLE(CFG_EDCA_VO_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vo_cwmin,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VO_CWMIN_VALUE_DEFAULT,
                CFG_EDCA_VO_CWMIN_VALUE_MIN,
                CFG_EDCA_VO_CWMIN_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_VI_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vi_cwmin,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VI_CWMIN_VALUE_DEFAULT,
                CFG_EDCA_VI_CWMIN_VALUE_MIN,
                CFG_EDCA_VI_CWMIN_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BK_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_bk_cwmin,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BK_CWMIN_VALUE_DEFAULT,
                CFG_EDCA_BK_CWMIN_VALUE_MIN,
                CFG_EDCA_BK_CWMIN_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BE_CWMIN_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_be_cwmin,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BE_CWMIN_VALUE_DEFAULT,
                CFG_EDCA_BE_CWMIN_VALUE_MIN,
                CFG_EDCA_BE_CWMIN_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_VO_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vo_cwmax,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VO_CWMAX_VALUE_DEFAULT,
                CFG_EDCA_VO_CWMAX_VALUE_MIN,
                CFG_EDCA_VO_CWMAX_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_VI_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vi_cwmax,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VI_CWMAX_VALUE_DEFAULT,
                CFG_EDCA_VI_CWMAX_VALUE_MIN,
                CFG_EDCA_VI_CWMAX_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BK_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_bk_cwmax,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BK_CWMAX_VALUE_DEFAULT,
                CFG_EDCA_BK_CWMAX_VALUE_MIN,
                CFG_EDCA_BK_CWMAX_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BE_CWMAX_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_be_cwmax,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BE_CWMAX_VALUE_DEFAULT,
                CFG_EDCA_BE_CWMAX_VALUE_MIN,
                CFG_EDCA_BE_CWMAX_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_VO_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vo_aifs,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VO_AIFS_VALUE_DEFAULT,
                CFG_EDCA_VO_AIFS_VALUE_MIN,
                CFG_EDCA_VO_AIFS_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_VI_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_vi_aifs,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_VI_AIFS_VALUE_DEFAULT,
                CFG_EDCA_VI_AIFS_VALUE_MIN,
                CFG_EDCA_VI_AIFS_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BK_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_bk_aifs,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BK_AIFS_VALUE_DEFAULT,
                CFG_EDCA_BK_AIFS_VALUE_MIN,
                CFG_EDCA_BK_AIFS_VALUE_MAX),

   REG_VARIABLE(CFG_EDCA_BE_AIFS_VALUE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, edca_be_aifs,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_EDCA_BE_AIFS_VALUE_DEFAULT,
                CFG_EDCA_BE_AIFS_VALUE_MIN,
                CFG_EDCA_BE_AIFS_VALUE_MAX),

   REG_VARIABLE_STRING(CFG_ENABLE_TX_SCHED_WRR_VO, WLAN_PARAM_String,
                hdd_config_t, tx_sched_wrr_vo,
                VAR_FLAGS_OPTIONAL,
                (void *) CFG_ENABLE_TX_SCHED_WRR_VO_DEFAULT),

   REG_VARIABLE_STRING(CFG_ENABLE_TX_SCHED_WRR_VI, WLAN_PARAM_String,
                hdd_config_t, tx_sched_wrr_vi,
                VAR_FLAGS_OPTIONAL,
                (void *) CFG_ENABLE_TX_SCHED_WRR_VI_DEFAULT),

   REG_VARIABLE_STRING(CFG_ENABLE_TX_SCHED_WRR_BE, WLAN_PARAM_String,
                hdd_config_t, tx_sched_wrr_be,
                VAR_FLAGS_OPTIONAL,
                (void *) CFG_ENABLE_TX_SCHED_WRR_BE_DEFAULT),

   REG_VARIABLE_STRING(CFG_ENABLE_TX_SCHED_WRR_BK, WLAN_PARAM_String,
                hdd_config_t, tx_sched_wrr_bk,
                VAR_FLAGS_OPTIONAL,
                (void *) CFG_ENABLE_TX_SCHED_WRR_BK_DEFAULT),

   REG_VARIABLE(CFG_TGT_GTX_USR_CFG_NAME, WLAN_PARAM_Integer,
                hdd_config_t, tgt_gtx_usr_cfg,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TGT_GTX_USR_CFG_DEFAULT,
                CFG_TGT_GTX_USR_CFG_MIN,
                CFG_TGT_GTX_USR_CFG_MAX),

   REG_VARIABLE(CFG_SAP_INTERNAL_RESTART_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sap_internal_restart,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_INTERNAL_RESTART_DEFAULT,
                CFG_SAP_INTERNAL_RESTART_MIN,
                CFG_SAP_INTERNAL_RESTART_MAX),

   REG_VARIABLE(CFG_BUG_ON_REINIT_FAILURE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, bug_on_reinit_failure,
                VAR_FLAGS_OPTIONAL |
                VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_BUG_ON_REINIT_FAILURE_DEFAULT,
                CFG_BUG_ON_REINIT_FAILURE_MIN,
                CFG_BUG_ON_REINIT_FAILURE_MAX),

   REG_VARIABLE(CFG_SAP_FORCE_11N_FOR_11AC_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sap_force_11n_for_11ac,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_FORCE_11N_FOR_11AC_DEFAULT,
                CFG_SAP_FORCE_11N_FOR_11AC_MIN,
                CFG_SAP_FORCE_11N_FOR_11AC_MAX),

   REG_VARIABLE(CFG_SAP_MAX_INACTIVITY_OVERRIDE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sap_max_inactivity_override,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_MAX_INACTIVITY_OVERRIDE_DEFAULT,
                CFG_SAP_MAX_INACTIVITY_OVERRIDE_MIN,
                CFG_SAP_MAX_INACTIVITY_OVERRIDE_MAX),

   REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
                hdd_config_t, active_mode_offload,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ACTIVE_MODE_OFFLOAD_DEFAULT,
                CFG_ACTIVE_MODE_OFFLOAD_MIN,
                CFG_ACTIVE_MODE_OFFLOAD_MAX),

   REG_VARIABLE(CFG_STA_CHANGE_COUNTRYCODE_DYN_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sta_change_cc_via_beacon,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_STA_CHANGE_COUNTRYCODE_DYN_DEFAULT,
                CFG_STA_CHANGE_COUNTRYCODE_DYN_DISABLE,
                CFG_STA_CHANGE_COUNTRYCODE_DYN_ENABLE),

   REG_VARIABLE(CFG_SIFS_BURST_DURATION_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sifs_burst_duration,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SIFS_BURST_DURATION_DEFAULT,
                CFG_SIFS_BURST_DURATION_MIN,
                CFG_SIFS_BURST_DURATION_MAX),

  REG_VARIABLE(CFG_BPF_PACKET_FILTER_OFFLOAD, WLAN_PARAM_Integer,
               struct hdd_config, bpf_packet_filter_enable,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_BPF_PACKET_FILTER_OFFLOAD_DEFAULT,
               CFG_BPF_PACKET_FILTER_OFFLOAD_MIN,
               CFG_BPF_PACKET_FILTER_OFFLOAD_MAX),

  REG_VARIABLE(CFG_TDLS_ENABLE_DEFER_TIMER, WLAN_PARAM_Integer,
                hdd_config_t, tdls_enable_defer_time,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TDLS_ENABLE_DEFER_TIMER_DEFAULT,
                CFG_TDLS_ENABLE_DEFER_TIMER_MIN,
                CFG_TDLS_ENABLE_DEFER_TIMER_MAX),

   REG_VARIABLE(CFG_HOST_WAKEUP_GPIO_NAME, WLAN_PARAM_Integer,
                hdd_config_t, host_wakeup_gpio,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_HOST_WAKEUP_GPIO_DEFAULT,
                CFG_HOST_WAKEUP_GPIO_MIN,
                CFG_HOST_WAKEUP_GPIO_MAX),

   REG_VARIABLE(CFG_HOST_WAKEUP_TYPE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, host_wakeup_type,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_HOST_WAKEUP_TYPE_DEFAULT,
                CFG_HOST_WAKEUP_TYPE_MIN,
                CFG_HOST_WAKEUP_TYPE_MAX),

   REG_VARIABLE(CFG_TARGET_WAKEUP_GPIO_NAME, WLAN_PARAM_Integer,
                hdd_config_t, target_wakeup_gpio,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TARGET_WAKEUP_GPIO_DEFAULT,
                CFG_TARGET_WAKEUP_GPIO_MIN,
                CFG_TARGET_WAKEUP_GPIO_MAX),

   REG_VARIABLE(CFG_TARGET_WAKEUP_TYPE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, target_wakeup_type,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_TARGET_WAKEUP_TYPE_DEFAULT,
                CFG_TARGET_WAKEUP_TYPE_MIN,
                CFG_TARGET_WAKEUP_TYPE_MAX),

   REG_VARIABLE(CFG_MAX_SCHED_SCAN_PLAN_INT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, max_sched_scan_plan_interval,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MAX_SCHED_SCAN_PLAN_INT_DEFAULT,
                CFG_MAX_SCHED_SCAN_PLAN_INT_MIN,
                CFG_MAX_SCHED_SCAN_PLAN_INT_MAX),

   REG_VARIABLE(CFG_MAX_SCHED_SCAN_PLAN_ITRNS_NAME, WLAN_PARAM_Integer,
                hdd_config_t, max_sched_scan_plan_iterations,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_MAX_SCHED_SCAN_PLAN_ITRNS_DEFAULT,
                CFG_MAX_SCHED_SCAN_PLAN_ITRNS_MIN,
                CFG_MAX_SCHED_SCAN_PLAN_ITRNS_MAX),

   REG_VARIABLE(CFG_ENABLE_5G_BAND_PREF_NAME, WLAN_PARAM_Integer,
                hdd_config_t, enable_5g_band_pref,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ENABLE_5G_BAND_PREF_DEFAULT,
                CFG_ENABLE_5G_BAND_PREF_MIN,
                CFG_ENABLE_5G_BAND_PREF_MAX),

   REG_VARIABLE(CFG_5G_RSSI_BOOST_THRESHOLD_NAME, WLAN_PARAM_SignedInteger,
                hdd_config_t, rssi_boost_threshold_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_RSSI_BOOST_THRESHOLD_DEFAULT,
                CFG_5G_RSSI_BOOST_THRESHOLD_MIN,
                CFG_5G_RSSI_BOOST_THRESHOLD_MAX),

   REG_VARIABLE(CFG_5G_RSSI_BOOST_FACTOR_NAME, WLAN_PARAM_Integer,
                hdd_config_t, rssi_boost_factor_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_RSSI_BOOST_FACTOR_DEFAULT,
                CFG_5G_RSSI_BOOST_FACTOR_MIN,
                CFG_5G_RSSI_BOOST_FACTOR_MAX),

   REG_VARIABLE(CFG_5G_MAX_RSSI_BOOST_NAME, WLAN_PARAM_Integer,
                hdd_config_t, max_rssi_boost_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_MAX_RSSI_BOOST_DEFAULT,
                CFG_5G_MAX_RSSI_BOOST_MIN,
                CFG_5G_MAX_RSSI_BOOST_MAX),

   REG_VARIABLE(CFG_5G_RSSI_PENALIZE_THRESHOLD_NAME, WLAN_PARAM_SignedInteger,
                hdd_config_t, rssi_penalize_threshold_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_RSSI_PENALIZE_THRESHOLD_DEFAULT,
                CFG_5G_RSSI_PENALIZE_THRESHOLD_MIN,
                CFG_5G_RSSI_PENALIZE_THRESHOLD_MAX),

   REG_VARIABLE(CFG_5G_RSSI_PENALIZE_FACTOR_NAME, WLAN_PARAM_Integer,
                hdd_config_t, rssi_penalize_factor_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_RSSI_PENALIZE_FACTOR_DEFAULT,
                CFG_5G_RSSI_PENALIZE_FACTOR_MIN,
                CFG_5G_RSSI_PENALIZE_FACTOR_MAX),

   REG_VARIABLE(CFG_5G_MAX_RSSI_PENALIZE_NAME, WLAN_PARAM_Integer,
                hdd_config_t, max_rssi_penalize_5g,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_5G_MAX_RSSI_PENALIZE_DEFAULT,
                CFG_5G_MAX_RSSI_PENALIZE_MIN,
                CFG_5G_MAX_RSSI_PENALIZE_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_WHITELIST_NAME, WLAN_PARAM_Integer,
                hdd_config_t, probe_req_ie_whitelist,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_WHITELIST_DEFAULT,
                CFG_PRB_REQ_IE_WHITELIST_MIN,
                CFG_PRB_REQ_IE_WHITELIST_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP0_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_0,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP0_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP0_MIN,
                CFG_PRB_REQ_IE_BIT_MAP0_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP1_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_1,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP1_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP1_MIN,
                CFG_PRB_REQ_IE_BIT_MAP1_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP2_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_2,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP2_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP2_MIN,
                CFG_PRB_REQ_IE_BIT_MAP2_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP3_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_3,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP3_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP3_MIN,
                CFG_PRB_REQ_IE_BIT_MAP3_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP4_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_4,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP4_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP4_MIN,
                CFG_PRB_REQ_IE_BIT_MAP4_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP5_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_5,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP5_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP5_MIN,
                CFG_PRB_REQ_IE_BIT_MAP5_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP6_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_6,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP6_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP6_MIN,
                CFG_PRB_REQ_IE_BIT_MAP6_MAX),

   REG_VARIABLE(CFG_PRB_REQ_IE_BIT_MAP7_NAME, WLAN_PARAM_HexInteger,
                hdd_config_t, probe_req_ie_bitmap_7,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP7_DEFAULT,
                CFG_PRB_REQ_IE_BIT_MAP7_MIN,
                CFG_PRB_REQ_IE_BIT_MAP7_MAX),

   REG_VARIABLE_STRING(CFG_PROBE_REQ_OUI_NAME, WLAN_PARAM_String,
                       hdd_config_t, probe_req_ouis,
                       VAR_FLAGS_OPTIONAL,
                       (void *)CFG_PROBE_REQ_OUI_DEFAULT),

   REG_VARIABLE(CFG_SUB_20_CHANNEL_WIDTH_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sub_20_channel_width,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SUB_20_CHANNEL_WIDTH_DEFAULT,
                CFG_SUB_20_CHANNEL_WIDTH_MIN,
                CFG_SUB_20_CHANNEL_WIDTH_MAX),

   REG_VARIABLE(CFG_RX_WAKELOCK_TIMEOUT_NAME, WLAN_PARAM_Integer,
                hdd_config_t, rx_wakelock_timeout,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_RX_WAKELOCK_TIMEOUT_DEFAULT,
                CFG_RX_WAKELOCK_TIMEOUT_MIN,
                CFG_RX_WAKELOCK_TIMEOUT_MAX),

   REG_VARIABLE(CFG_SAP_CH_SWITCH_BEACON_CNT, WLAN_PARAM_Integer,
                hdd_config_t, sap_chanswitch_beacon_cnt,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_CH_SWITCH_BEACON_CNT_DEFAULT,
                CFG_SAP_CH_SWITCH_BEACON_CNT_MIN,
                CFG_SAP_CH_SWITCH_BEACON_CNT_MAX),

   REG_VARIABLE(CFG_SAP_CH_SWITCH_MODE, WLAN_PARAM_Integer,
                hdd_config_t, sap_chanswitch_mode,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_CH_SWITCH_MODE_DEFAULT,
                CFG_SAP_CH_SWITCH_MODE_MIN,
                CFG_SAP_CH_SWITCH_MODE_MAX),

   REG_VARIABLE(CFG_DFS_BEACON_TX_ENHANCED, WLAN_PARAM_Integer,
                hdd_config_t, dfs_beacon_tx_enhanced,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_DFS_BEACON_TX_ENHANCED_DEFAULT,
                CFG_DFS_BEACON_TX_ENHANCED_MIN,
                CFG_DFS_BEACON_TX_ENHANCED_MAX),

  REG_VARIABLE(CFG_REDUCED_BEACON_INTERVAL, WLAN_PARAM_Integer,
               hdd_config_t, reduced_beacon_interval,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_REDUCED_BEACON_INTERVAL_DEFAULT,
               CFG_REDUCED_BEACON_INTERVAL_MIN,
               CFG_REDUCED_BEACON_INTERVAL_MAX),

  REG_VARIABLE(CFG_NO_ACK_ENABLE, WLAN_PARAM_Integer,
               hdd_config_t, gEnableNoAck,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_NO_ACK_DEFAULT,
               CFG_NO_ACK_MIN,
               CFG_NO_ACK_MAX),

#ifdef FEATURE_COEX_PTA_CONFIG_ENABLE
  REG_VARIABLE(CFG_COEX_PTA_CONFIG_ENABLE, WLAN_PARAM_Integer,
               hdd_config_t, coex_pta_config_enable,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_COEX_PTA_CONFIG_ENABLE_DEFAULT,
               CFG_COEX_PTA_CONFIG_ENABLE_MIN,
               CFG_COEX_PTA_CONFIG_ENABLE_MAX),

  REG_VARIABLE(CFG_COEX_PTA_CONFIG_PARAM, WLAN_PARAM_Integer,
               hdd_config_t, coex_pta_config_param,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_COEX_PTA_CONFIG_PARAM_DEFAULT,
               CFG_COEX_PTA_CONFIG_PARAM_MIN,
               CFG_COEX_PTA_CONFIG_PARAM_MAX),
#endif

   REG_VARIABLE(CFG_ARP_AC_CATEGORY, WLAN_PARAM_Integer,
                hdd_config_t, arp_ac_category,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_ARP_AC_CATEGORY_DEFAULT,
                CFG_ARP_AC_CATEGORY_MIN,
                CFG_ARP_AC_CATEGORY_MAX),

   REG_VARIABLE(CFG_SAP_PROBE_RESP_OFFLOAD_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sap_probe_resp_offload,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_SAP_PROBE_RESP_OFFLOAD_DEFAULT,
                CFG_SAP_PROBE_RESP_OFFLOAD_MIN,
                CFG_SAP_PROBE_RESP_OFFLOAD_MAX),

   REG_VARIABLE( CFG_STA_AUTH_RETRIES_FOR_CODE17_NAME, WLAN_PARAM_Integer,
                hdd_config_t, sta_auth_retries_for_code17,
                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
                CFG_STA_AUTH_RETRIES_FOR_CODE17_DEFAULT,
                CFG_STA_AUTH_RETRIES_FOR_CODE17_MIN,
                CFG_STA_AUTH_RETRIES_FOR_CODE17_MAX ),

  REG_VARIABLE(CFG_SKIP_MAC_CONFIG, WLAN_PARAM_Integer,
               hdd_config_t, skip_mac_config,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_SKIP_MAC_CONFIG_DEFAULT,
               CFG_SKIP_MAC_CONFIG_MIN,
               CFG_SKIP_MAC_CONFIG_MAX),
#ifdef WLAN_FEATURE_DSRC
  REG_VARIABLE(CFG_OCB_TX_PER_PKT_STATS_ENABLE_NAME, WLAN_PARAM_Integer,
               hdd_config_t, ocb_tx_per_pkt_stats_enabled,
               VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
               CFG_OCB_TX_PER_PKT_STATS_ENABLE_DEFAULT,
               CFG_OCB_TX_PER_PKT_STATS_ENABLE_MIN,
               CFG_OCB_TX_PER_PKT_STATS_ENABLE_MAX),
#endif

	REG_VARIABLE(CFG_CCA_THRESHOLD_ENABLE_NAME, WLAN_PARAM_Integer,
		hdd_config_t, cca_threshold_enable,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_CCA_THRESHOLD_ENABLE_DEFAULT,
		CFG_CCA_THRESHOLD_ENABLE_MIN,
		CFG_CCA_THRESHOLD_ENABLE_MAX),

	REG_VARIABLE(CFG_CCA_THRESHOLD_2G_NAME, WLAN_PARAM_Integer,
		hdd_config_t, cca_threshold_2g,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_CCA_THRESHOLD_2G_DEFAULT,
		CFG_CCA_THRESHOLD_2G_MIN,
		CFG_CCA_THRESHOLD_2G_MAX),

	REG_VARIABLE(CFG_CCA_THRESHOLD_5G_NAME, WLAN_PARAM_Integer,
		hdd_config_t, cca_threshold_5g,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_CCA_THRESHOLD_5G_DEFAULT,
		CFG_CCA_THRESHOLD_5G_MIN,
		CFG_CCA_THRESHOLD_5G_MAX),

	REG_VARIABLE(CFG_ENABLE_MONITOR_ON_STA, WLAN_PARAM_Integer,
		     hdd_config_t, mon_on_sta_enable,
		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		     CFG_ENABLE_MONITOR_ON_STA_DEFAULT,
		     CFG_ENABLE_MONITOR_ON_STA_MIN,
		     CFG_ENABLE_MONITOR_ON_STA_MAX),
#ifdef WLAN_FEATURE_SAE
	REG_VARIABLE(CFG_IS_SAE_ENABLED_NAME, WLAN_PARAM_Integer,
		struct hdd_config, is_sae_enabled,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_IS_SAE_ENABLED_DEFAULT,
		CFG_IS_SAE_ENABLED_MIN,
		CFG_IS_SAE_ENABLED_MAX),

	REG_VARIABLE(CFG_ENABLE_SAE_FOR_SAP_NAME, WLAN_PARAM_Integer,
		struct hdd_config, enable_sae_for_sap,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_ENABLE_SAE_FOR_SAP_DEFAULT,
		CFG_ENABLE_SAE_FOR_SAP_MIN,
		CFG_ENABLE_SAE_FOR_SAP_MAX),
#endif

#ifdef MULTI_IF_LOG
       REG_VARIABLE(CFG_HOST_LOG_CUSTOM_NETLINK_PROTO, WLAN_PARAM_Integer,
		hdd_config_t, host_log_custom_nl_proto,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_HOST_LOG_CUSTOM_NETLINK_PROTO_DEFAULT,
		CFG_HOST_LOG_CUSTOM_NETLINK_PROTO_MIN,
		CFG_HOST_LOG_CUSTOM_NETLINK_PROTO_MAX),
#endif

	REG_VARIABLE(CFG_AID_BY_USER_NAME, WLAN_PARAM_Integer,
		struct hdd_config, aid_by_user,
		VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
		CFG_AID_BY_USER_DEFAULT,
		CFG_AID_BY_USER_MIN,
		CFG_AID_BY_USER_MAX),

	REG_VARIABLE_STRING(CFG_ENABLE_CONCURRENT_STA_NAME, WLAN_PARAM_String,
			    hdd_config_t, enable_concurrent_sta,
			    VAR_FLAGS_OPTIONAL,
			    (void *)CFG_ENABLE_CONCURRENT_STA_DEFAULT),
};


#ifdef WLAN_FEATURE_MBSSID
REG_TABLE_ENTRY mbssid_sap_dyn_ini_reg_table[] =
{
   REG_VARIABLE( CFG_SAP_SCAN_BAND_PREFERENCE, WLAN_PARAM_Integer,
                 mbssid_sap_dyn_ini_config_t, acsScanBandPreference,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK
                 | VAR_FLAGS_DYNAMIC_CFG,
                 CFG_SAP_SCAN_BAND_PREFERENCE_DEFAULT,
                 CFG_SAP_SCAN_BAND_PREFERENCE_MIN,
                 CFG_SAP_SCAN_BAND_PREFERENCE_MAX ),

   REG_VARIABLE( CFG_ACS_BAND_SWITCH_THRESHOLD, WLAN_PARAM_Integer,
                 mbssid_sap_dyn_ini_config_t, acsBandSwitchThreshold,
                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK
                 | VAR_FLAGS_DYNAMIC_CFG,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_DEFAULT,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_MIN,
                 CFG_ACS_BAND_SWITCH_THRESHOLD_MAX ),
};
#endif

/*
 * This function returns a pointer to the character after the occurrence
 * of a new line character. It also modifies the original string by replacing
 * the '\n' character with the null character.
 * Function returns NULL if no new line character was found before end of
 * string was reached
 */
static char* get_next_line(char* str)
{
  char c;

  if( str == NULL || *str == '\0') {
    return NULL;
  }

  c = *str;
  while(c != '\n'  && c != '\0' && c != 0xd)  {
    str = str + 1;
    c = *str;
  }

  if (c == '\0' ) {
    return NULL;
  }
  else
  {
    *str = '\0';
    return (str+1);
  }

  return NULL;
}

// look for space. Ascii values to look are -
// 0x09 == horizontal tab
// 0x0a == Newline ("\n")
// 0x0b == vertical tab
// 0x0c == Newpage or feed form.
// 0x0d == carriage return (CR or "\r")
// Null ('\0') should not considered as space.
#define i_isspace(ch)  (((ch) >= 0x09 && (ch) <= 0x0d) || (ch) == ' ')

/*
 * This function trims any leading and trailing white spaces
 */
static char *i_trim(char *str)

{
   char *ptr;

   if(*str == '\0') return str;

   /* Find the first non white-space*/
   for (ptr = str; i_isspace(*ptr); ptr++);
   if (*ptr == '\0')
        return str;

   /* This is the new start of the string*/
   str = ptr;

   /* Find the last non white-space */
   ptr += strlen(ptr) - 1;
   for (; ptr != str && i_isspace(*ptr); ptr--);
   /* Null terminate the following character */
   ptr[1] = '\0';

   return str;
}


//Structure to store each entry in qcom_cfg.ini file
typedef struct
{
   char *name;
   char *value;
}tCfgIniEntry;

static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t * pHddCtx,
    tCfgIniEntry* iniTable, unsigned long entries);

#ifdef WLAN_CFG_DEBUG
void dump_cfg_ini (tCfgIniEntry* iniTable, unsigned long entries)
{
   unsigned long i;

   for (i = 0; i < entries; i++) {
       VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "%s entry Name=[%s] value=[%s]",
           WLAN_INI_FILE, iniTable[i].name, iniTable[i].value);
     }
}
#endif

#ifdef FEATURE_RUNTIME_PM
static void disable_runtime_pm(hdd_config_t *cfg_ini)
{
	cfg_ini->runtime_pm = 0;
}
#else
static void disable_runtime_pm(hdd_config_t *cfg_ini)
{
}
#endif

#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
static void disable_auto_shutdown(hdd_config_t *cfg_ini)
{
	cfg_ini->WlanAutoShutdown = 0;
}
#else
static void disable_auto_shutdown(hdd_config_t *cfg_ini)
{
}
#endif

/**
 * hdd_override_all_ps() - overrides to disables all the powersave features.
 * @hdd_ctx: Pointer to HDD context.
 *
 * Overrides below powersave ini configurations.
 * gEnableImps=0
 * gEnableBmps=0
 * gRuntimePM=0
 * gWlanAutoShutdown = 0
 * gEnableSuspend=0
 * gEnablePowerSaveOffload=0
 * gEnableWoW=0
 */
static void hdd_override_all_ps(hdd_context_t *hdd_ctx)
{
	hdd_config_t *cfg_ini = hdd_ctx->cfg_ini;

	cfg_ini->fIsImpsEnabled = 0;
	cfg_ini->fIsBmpsEnabled = 0;
	disable_runtime_pm(cfg_ini);
	disable_auto_shutdown(cfg_ini);
	cfg_ini->enablePowersaveOffload = 0;
	cfg_ini->wowEnable = 0;
}

/*
 * This function reads the qcom_cfg.ini file and
 * parses each 'Name=Value' pair in the ini file
 */
VOS_STATUS hdd_parse_config_ini(hdd_context_t* pHddCtx)
{
   int status, i=0;
   /** Pointer for firmware image data */
   const struct firmware *fw = NULL;
   char *buffer, *line, *pTemp = NULL;
   size_t size;
   char *name, *value;
   /* cfgIniTable is static to avoid excess stack usage */
   static tCfgIniEntry cfgIniTable[MAX_CFG_INI_ITEMS];
   VOS_STATUS vos_status = VOS_STATUS_SUCCESS;

   memset(cfgIniTable, 0, sizeof(cfgIniTable));

   status = qca_request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);

   if(status)
   {
      hddLog(VOS_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",__func__, status);
      vos_status = VOS_STATUS_E_FAILURE;
      goto config_exit;
   }
   if(!fw || !fw->data || !fw->size)
   {
      hddLog(VOS_TRACE_LEVEL_FATAL, "%s: %s download failed",
             __func__, WLAN_INI_FILE);
      vos_status = VOS_STATUS_E_FAILURE;
      goto config_exit;
   }

   hddLog(LOG1, "%s: qcom_cfg.ini Size %zu", __func__, fw->size);

   buffer = (char*)vos_mem_malloc(fw->size + 1);

   if(NULL == buffer) {
      hddLog(VOS_TRACE_LEVEL_FATAL, "%s: kmalloc failure",__func__);
      release_firmware(fw);
      return VOS_STATUS_E_FAILURE;
   }

   buffer[fw->size] = '\0';
   pTemp = buffer;

   vos_mem_copy((void*)buffer,(void *)fw->data, fw->size);
   size = fw->size;

   while (buffer != NULL)
   {
      line = get_next_line(buffer);
      buffer = i_trim(buffer);

      hddLog(LOG1, "%s: item", buffer);

      if(strlen((char*)buffer) == 0 || *buffer == '#')  {
         buffer = line;
         continue;
      }
      else if(strncmp(buffer, "END", 3) == 0 ) {
         break;
      }
      else
      {
         name = buffer;
         while(*buffer != '=' && *buffer != '\0')
            buffer++;
         if(*buffer != '\0') {
            *buffer++ = '\0';
            i_trim(name);
            if(strlen (name) != 0) {
               buffer = i_trim(buffer);
               if(strlen(buffer)>0) {
                  value = buffer;
                  while (*buffer != '\0')
                     buffer++;
                  *buffer = '\0';
                  cfgIniTable[i].name= name;
                  cfgIniTable[i++].value= value;
                  if(i >= MAX_CFG_INI_ITEMS) {
                     hddLog(LOGE,"%s: Number of items in %s > %d",
                        __func__, WLAN_INI_FILE, MAX_CFG_INI_ITEMS);
                     break;
                  }
               }
            }
         }
      }
      buffer = line;
   }

   //Loop through the registry table and apply all these configs
   vos_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);

   if (VOS_MONITOR_MODE == hdd_get_conparam())
      hdd_override_all_ps(pHddCtx);

config_exit:
   release_firmware(fw);
   vos_mem_free(pTemp);
   return vos_status;
}

#ifdef WLAN_FEATURE_SAE
static void hdd_cfg_print_sae(hdd_context_t *hdd_ctx)
{
	hddLog(LOG2, "Name = [%s] value = [%u]",
	       CFG_IS_SAE_ENABLED_NAME,
	       hdd_ctx->cfg_ini->is_sae_enabled);
}

static void hdd_cfg_print_sae_sap(hdd_context_t *hdd_ctx)
{
	hddLog(LOG2, "Name = [%s] value = [%u]",
	       CFG_ENABLE_SAE_FOR_SAP_NAME,
	       hdd_ctx->cfg_ini->enable_sae_for_sap);
}
#else
static void hdd_cfg_print_sae(hdd_context_t *hdd_ctx)
{
}

static void hdd_cfg_print_sae_sap(hdd_context_t *hdd_ctx)
{
}
#endif

void print_hdd_cfg(hdd_context_t *pHddCtx)
{
  int i;

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "*********Config values in HDD Adapter*******");
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RTSThreshold] Value = %u",pHddCtx->cfg_ini->RTSThreshold) ;
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [OperatingChannel] Value = [%u]",pHddCtx->cfg_ini->OperatingChannel);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PowerUsageControl] Value = [%s]",pHddCtx->cfg_ini->PowerUsageControl);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fIsImpsEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsImpsEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [AutoBmpsTimerEnabled] Value = [%u]",pHddCtx->cfg_ini->fIsAutoBmpsTimerEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nAutoBmpsTimerValue] Value = [%u]",pHddCtx->cfg_ini->nAutoBmpsTimerValue);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nVccRssiTrigger] Value = [%u]",pHddCtx->cfg_ini->nVccRssiTrigger);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [gIbssBssid] Value =["MAC_ADDRESS_STR"]",
            MAC_ADDR_ARRAY(pHddCtx->cfg_ini->IbssBssid.bytes));

  for (i=0; i < VOS_MAX_CONCURRENCY_PERSONA; i++)
  {
      VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [Intf%dMacAddress] Value =["MAC_ADDRESS_STR"]",
            i, MAC_ADDR_ARRAY(pHddCtx->cfg_ini->intfMacAddr[i].bytes));
  }

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApEnableUapsd] value = [%u]",pHddCtx->cfg_ini->apUapsdEnabled);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPCntryCode] Value =[%c%c%c]",
      pHddCtx->cfg_ini->apCntryCode[0],pHddCtx->cfg_ini->apCntryCode[1],
      pHddCtx->cfg_ini->apCntryCode[2]);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApProt] value = [%u]", pHddCtx->cfg_ini->apProtEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAPAutoShutOff] Value = [%u]", pHddCtx->cfg_ini->nAPAutoShutOff);
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanMccToSccSwitchMode] Value = [%u]", pHddCtx->cfg_ini->WlanMccToSccSwitchMode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanBandSwitchEnable] Value = [%u]", pHddCtx->cfg_ini->wlan_band_switch_enable);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanApP2pGOConcurrencyEnable] Value = [%u]", pHddCtx->cfg_ini->wlan_ap_p2pgo_conc_enable);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanApP2pClientConcurEnable] Value = [%u]", pHddCtx->cfg_ini->wlan_ap_p2pclient_conc_enable);
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gWlanAutoShutdown] Value = [%u]", pHddCtx->cfg_ini->WlanAutoShutdown);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableListenMode] Value = [%u]", pHddCtx->cfg_ini->nEnableListenMode);
  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApProtection] value = [%u]",pHddCtx->cfg_ini->apProtection);
  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableApOBSSProt] value = [%u]",pHddCtx->cfg_ini->apOBSSProtEnabled);
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
  VOS_TRACE (VOS_MODULE_ID_HDD,
             VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [sap_channel_avoidance] value = [%u]",
             pHddCtx->cfg_ini->sap_channel_avoidance);
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [%s] value = [%u]", CFG_REMOVE_TIME_STAMP_SYNC_CMD_NAME,
             pHddCtx->cfg_ini->remove_time_stamp_sync_cmd);

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [%s] value = [%u]", CFG_SAP_P2P_11AC_OVERRIDE_NAME,
             pHddCtx->cfg_ini->sap_p2p_11ac_override);

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS,
             pHddCtx->cfg_ini->force_sap_acs);

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_START_CH,
             pHddCtx->cfg_ini->force_sap_acs_st_ch);

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
             "Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_END_CH,
             pHddCtx->cfg_ini->force_sap_acs_end_ch);

  VOS_TRACE (VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gACSBandSwitchThreshold] value = [%u]", pHddCtx->cfg_ini->acsBandSwitchThreshold);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%u]",pHddCtx->cfg_ini->nChannelBondingMode24GHz);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [%s] Value = [%u] ",
            CFG_OVERRIDE_HT40_20_24GHZ_NAME, pHddCtx->cfg_ini->override_ht20_40_24g);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ChannelBondingMode] Value = [%u]",pHddCtx->cfg_ini->nChannelBondingMode5GHz);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [dot11Mode] Value = [%u]",pHddCtx->cfg_ini->dot11Mode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [WmmMode] Value = [%u] ",pHddCtx->cfg_ini->WmmMode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [UapsdMask] Value = [0x%x] ",pHddCtx->cfg_ini->UapsdMask);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [PktClassificationBasis] Value = [%u] ",pHddCtx->cfg_ini->PktClassificationBasis);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ImplicitQosIsEnabled] Value = [%u]",(int)pHddCtx->cfg_ini->bImplicitQosEnabled);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSrvIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdVoSrvIntv);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdVoSuspIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdVoSuspIntv);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSrvIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdViSrvIntv);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdViSuspIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdViSuspIntv);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSrvIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdBeSrvIntv);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBeSuspIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdBeSuspIntv);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSrvIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdBkSrvIntv);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraUapsdBkSuspIntv] Value = [%u] ",pHddCtx->cfg_ini->InfraUapsdBkSuspIntv);
#ifdef FEATURE_WLAN_ESE
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraInactivityInterval] Value = [%u] ",pHddCtx->cfg_ini->InfraInactivityInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [EseEnabled] Value = [%u] ",pHddCtx->cfg_ini->isEseIniFeatureEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastTransitionEnabled] Value = [%u] ",pHddCtx->cfg_ini->isFastTransitionEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gTxPowerCap] Value = [%u] dBm ",pHddCtx->cfg_ini->nTxPowerCap);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAllowTPCfromAP] Value = [%u] dBm ", pHddCtx->cfg_ini->allow_tpc_from_ap);
#ifdef FEATURE_WLAN_LFR
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [FastRoamEnabled] Value = [%u] ",pHddCtx->cfg_ini->isFastRoamIniFeatureEnabled);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [MAWCEnabled] Value = [%u] ",pHddCtx->cfg_ini->MAWCEnabled);
#endif
#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RoamRssiDiff] Value = [%u] ",pHddCtx->cfg_ini->RoamRssiDiff);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ImmediateRoamRssiDiff] Value = [%u] ",pHddCtx->cfg_ini->nImmediateRoamRssiDiff);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [isWESModeEnabled] Value = [%u] ",pHddCtx->cfg_ini->isWESModeEnabled);
#endif
#ifdef FEATURE_WLAN_OKC
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [OkcEnabled] Value = [%u] ",pHddCtx->cfg_ini->isOkcIniFeatureEnabled);
#endif
#ifdef FEATURE_WLAN_SCAN_PNO
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [configPNOScanSupport] Value = [%u] ",pHddCtx->cfg_ini->configPNOScanSupport);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [configPNOScanTimerRepeatValue] Value = [%u] ",pHddCtx->cfg_ini->configPNOScanTimerRepeatValue);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [pno_slow_scan_multiplier] Value = [%u] ",pHddCtx->cfg_ini->pno_slow_scan_multiplier);
#endif
#ifdef FEATURE_WLAN_TDLS
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableTDLSSupport] Value = [%u] ",pHddCtx->cfg_ini->fEnableTDLSSupport);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableTDLSImplicitTrigger] Value = [%u] ",pHddCtx->cfg_ini->fEnableTDLSImplicitTrigger);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fTDLSExternalControl] Value = [%u] ",pHddCtx->cfg_ini->fTDLSExternalControl);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fTDLSUapsdMask] Value = [%u] ",pHddCtx->cfg_ini->fTDLSUapsdMask);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableTDLSBufferSta] Value = [%u] ",pHddCtx->cfg_ini->fEnableTDLSBufferSta);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableTDLSWmmMode] Value = [%u] ",pHddCtx->cfg_ini->fEnableTDLSWmmMode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [enable_tdls_scan] Value = [%u]",
            pHddCtx->cfg_ini->enable_tdls_scan);
#endif

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableNoAck] Value = [%u] ",pHddCtx->cfg_ini->gEnableNoAck);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVo] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVo);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVo);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVo);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVo);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVo] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVo);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcVi] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcVi);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcVi);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMeanDataRateAcVi);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMinPhyRateAcVi);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcVi] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcVi);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBe] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBe);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBe);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBe);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBe);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBe] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBe);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraDirAcBk] Value = [%u] ",pHddCtx->cfg_ini->InfraDirAcBk);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraNomMsduSizeAcBk);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMeanDataRateAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMeanDataRateAcBk);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraMinPhyRateAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraMinPhyRateAcBk);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [InfraSbaAcBk] Value = [0x%x] ",pHddCtx->cfg_ini->InfraSbaAcBk);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [DelayedTriggerFrmInt] Value = [%u] ",pHddCtx->cfg_ini->DelayedTriggerFrmInt);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [mcastBcastFilterSetting] Value = [%u] ",pHddCtx->cfg_ini->mcastBcastFilterSetting);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fhostArpOffload] Value = [%u] ",pHddCtx->cfg_ini->fhostArpOffload);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ssdp] Value = [%u] ", pHddCtx->cfg_ini->ssdp);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [%s] Value = [%u] ", CFG_ENABLE_HOST_BROADCAST_NAME, pHddCtx->cfg_ini->bcastptrn);
#ifdef FEATURE_RUNTIME_PM
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [runtime_pm] Value = [%u] ", pHddCtx->cfg_ini->runtime_pm);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [runtime_pm_delay] Value = [%u] ", pHddCtx->cfg_ini->runtime_pm_delay);
#endif
#ifdef FEATURE_SECURE_FIRMWARE
  hddLog(LOG2, "Name = [enable_fw_hash_check] Value = [%u]",
         pHddCtx->cfg_ini->enable_fw_hash_check);
#endif
#ifdef FEATURE_WLAN_RA_FILTERING
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [RArateLimitInterval] Value = [%u] ", pHddCtx->cfg_ini->RArateLimitInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [IsRArateLimitEnabled] Value = [%u] ", pHddCtx->cfg_ini->IsRArateLimitEnabled);
#endif
#ifdef WLAN_FEATURE_VOWIFI_11R
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fFTResourceReqSupported] Value = [%u] ",pHddCtx->cfg_ini->fFTResourceReqSupported);
#endif

#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborReassocRssiThreshold] Value = [%u] ",pHddCtx->cfg_ini->nNeighborReassocRssiThreshold);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborLookupRssiThreshold] Value = [%u] ",pHddCtx->cfg_ini->nNeighborLookupRssiThreshold);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nOpportunisticThresholdDiff] Value = [%u] ",
            pHddCtx->cfg_ini->nOpportunisticThresholdDiff);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nRoamRescanRssiDiff] Value = [%u] ",
            pHddCtx->cfg_ini->nRoamRescanRssiDiff);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMinChanTime] Value = [%u] ",pHddCtx->cfg_ini->nNeighborScanMinChanTime);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanMaxChanTime] Value = [%u] ",pHddCtx->cfg_ini->nNeighborScanMaxChanTime);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nMaxNeighborRetries] Value = [%u] ",pHddCtx->cfg_ini->nMaxNeighborReqTries);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanPeriod] Value = [%u] ",pHddCtx->cfg_ini->nNeighborScanPeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",pHddCtx->cfg_ini->nNeighborResultsRefreshPeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nEmptyScanRefreshPeriod] Value = [%u] ",pHddCtx->cfg_ini->nEmptyScanRefreshPeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nRoamBmissFirstBcnt] Value = [%u] ",
            pHddCtx->cfg_ini->nRoamBmissFirstBcnt);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nRoamBmissFinalBcnt] Value = [%u] ",
            pHddCtx->cfg_ini->nRoamBmissFinalBcnt);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nRoamBeaconRssiWeight] Value = [%u] ",
            pHddCtx->cfg_ini->nRoamBeaconRssiWeight);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [allowDFSChannelRoam] Value = [%u] ",
            pHddCtx->cfg_ini->allowDFSChannelRoam);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nhi_rssi_scan_max_count] Value = [%u] ",
            pHddCtx->cfg_ini->nhi_rssi_scan_max_count);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nhi_rssi_scan_rssi_delta] Value = [%u] ",
            pHddCtx->cfg_ini->nhi_rssi_scan_rssi_delta);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nhi_rssi_scan_delay] Value = [%u] ",
            pHddCtx->cfg_ini->nhi_rssi_scan_delay);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [nhi_rssi_scan_rssi_ub] Value = [%u] ",
            pHddCtx->cfg_ini->nhi_rssi_scan_rssi_ub);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [burstSizeDefinition] Value = [0x%x] ",pHddCtx->cfg_ini->burstSizeDefinition);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [tsInfoAckPolicy] Value = [0x%x] ",pHddCtx->cfg_ini->tsInfoAckPolicy);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [rfSettlingTimeUs] Value = [%u] ",pHddCtx->cfg_ini->rfSettlingTimeUs);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bSingleTidRc] Value = [%u] ",pHddCtx->cfg_ini->bSingleTidRc);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gDynamicPSPollvalue] Value = [%u] ",pHddCtx->cfg_ini->dynamicPsPollValue);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAddTSWhenACMIsOff] Value = [%u] ",pHddCtx->cfg_ini->AddTSWhenACMIsOff);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gValidateScanList] Value = [%u] ",pHddCtx->cfg_ini->fValidateScanList);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gStaKeepAlivePeriod] Value = [%u] ",pHddCtx->cfg_ini->infraStaKeepAlivePeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApDataAvailPollInterVal] Value = [%u] ",pHddCtx->cfg_ini->apDataAvailPollPeriodInMs);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [BandCapability] Value = [%u] ",pHddCtx->cfg_ini->nBandCapability);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fEnableBeaconEarlyTermination] Value = [%u] ",pHddCtx->cfg_ini->fEnableBeaconEarlyTermination);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [teleBcnWakeupEnable] Value = [%u] ",pHddCtx->cfg_ini->teleBcnWakeupEn);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransListenInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [transLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnTransLiNumIdleBeacons);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxListenInterval] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxListenInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [maxLiNumIdleBeacons] Value = [%u] ",pHddCtx->cfg_ini->nTeleBcnMaxLiNumIdleBeacons);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [bcnEarlyTermWakeInterval] Value = [%u] ",pHddCtx->cfg_ini->bcnEarlyTermWakeInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableBypass11d] Value = [%u] ",pHddCtx->cfg_ini->enableBypass11d);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableDFSChnlScan] Value = [%u] ",pHddCtx->cfg_ini->enableDFSChnlScan);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableDFSPnoChnlScan] Value = [%u] ",pHddCtx->cfg_ini->enable_dfs_pno_chnl_scan);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gReportMaxLinkSpeed] Value = [%u] ",pHddCtx->cfg_ini->reportMaxLinkSpeed);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [thermalMitigationEnable] Value = [%u] ",pHddCtx->cfg_ini->thermalMitigationEnable);
#ifdef WLAN_FEATURE_11AC
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gVhtChannelWidth] value = [%u]",pHddCtx->cfg_ini->vhtChannelWidth);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableFirstScan2GOnly] Value = [%u] ",pHddCtx->cfg_ini->enableFirstScan2GOnly);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",pHddCtx->cfg_ini->skipDfsChnlInP2pSearch);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",pHddCtx->cfg_ini->ignoreDynamicDtimInP2pMode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableRxSTBC] Value = [%u] ",pHddCtx->cfg_ini->enableRxSTBC);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableLpwrImgTransition] Value = [%u] ",pHddCtx->cfg_ini->enableLpwrImgTransition);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableSSR] Value = [%u] ",pHddCtx->cfg_ini->enableSSR);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableVhtFor24GHzBand] Value = [%u] ",pHddCtx->cfg_ini->enableVhtFor24GHzBand);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [gEnableVendorVhtFor24GHzBand] Value = [%u] ",
            pHddCtx->cfg_ini->enable_vendor_vht_for_24ghz_band);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gFlexConnectPowerFactor] Value = [%u] ", pHddCtx->cfg_ini->flexConnectPowerFactor);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableIbssHeartBeatOffload] Value = [%u] ", pHddCtx->cfg_ini->enableIbssHeartBeatOffload);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAntennaDiversity] Value = [%u] ", pHddCtx->cfg_ini->antennaDiversity);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gGoLinkMonitorPeriod] Value = [%u]",pHddCtx->cfg_ini->goLinkMonitorPeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApLinkMonitorPeriod] Value = [%u]",pHddCtx->cfg_ini->apLinkMonitorPeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gGoKeepAlivePeriod] Value = [%u]",pHddCtx->cfg_ini->goKeepAlivePeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gApKeepAlivePeriod]Value = [%u]",pHddCtx->cfg_ini->apKeepAlivePeriod);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
        "Name = [gMaxAmsduNum] Value = [%u] ", pHddCtx->cfg_ini->max_amsdu_num);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [nSelect5GHzMargin] Value = [%u] ",pHddCtx->cfg_ini->nSelect5GHzMargin);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gCoalesingInIBSS] Value = [%u] ",pHddCtx->cfg_ini->isCoalesingInIBSSAllowed);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssATIMWinSize] Value = [%u] ",pHddCtx->cfg_ini->ibssATIMWinSize);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssIsPowerSaveAllowed] Value = [%u] ",pHddCtx->cfg_ini->isIbssPowerSaveAllowed);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssIsPowerCollapseAllowed] Value = [%u] ",pHddCtx->cfg_ini->isIbssPowerCollapseAllowed);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssAwakeOnTxRx] Value = [%u] ",pHddCtx->cfg_ini->isIbssAwakeOnTxRx);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssInactivityCount);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",pHddCtx->cfg_ini->ibssTxSpEndInactivityTime);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIbssPsWarmupTime] Value = [%u] ",pHddCtx->cfg_ini->ibssPsWarmupTime);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
          pHddCtx->cfg_ini->ibssPs1RxChainInAtimEnable);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
                   "Name = [gIgnorePeerErpInfo] Value = [%u] ",
                                         pHddCtx->cfg_ini->ignorePeerErpInfo);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [fDfsPhyerrFilterOffload] Value = [%u] ",pHddCtx->cfg_ini->fDfsPhyerrFilterOffload);

#ifdef IPA_OFFLOAD
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIPAConfig] Value = [0x%x] ",pHddCtx->cfg_ini->IpaConfig);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIPADescSize] Value = [%u] ",pHddCtx->cfg_ini->IpaDescSize);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [IpaHighBandwidthMbpsg] Value = [%u] ",pHddCtx->cfg_ini->IpaHighBandwidthMbps);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [IpaMediumBandwidthMbps] Value = [%u] ",pHddCtx->cfg_ini->IpaMediumBandwidthMbps);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [IpaLowBandwidthMbps] Value = [%u] ",pHddCtx->cfg_ini->IpaLowBandwidthMbps);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gEnableOverLapCh] Value = [%u] ",pHddCtx->cfg_ini->gEnableOverLapCh);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAcsScanBandPreference] Value = [%u] ",pHddCtx->cfg_ini->acsScanBandPreference);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gMaxOffloadPeers] Value = [%u] ",pHddCtx->cfg_ini->apMaxOffloadPeers);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gMaxOffloadReorderBuffs] value = [%u] ",pHddCtx->cfg_ini->apMaxOffloadReorderBuffs);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [overrideCountryCode] Value = [%s] ",pHddCtx->cfg_ini->overrideCountryCode);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gAllowDFSChannelRoam] Value = [%u] ",pHddCtx->cfg_ini->allowDFSChannelRoam);
  hddLog(VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gMaxConcurrentActiveSessions] Value = [%u] ", pHddCtx->cfg_ini->gMaxConcurrentActiveSessions);

#ifdef FEATURE_BUS_BANDWIDTH
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gBusBandwidthHighThreshold] Value = [%u] ",
          pHddCtx->cfg_ini->busBandwidthHighThreshold);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gBusBandwidthMediumThreshold] Value = [%u] ",
          pHddCtx->cfg_ini->busBandwidthMediumThreshold);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gBusBandwidthLowThreshold] Value = [%u] ",
          pHddCtx->cfg_ini->busBandwidthLowThreshold);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gbusBandwidthComputeInterval] Value = [%u] ",
          pHddCtx->cfg_ini->busBandwidthComputeInterval);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gTcpDelAckThresholdHigh] Value = [%u] ",
          pHddCtx->cfg_ini->tcpDelackThresholdHigh);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gTcpDelAckThresholdLow] Value = [%u] ",
          pHddCtx->cfg_ini->tcpDelackThresholdLow);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [tcpDelackTimerCount] Value = [%u] ",
          pHddCtx->cfg_ini->tcpDelackTimerCount);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [%s] Value = [%u] ", CFG_TCP_TX_HIGH_TPUT_THRESHOLD_NAME,
          pHddCtx->cfg_ini->tcp_tx_high_tput_thres);

#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gIgnoreCAC] Value = [%u] ",
          pHddCtx->cfg_ini->ignoreCAC);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gSapPreferredChanLocation] Value = [%u] ",
          pHddCtx->cfg_ini->gSapPreferredChanLocation);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gDisableDfsJapanW53] Value = [%u] ",
          pHddCtx->cfg_ini->gDisableDfsJapanW53);
#ifdef FEATURE_GREEN_AP
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gEnableGreenAp] Value = [%u] ",
          pHddCtx->cfg_ini->enableGreenAP);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gEenableEGAP] Value = [%u] ",
          pHddCtx->cfg_ini->enable_egap);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gEGAPInactTime] Value = [%u] ",
          pHddCtx->cfg_ini->egap_inact_time);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gEGAPWaitTime] Value = [%u] ",
          pHddCtx->cfg_ini->egap_wait_time);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gEGAPFeatures] Value = [%u] ",
          pHddCtx->cfg_ini->egap_feature_flag);
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [isRoamOffloadEnabled] Value = [%u]",
                   pHddCtx->cfg_ini->isRoamOffloadEnabled);
#endif

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gEnableHostapdEdcaLocal] Value = [%u]",
                   pHddCtx->cfg_ini->enable_hostapd_edca_local);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gEnableSifsBurst] Value = [%u]",
                   pHddCtx->cfg_ini->enableSifsBurst);

#ifdef WLAN_FEATURE_LPSS
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [gEnableLpassSupport] Value = [%u] ",
            pHddCtx->cfg_ini->enablelpasssupport);
#endif

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gEnableSelfRecovery] Value = [%u]",
                   pHddCtx->cfg_ini->enableSelfRecovery);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gEnableAcTxqOptimize] Value = [%u]",
                   pHddCtx->cfg_ini->enable_ac_txq_optimize);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [gEnableSapSuspend] Value = [%u]",
            pHddCtx->cfg_ini->enableSapSuspend);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gIgnorePeerHTopMode] Value = [%u]",
                   pHddCtx->cfg_ini->ignore_peer_ht_opmode);
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWgotoSuspend] Value = [%u]",
                   pHddCtx->cfg_ini->extWowGotoSuspend);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWowApp1WakeupPinNumber] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp1WakeupPinNumber);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWowApp2WakeupPinNumber] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2WakeupPinNumber);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2KAInitPingInterval] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2KAInitPingInterval);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2KAMinPingInterval] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2KAMinPingInterval);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2KAMaxPingInterval] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2KAMaxPingInterval);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2KAIncPingInterval] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2KAIncPingInterval);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2TcpSrcPort] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2TcpSrcPort);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2TcpDstPort] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2TcpDstPort);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2TcpTxTimeout] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2TcpTxTimeout);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gExtWoWApp2TcpRxTimeout] Value = [%u]",
                   pHddCtx->cfg_ini->extWowApp2TcpRxTimeout);
#endif
#ifdef IPA_UC_STA_OFFLOAD
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
          "Name = [gIpaUcStaOffload] Value = [%u] ",
                   pHddCtx->cfg_ini->ipa_uc_sta_offload);
#endif

#ifdef DHCP_SERVER_OFFLOAD
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gDHCPServerOffloadEnable] Value = [%u]",
                   pHddCtx->cfg_ini->enableDHCPServerOffload);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gDHCPMaxNumClients] Value = [%u]",
                   pHddCtx->cfg_ini->dhcpMaxNumClients);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gDHCPClientStartIP] Value = [%u]",
                   pHddCtx->cfg_ini->dhcp_client_start_ip);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gDHCPServerIP] Value = [%s]",
                   pHddCtx->cfg_ini->dhcpServerIP);
#endif

#ifdef MDNS_OFFLOAD
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSOffloadEnable] Value = [%u]",
                   pHddCtx->cfg_ini->enable_mdns_offload);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSFqdn] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_fqdn);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSUniqueFqdn] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_uniquefqdn);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeA] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_a);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeAIpv4Addr] Value = [%u]",
                   pHddCtx->cfg_ini->mdns_resp_type_a_ipv4);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeTXT] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_txt);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeTXTContent] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_txt_content);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypePTR] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_ptr);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypePTRDomainName] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_ptr_dname);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeSRV] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_srv);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeSRVPriority] Value = [%u]",
                   pHddCtx->cfg_ini->mdns_resp_type_srv_priority);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeSRVWeight] Value = [%u]",
                   pHddCtx->cfg_ini->mdns_resp_type_srv_weight);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeSRVPort] Value = [%u]",
                   pHddCtx->cfg_ini->mdns_resp_type_srv_port);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
           "Name = [gMDNSResponseTypeSRVTarget] Value = [%s]",
                   pHddCtx->cfg_ini->mdns_resp_type_srv_target);
#endif
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
                    "Name = [gEnableFatalEvent] Value = [%u] ",
                          pHddCtx->cfg_ini->enable_fatal_event);
  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
            "Name = [gEnableDumpCollect] Value = [%u]",
                     pHddCtx->cfg_ini->is_ramdump_enabled);

  VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
        "Name = [sta_auth_retries_for_code17] Value = [%u] ",
         pHddCtx->cfg_ini->sta_auth_retries_for_code17);

  hddLog(LOG2, "Name = [gP2PListenDeferInterval] Value = [%u]",
                   pHddCtx->cfg_ini->p2p_listen_defer_interval);

  hddLog(LOG2, "Name = [gfine_time_meas_cap] Value = [%u]",
                   pHddCtx->cfg_ini->fine_time_meas_cap);
  hddLog(LOG2, "Name = [gmax_mgmt_tx_failure_count] Value = [%u]",
                   pHddCtx->cfg_ini->max_mgmt_tx_fail_count);
  hddLog(LOG2, "Name = [%s] Value = [%d]",
                 CFG_FIRST_SCAN_BUCKET_THRESHOLD_NAME,
                 pHddCtx->cfg_ini->first_scan_bucket_threshold);

  hddLog(LOG2, "Name = [gdot11_mib_stats_enabled] Value = [%u]",
                   pHddCtx->cfg_ini->mib_stats_enabled);
  hddLog(LOG2, "Name = [gEnable_go_cts2self_for_sta] Value = [%u]",
                   pHddCtx->cfg_ini->enable_go_cts2self_for_sta);
  hddLog(LOG2, "Name = [ght_mpdu_density] Value = [%u]",
                   pHddCtx->cfg_ini->ht_mpdu_density);
  hddLog(LOG2, "Name = [gMinRestTimeConc] Value = [%u]",
                   pHddCtx->cfg_ini->min_rest_time_conc);
  hddLog(LOG2, "Name = [gIdleTimeConc] Value = [%u]",
                   pHddCtx->cfg_ini->idle_time_conc);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
         CFG_USE_OTP_MAC, pHddCtx->cfg_ini->g_use_otpmac);

  hddLog(LOG2,"Name = [%s] Value = [%u]",
          CFG_ENABLE_EDCA_INI_NAME,
          pHddCtx->cfg_ini->enable_edca_params);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VO_CWMIN_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vo_cwmin);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VI_CWMIN_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vi_cwmin);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BK_CWMIN_VALUE_NAME,
          pHddCtx->cfg_ini->edca_bk_cwmin);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BE_CWMIN_VALUE_NAME,
          pHddCtx->cfg_ini->edca_be_cwmin);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VO_CWMAX_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vo_cwmax);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VI_CWMAX_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vi_cwmax);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BK_CWMAX_VALUE_NAME,
          pHddCtx->cfg_ini->edca_bk_cwmax);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BE_CWMAX_VALUE_NAME,
          pHddCtx->cfg_ini->edca_be_cwmax);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VO_AIFS_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vo_aifs);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_VI_AIFS_VALUE_NAME,
          pHddCtx->cfg_ini->edca_vi_aifs);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BK_AIFS_VALUE_NAME,
          pHddCtx->cfg_ini->edca_bk_aifs);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_EDCA_BE_AIFS_VALUE_NAME,
          pHddCtx->cfg_ini->edca_be_aifs);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_ENABLE_VHT_DYNAMIC_STA_CHAINMASK,
          pHddCtx->cfg_ini->enable_dynamic_sta_chainmask);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_BUG_ON_REINIT_FAILURE_NAME,
          pHddCtx->cfg_ini->bug_on_reinit_failure);

  hddLog(LOG2, "Name = [%s] Value = [%s]",
          CFG_ENABLE_TX_SCHED_WRR_VO,
          pHddCtx->cfg_ini->tx_sched_wrr_vo);
  hddLog(LOG2, "Name = [%s] Value = [%s]",
          CFG_ENABLE_TX_SCHED_WRR_VI,
          pHddCtx->cfg_ini->tx_sched_wrr_vi);
  hddLog(LOG2, "Name = [%s] Value = [%s]",
          CFG_ENABLE_TX_SCHED_WRR_BK,
          pHddCtx->cfg_ini->tx_sched_wrr_bk);
  hddLog(LOG2, "Name = [%s] Value = [%s]",
          CFG_ENABLE_TX_SCHED_WRR_BE,
          pHddCtx->cfg_ini->tx_sched_wrr_be);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
                 CFG_TGT_GTX_USR_CFG_NAME,
                 pHddCtx->cfg_ini->tgt_gtx_usr_cfg);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
                 CFG_SAP_INTERNAL_RESTART_NAME,
                 pHddCtx->cfg_ini->sap_internal_restart);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
                CFG_SAP_FORCE_11N_FOR_11AC_NAME,
                pHddCtx->cfg_ini->sap_force_11n_for_11ac);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
          CFG_SAP_MAX_INACTIVITY_OVERRIDE_NAME,
          pHddCtx->cfg_ini->sap_max_inactivity_override);
  hddLog(LOG2, "Name = [%s] Value = [%u]",
                 CFG_ACTIVE_MODE_OFFLOAD,
                 pHddCtx->cfg_ini->active_mode_offload);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
                 CFG_BPF_PACKET_FILTER_OFFLOAD,
                 pHddCtx->cfg_ini->bpf_packet_filter_enable);
  hddLog(LOG2, "Name = [%s] Value = [%u] ",
          CFG_SAP_PROBE_RESP_OFFLOAD_NAME,
          pHddCtx->cfg_ini->sap_probe_resp_offload);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
         CFG_SUB_20_CHANNEL_WIDTH_NAME,
         pHddCtx->cfg_ini->sub_20_channel_width);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
         CFG_STA_CHANGE_COUNTRYCODE_DYN_NAME ,
         pHddCtx->cfg_ini->sta_change_cc_via_beacon);


  hdd_ndp_print_ini_config(pHddCtx);

  hddLog(LOG2, "Name = [%s] Value = [%u] ",
                 CFG_TDLS_ENABLE_DEFER_TIMER,
                 pHddCtx->cfg_ini->tdls_enable_defer_time);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_WHITELIST_NAME,
               pHddCtx->cfg_ini->probe_req_ie_whitelist);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP0_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_0);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP1_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_1);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP2_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_2);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP3_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_3);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP4_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_4);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP5_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_5);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP6_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_6);

  hddLog(LOG2, "Name = [%s] Value = [%x] ",
               CFG_PRB_REQ_IE_BIT_MAP7_NAME,
               pHddCtx->cfg_ini->probe_req_ie_bitmap_7);

  hddLog(LOG2, "Name = [%s] Value =[%s]",
               CFG_PROBE_REQ_OUI_NAME,
               pHddCtx->cfg_ini->probe_req_ouis);

  hddLog(LOG2, "Name = [%s] Value = [%u]",
                 CFG_ARP_AC_CATEGORY,
                 pHddCtx->cfg_ini->arp_ac_category);
  hdd_cfg_print_sae(pHddCtx);
  hdd_cfg_print_sae_sap(pHddCtx);
}

#define CFG_VALUE_MAX_LEN 256
#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
static VOS_STATUS hdd_cfg_get_config(REG_TABLE_ENTRY *reg_table,
                              unsigned long cRegTableEntries,
                              v_U8_t *ini_struct,
                              hdd_context_t *pHddCtx, char *pBuf, int buflen)
{
   unsigned int idx;
   REG_TABLE_ENTRY *pRegEntry = reg_table;
   v_U32_t value;
   char valueStr[CFG_VALUE_MAX_LEN];
   char configStr[CFG_ENTRY_MAX_LEN];
   char *fmt;
   void *pField;
   v_MACADDR_t *pMacAddr;
   char *pCur = pBuf;
   int curlen;

   // start with an empty string
   *pCur = '\0';

   for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
   {
      pField = ini_struct + pRegEntry->VarOffset;

      if ( ( WLAN_PARAM_Integer       == pRegEntry->RegType ) ||
           ( WLAN_PARAM_SignedInteger == pRegEntry->RegType ) ||
           ( WLAN_PARAM_HexInteger    == pRegEntry->RegType ) )
      {
         value = 0;
         memcpy( &value, pField, pRegEntry->VarSize );
         if ( WLAN_PARAM_HexInteger == pRegEntry->RegType )
         {
            fmt = "%x";
         }
         else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
         {
            fmt = "%d";
         }
         else
         {
            fmt = "%u";
         }
         snprintf(valueStr, CFG_VALUE_MAX_LEN, fmt, value);
      }
      else if ( WLAN_PARAM_String == pRegEntry->RegType )
      {
         snprintf(valueStr, CFG_VALUE_MAX_LEN, "%s", (char *)pField);
      }
      else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
      {
         pMacAddr = (v_MACADDR_t *) pField;
         snprintf(valueStr, CFG_VALUE_MAX_LEN,
                  "%02x:%02x:%02x:%02x:%02x:%02x",
                  pMacAddr->bytes[0],
                  pMacAddr->bytes[1],
                  pMacAddr->bytes[2],
                  pMacAddr->bytes[3],
                  pMacAddr->bytes[4],
                  pMacAddr->bytes[5]);
      }
      else
      {
         snprintf(valueStr, CFG_VALUE_MAX_LEN, "(unhandled)");
      }
      curlen = scnprintf(configStr, CFG_ENTRY_MAX_LEN,
                        "%s=[%s]%s\n",
                        pRegEntry->RegName,
                        valueStr,
                        test_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg) ?
                        "*" : "");

      // ideally we want to return the config to the application
      // however the config is too big so we just printk() for now
#ifdef RETURN_IN_BUFFER
      if (curlen < buflen)
      {
         // copy string + '\0'
         memcpy(pCur, configStr, curlen+1);

         // account for addition;
         pCur += curlen;
         buflen -= curlen;
      }
      else
      {
         // buffer space exhausted, return what we have
         return VOS_STATUS_E_RESOURCES;
      }
#else
      printk(KERN_INFO "%s", configStr);
#endif // RETURN_IN_BUFFER
}

#ifndef RETURN_IN_BUFFER
   // notify application that output is in system log
   snprintf(pCur, buflen, "WLAN configuration written to system log");
#endif // RETURN_IN_BUFFER

   return VOS_STATUS_SUCCESS;
}

VOS_STATUS hdd_cfg_get_global_config(hdd_context_t *pHddCtx, char *pBuf,
                                                                    int buflen)
{
    return hdd_cfg_get_config(g_registry_table, ARRAY_SIZE(g_registry_table),
                              (v_U8_t *) pHddCtx->cfg_ini,
                              pHddCtx, pBuf, buflen);
}

#ifdef WLAN_FEATURE_MBSSID
VOS_STATUS hdd_cfg_get_sap_dyn_config(hdd_adapter_t *pAdapter, char *pBuf,
                                                                    int buflen)
{
    return hdd_cfg_get_config(mbssid_sap_dyn_ini_reg_table,
                              ARRAY_SIZE(mbssid_sap_dyn_ini_reg_table),
                              (v_U8_t *) &pAdapter->sap_dyn_ini_cfg,
                              WLAN_HDD_GET_CTX(pAdapter),
                              pBuf, buflen);
}
#endif

static VOS_STATUS find_cfg_item (tCfgIniEntry* iniTable, unsigned long entries,
    char *name, char** value)
{
   VOS_STATUS status = VOS_STATUS_E_FAILURE;
   unsigned long i;

   for (i = 0; i < entries; i++) {
     if (strcmp(iniTable[i].name, name) == 0) {
       *value = iniTable[i].value;
       VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Found %s entry for Name=[%s] Value=[%s] ",
           WLAN_INI_FILE, name, *value);
       return VOS_STATUS_SUCCESS;
     }
   }

   return status;
}

static int parseHexDigit(char c)
{
  if (c >= '0' && c <= '9')
    return c-'0';
  if (c >= 'a' && c <= 'f')
    return c-'a'+10;
  if (c >= 'A' && c <= 'F')
    return c-'A'+10;

  return 0;
}

static int update_mac_from_param(tSirMacAddr mac, unsigned char const *str_mac)
{
   int i = 0;
   char *end;
   int ret = -EINVAL;

   for (;;) {
      mac[i++] = simple_strtoul(str_mac, &end, 16);
      if (i == 6) {
         if (!*end || (*end == ' '))
            ret = 0;
         break;
      }
      str_mac = end + 1;
      if ((*end != '-') && (*end != ':'))
         break;
   }
   return ret;
}

/* convert string to 6 bytes mac address
 * 00AA00BB00CC -> 0x00 0xAA 0x00 0xBB 0x00 0xCC
 */
static void update_mac_from_string(hdd_context_t *pHddCtx, tCfgIniEntry *macTable, int num)
{
   int i = 0, j = 0, res = 0;
   char *candidate = NULL;
   v_MACADDR_t macaddr[VOS_MAX_CONCURRENCY_PERSONA];

   memset(macaddr, 0, sizeof(macaddr));

   for (i = 0; i < num; i++)
   {
      candidate = macTable[i].value;
      for (j = 0; j < VOS_MAC_ADDR_SIZE; j++) {
         res = hex2bin(&macaddr[i].bytes[j], &candidate[(j<<1)], 1);
         if (res < 0)
            break;
      }
      if (res == 0 && !vos_is_macaddr_zero(&macaddr[i])) {
         hddLog(VOS_TRACE_LEVEL_INFO,
                "wlan_mac.bin update mac addr[%d] from " MAC_ADDRESS_STR
                " to " MAC_ADDRESS_STR,
                i,
                MAC_ADDR_ARRAY(pHddCtx->cfg_ini->intfMacAddr[i].bytes),
                MAC_ADDR_ARRAY(macaddr[i].bytes));
         vos_mem_copy((v_U8_t *)&pHddCtx->cfg_ini->intfMacAddr[i].bytes[0],
                      (v_U8_t *)&macaddr[i].bytes[0], VOS_MAC_ADDR_SIZE);
      }
   }
}

/*
 * This function tries to update mac address from cfg file.
 * It overwrites the MAC address if config file exist.
 */
VOS_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx)
{
   int status, i = 0;
   const struct firmware *fw = NULL;
   char *line, *buffer = NULL, *temp = NULL;
   char *name, *value;
   tCfgIniEntry macTable[VOS_MAX_CONCURRENCY_PERSONA];
   tSirMacAddr customMacAddr;

   VOS_STATUS vos_status = VOS_STATUS_SUCCESS;

   /* First check if mac parameter is provided */
   if (mac_param) {
      if (update_mac_from_param(customMacAddr, mac_param) == 0) {
         /* Successfully retrieved mac from param */
         vos_mem_copy(&pHddCtx->cfg_ini->intfMacAddr[0].bytes[0],
                      &customMacAddr, sizeof(tSirMacAddr));
         sme_SetCustomMacAddr(customMacAddr);
         return vos_status;
      }
   }

   memset(macTable, 0, sizeof(macTable));
   status = qca_request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev);

   if (status)
   {
      hddLog(VOS_TRACE_LEVEL_WARN, "%s: request_firmware failed %d",
             __func__, status);
      vos_status = VOS_STATUS_E_FAILURE;
      return vos_status;
   }
   if (!fw || !fw->data || !fw->size)
   {
      hddLog(VOS_TRACE_LEVEL_FATAL, "%s: invalid firmware", __func__);
      vos_status = VOS_STATUS_E_INVAL;
      goto config_exit;
   }

   temp = buffer = (char *) vos_mem_malloc(fw->size + 1);
   if (NULL == buffer) {
      hddLog(VOS_TRACE_LEVEL_FATAL, "%s: unable to allocate memory",__func__);
      release_firmware(fw);
      return VOS_STATUS_E_NOMEM;
   }

   vos_mem_copy((void*)buffer,(void *)fw->data, fw->size);
   buffer[fw->size] = '\0';

   /* data format:
    * Intf0MacAddress=00AA00BB00CC
    * Intf1MacAddress=00AA00BB00CD
    * END
    */
   while (buffer != NULL)
   {
      line = get_next_line(buffer);
      buffer = i_trim(buffer);

      if (strlen((char *)buffer) == 0 || *buffer == '#') {
         buffer = line;
         continue;
      }
      if (strncmp(buffer, "END", 3) == 0)
         break;

      name = buffer;
      buffer = strchr(buffer, '=');
      if (buffer) {
         *buffer++ = '\0';
         i_trim(name);
         if (strlen(name) != 0) {
            buffer = i_trim(buffer);
            if (strlen(buffer) == 12) {
               value = buffer;
               macTable[i].name = name;
               macTable[i++].value = value;
               if (i >= VOS_MAX_CONCURRENCY_PERSONA)
                  break;
            }
         }
      }
      buffer = line;
   }
   if (i <= VOS_MAX_CONCURRENCY_PERSONA) {
      hddLog(VOS_TRACE_LEVEL_INFO, "%s: %d Mac addresses provided", __func__, i);
   }
   else {
      hddLog(VOS_TRACE_LEVEL_ERROR, "%s: invalid number of Mac address provided, nMac = %d",
             __func__, i);
      vos_status = VOS_STATUS_E_INVAL;
      goto config_exit;
   }

   update_mac_from_string(pHddCtx, &macTable[0], i);

   vos_mem_copy(&customMacAddr,
                     &pHddCtx->cfg_ini->intfMacAddr[0].bytes[0],
                     sizeof(tSirMacAddr));
   sme_SetCustomMacAddr(customMacAddr);

config_exit:
   release_firmware(fw);
   vos_mem_free(temp);
   return vos_status;
}

static VOS_STATUS hdd_apply_cfg_ini( hdd_context_t *pHddCtx, tCfgIniEntry* iniTable, unsigned long entries)
{
   VOS_STATUS match_status = VOS_STATUS_E_FAILURE;
   VOS_STATUS ret_status = VOS_STATUS_SUCCESS;
   unsigned int idx;
   void *pField;
   char *value_str = NULL;
   unsigned long len_value_str;
   char *candidate;
   v_U32_t value;
   v_S31_t svalue;
   void *pStructBase = pHddCtx->cfg_ini;
   REG_TABLE_ENTRY *pRegEntry = g_registry_table;
   unsigned long cRegTableEntries  = sizeof(g_registry_table) / sizeof( g_registry_table[ 0 ]);
   v_U32_t cbOutString;
   int i;
   int rv;

   if (MAX_CFG_INI_ITEMS < cRegTableEntries) {
      hddLog(LOGE, FL("MAX_CFG_INI_ITEMS too small, must be at least %ld"),
             cRegTableEntries);
      WARN_ON(1);
   }

   for ( idx = 0; idx < cRegTableEntries; idx++, pRegEntry++ )
   {
      //Calculate the address of the destination field in the structure.
      pField = ( (v_U8_t *)pStructBase )+ pRegEntry->VarOffset;

      match_status = find_cfg_item(iniTable, entries, pRegEntry->RegName, &value_str);

      if( (match_status != VOS_STATUS_SUCCESS) && ( pRegEntry->Flags & VAR_FLAGS_REQUIRED ) )
      {
         // If we could not read the cfg item and it is required, this is an error.
         hddLog(LOGE, "%s: Failed to read required config parameter %s",
            __func__, pRegEntry->RegName);
         ret_status = VOS_STATUS_E_FAILURE;
         break;
      }

      if ( ( WLAN_PARAM_Integer    == pRegEntry->RegType ) ||
           ( WLAN_PARAM_HexInteger == pRegEntry->RegType ) )
      {
         // If successfully read from the registry, use the value read.
         // If not, use the default value.
         if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_Integer == pRegEntry->RegType)) {
            rv = kstrtou32(value_str, 10, &value);
            if (rv < 0) {
                hddLog(LOGE, "%s: Reg Parameter %s invalid. Enforcing default",
                       __func__, pRegEntry->RegName);
                value = pRegEntry->VarDefault;
            }
         }
         else if ( match_status == VOS_STATUS_SUCCESS && (WLAN_PARAM_HexInteger == pRegEntry->RegType)) {
            rv = kstrtou32(value_str, 16, &value);
            if (rv < 0) {
                hddLog(LOGE, "%s: Reg paramter %s invalid. Enforcing default",
                       __func__, pRegEntry->RegName);
                value = pRegEntry->VarDefault;
            }
         }
         else {
            value = pRegEntry->VarDefault;
         }

         // If this parameter needs range checking, do it here.
         if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
         {
            if ( value > pRegEntry->VarMax )
            {
               hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Maximum",
                      __func__, pRegEntry->RegName, value, pRegEntry->VarMax );
               value = pRegEntry->VarMax;
            }

            if ( value < pRegEntry->VarMin )
            {
               hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Minimum",
                      __func__, pRegEntry->RegName, value, pRegEntry->VarMin);
               value = pRegEntry->VarMin;
            }
         }
         // If this parameter needs range checking, do it here.
         else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
         {
            if ( value > pRegEntry->VarMax )
            {
               hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum [%u > %lu]. Enforcing Default= %lu",
                  __func__, pRegEntry->RegName, value, pRegEntry->VarMax, pRegEntry->VarDefault  );
               value = pRegEntry->VarDefault;
            }

            if ( value < pRegEntry->VarMin )
            {
               hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum [%u < %lu]. Enforcing Default= %lu",
                  __func__, pRegEntry->RegName, value, pRegEntry->VarMin, pRegEntry->VarDefault  );
               value = pRegEntry->VarDefault;
            }
         }

         // Move the variable into the output field.
         memcpy( pField, &value, pRegEntry->VarSize );
      }
      else if ( WLAN_PARAM_SignedInteger == pRegEntry->RegType )
      {
         // If successfully read from the registry, use the value read.
         // If not, use the default value.
         if (VOS_STATUS_SUCCESS == match_status)
         {
            rv = kstrtos32(value_str, 10, &svalue);
            if (rv < 0) {
                hddLog(VOS_TRACE_LEVEL_WARN, "%s: Reg Parameter %s invalid. Enforcing Default",
                       __func__, pRegEntry->RegName);
                svalue = (v_S31_t)pRegEntry->VarDefault;
            }
         }
         else
         {
            svalue = (v_S31_t)pRegEntry->VarDefault;
         }

         // If this parameter needs range checking, do it here.
         if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK )
         {
            if ( svalue > (v_S31_t)pRegEntry->VarMax )
            {
               hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
                      "[%d > %d]. Enforcing Maximum", __func__,
                      pRegEntry->RegName, svalue, (int)pRegEntry->VarMax );
               svalue = (v_S31_t)pRegEntry->VarMax;
            }

            if ( svalue < (v_S31_t)pRegEntry->VarMin )
            {
               hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
                      "[%d < %d]. Enforcing Minimum",  __func__,
                      pRegEntry->RegName, svalue, (int)pRegEntry->VarMin);
               svalue = (v_S31_t)pRegEntry->VarMin;
            }
         }
         // If this parameter needs range checking, do it here.
         else if ( pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT )
         {
            if ( svalue > (v_S31_t)pRegEntry->VarMax )
            {
               hddLog(LOGE, "%s: Reg Parameter %s > allowed Maximum "
                      "[%d > %d]. Enforcing Default= %d",
                      __func__, pRegEntry->RegName, svalue,
                      (int)pRegEntry->VarMax,
                      (int)pRegEntry->VarDefault  );
               svalue = (v_S31_t)pRegEntry->VarDefault;
            }

            if ( svalue < (v_S31_t)pRegEntry->VarMin )
            {
               hddLog(LOGE, "%s: Reg Parameter %s < allowed Minimum "
                      "[%d < %d]. Enforcing Default= %d",
                      __func__, pRegEntry->RegName, svalue,
                      (int)pRegEntry->VarMin,
                      (int)pRegEntry->VarDefault);
               svalue = pRegEntry->VarDefault;
            }
         }

         // Move the variable into the output field.
         memcpy( pField, &svalue, pRegEntry->VarSize );
      }
      // Handle string parameters
      else if ( WLAN_PARAM_String == pRegEntry->RegType )
      {
#ifdef WLAN_CFG_DEBUG
         VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "RegName = %s, VarOffset %u VarSize %u VarDefault %s",
            pRegEntry->RegName, pRegEntry->VarOffset, pRegEntry->VarSize, (char*)pRegEntry->VarDefault);
#endif
         if ( match_status == VOS_STATUS_SUCCESS)
         {
            len_value_str = strlen(value_str);

            if(len_value_str > (pRegEntry->VarSize - 1)) {
               hddLog(LOGE, "%s: Invalid Value=[%s] specified for Name=[%s] in %s",
                  __func__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
               cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
               memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
               ( (v_U8_t *)pField )[ cbOutString ] = '\0';
            }
            else
            {
               memcpy( pField, (void *)(value_str), len_value_str);
               ( (v_U8_t *)pField )[ len_value_str ] = '\0';
            }
         }
         else
         {
            // Failed to read the string parameter from the registry.  Use the default.
            cbOutString = utilMin( strlen( (char *)pRegEntry->VarDefault ), pRegEntry->VarSize - 1 );
            memcpy( pField, (void *)(pRegEntry->VarDefault), cbOutString );
            ( (v_U8_t *)pField )[ cbOutString ] = '\0';
         }
      }
      else if ( WLAN_PARAM_MacAddr == pRegEntry->RegType )
      {
         if(pRegEntry->VarSize != VOS_MAC_ADDR_SIZE) {
               hddLog(LOGE, "%s: Invalid VarSize %u for Name=[%s]",
                   __func__, pRegEntry->VarSize, pRegEntry->RegName);
            continue;
         }
         candidate = (char*)pRegEntry->VarDefault;
         if ( match_status == VOS_STATUS_SUCCESS) {
            len_value_str = strlen(value_str);
            if(len_value_str != (VOS_MAC_ADDR_SIZE*2)) {
               hddLog(LOGE, "%s: Invalid MAC addr [%s] specified for Name=[%s] in %s",
                  __func__, value_str, pRegEntry->RegName, WLAN_INI_FILE);
            }
            else
               candidate = value_str;
         }
         //parse the string and store it in the byte array
         for(i=0; i<VOS_MAC_ADDR_SIZE; i++)
         {
            ((char*)pField)[i] =
              (char)(parseHexDigit(candidate[i*2])*16 + parseHexDigit(candidate[i*2+1]));
         }
      }
      else
      {
         hddLog(LOGE, "%s: Unknown param type for name[%s] in registry table",
            __func__, pRegEntry->RegName);
      }

      // did we successfully parse a cfg item for this parameter?
      if( (match_status == VOS_STATUS_SUCCESS) &&
          (idx < MAX_CFG_INI_ITEMS) )
      {
         set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
      }
   }

   print_hdd_cfg(pHddCtx);

   return( ret_status );
}

#ifdef WLAN_FEATURE_MBSSID
v_VOID_t hdd_mbssid_apply_def_cfg_ini(hdd_adapter_t *pAdapter)
{
   hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
   hdd_config_t *iniConfig = pHddCtx->cfg_ini;
   mbssid_sap_dyn_ini_config_t *sap_ini_cfg = &pAdapter->sap_dyn_ini_cfg;

   sap_ini_cfg->acsScanBandPreference = iniConfig->acsScanBandPreference;
   sap_ini_cfg->acsBandSwitchThreshold = iniConfig->acsBandSwitchThreshold;
}
#endif

eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode( eHddDot11Mode dot11Mode )
{
   switch (dot11Mode)
   {
      case (eHDD_DOT11_MODE_abg):
         return eCSR_DOT11_MODE_abg;
      case (eHDD_DOT11_MODE_11b):
         return eCSR_DOT11_MODE_11b;
      case (eHDD_DOT11_MODE_11g):
         return eCSR_DOT11_MODE_11g;
      default:
      case (eHDD_DOT11_MODE_11n):
         return eCSR_DOT11_MODE_11n;
      case (eHDD_DOT11_MODE_11g_ONLY):
         return eCSR_DOT11_MODE_11g_ONLY;
      case (eHDD_DOT11_MODE_11n_ONLY):
         return eCSR_DOT11_MODE_11n_ONLY;
      case (eHDD_DOT11_MODE_11b_ONLY):
         return eCSR_DOT11_MODE_11b_ONLY;
#ifdef WLAN_FEATURE_11AC
      case (eHDD_DOT11_MODE_11ac_ONLY):
         return eCSR_DOT11_MODE_11ac_ONLY;
      case (eHDD_DOT11_MODE_11ac):
         return eCSR_DOT11_MODE_11ac;
#else
      /* If 11AC support is not compiled set Auto mode */
      case (eHDD_DOT11_MODE_11ac):
      case (eHDD_DOT11_MODE_11ac_ONLY):
         return eCSR_DOT11_MODE_AUTO;
#endif
      case (eHDD_DOT11_MODE_AUTO):
         return eCSR_DOT11_MODE_AUTO;
      case (eHDD_DOT11_MODE_11a):
         return eCSR_DOT11_MODE_11a;
   }

}

#ifdef FEATURE_WLAN_SUB_20_MHZ
/**
 * hdd_cfg_get_sub20_dyn_capabilities()
 * @hdd_ctx_ptr:  HDD context
 *
 * This function is used to get dynamic capabilities of sub 20MHz channel width
 * Return: sub 20 channel width
 */
uint8_t hdd_cfg_get_sub20_dyn_capabilities(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;
	uint8_t sub_20_channel_width = config_ptr->sub_20_channel_width;

	switch (sub_20_channel_width) {
	case CFG_SUB_20_CHANNEL_WIDTH_DYN_5MHZ:
		return SUB20_MODE_5MHZ;
	case CFG_SUB_20_CHANNEL_WIDTH_DYN_10MHZ:
		return SUB20_MODE_10MHZ;
	case CFG_SUB_20_CHANNEL_WIDTH_DYN_ALL:
	case CFG_SUB_20_CHANNEL_WIDTH_MANUAL:
		return SUB20_MODE_5MHZ | SUB20_MODE_10MHZ;
	default:
		return SUB20_MODE_NONE;
	}
}
/**
 * hdd_cfg_get_static_sub20_channel_width()
 * @hdd_ctx_ptr:  HDD context
 *
 * This function is used to get static sub 20MHz channel width
 * Return: sub 20 channel width
 */
uint8_t hdd_cfg_get_static_sub20_channel_width(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;

	if (config_ptr->sub_20_channel_width ==
	    CFG_SUB_20_CHANNEL_WIDTH_5MHZ) {
		return SUB20_MODE_5MHZ;
	} else if (config_ptr->sub_20_channel_width ==
		   CFG_SUB_20_CHANNEL_WIDTH_10MHZ) {
		return SUB20_MODE_10MHZ;
	}
	return SUB20_MODE_NONE;
}

/**
 * hdd_cfg_is_sub20_channel_width_enabled()
 * @hdd_ctx_ptr:  HDD context
 *
 * This function is used to check if sub 20MHz enabled
 * Return: true of false
 */
bool hdd_cfg_is_sub20_channel_width_enabled(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;

	return config_ptr->sub_20_channel_width !=
		 CFG_SUB_20_CHANNEL_WIDTH_DISABLE;
}

/**
 * hdd_cfg_is_static_sub20_channel_width_enabled()
 * @hdd_ctx_ptr:  HDD context
 *
 * This function is used to check if static sub 20MHz enabled
 * Return: true of false
 */
bool hdd_cfg_is_static_sub20_channel_width_enabled(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;

	return (config_ptr->sub_20_channel_width ==
		CFG_SUB_20_CHANNEL_WIDTH_5MHZ) ||
	       (config_ptr->sub_20_channel_width ==
		CFG_SUB_20_CHANNEL_WIDTH_10MHZ);
}

/**
 * hdd_cfg_get_sub20_channel_config()
 * @hdd_ctx_ptr:  HDD context
 *
 * This function is used to get sub20 config
 * Return: sub20 config value
 */
uint8_t hdd_cfg_get_sub20_channel_config(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;

	if (config_ptr->sub_20_channel_width >= CFG_SUB_20_CHANNEL_WIDTH_MIN &&
	    config_ptr->sub_20_channel_width <= CFG_SUB_20_CHANNEL_WIDTH_MAX)
		return config_ptr->sub_20_channel_width;
	return 0;
}
#endif

#ifdef WLAN_FEATURE_TSF_PLUS
bool hdd_cfg_is_ptp_opt_enable(hdd_context_t *hdd_ctx_ptr)
{
	hdd_config_t *config_ptr = hdd_ctx_ptr->cfg_ini;

	return (config_ptr->tsf_ptp_options != 0);
}
#endif

static void hdd_set_power_save_config(hdd_context_t *pHddCtx, tSmeConfigParams *smeConfig)
{
   hdd_config_t *pConfig = pHddCtx->cfg_ini;

   tPmcBmpsConfigParams bmpsParams;

   sme_GetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams);

   if (strcmp(pConfig->PowerUsageControl, "Min") == 0)
   {
      smeConfig->csrConfig.impsSleepTime   = pConfig->nImpsMinSleepTime;
      bmpsParams.bmpsPeriod                = pConfig->nBmpsMinListenInterval;
      bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
      bmpsParams.bcnEarlyTermWakeInterval  = pConfig->bcnEarlyTermWakeInterval;
   }
   if (strcmp(pConfig->PowerUsageControl, "Max") == 0)
   {
      smeConfig->csrConfig.impsSleepTime   = pConfig->nImpsMaxSleepTime;
      bmpsParams.bmpsPeriod                = pConfig->nBmpsMaxListenInterval;
      bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
      bmpsParams.bcnEarlyTermWakeInterval  = pConfig->bcnEarlyTermWakeInterval;
   }
   if (strcmp(pConfig->PowerUsageControl, "Mod") == 0)
   {
      smeConfig->csrConfig.impsSleepTime   = pConfig->nImpsModSleepTime;
      bmpsParams.bmpsPeriod                = pConfig->nBmpsModListenInterval;
      bmpsParams.enableBeaconEarlyTermination = pConfig->fEnableBeaconEarlyTermination;
      bmpsParams.bcnEarlyTermWakeInterval  = pConfig->bcnEarlyTermWakeInterval;
   }

   if (pConfig->fIsImpsEnabled)
   {
      sme_EnablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
   }
   else
   {
      sme_DisablePowerSave (pHddCtx->hHal, ePMC_IDLE_MODE_POWER_SAVE);
   }

  /*If isAndroidPsEn is 1 then Host driver and above layers control the PS mechanism
    If Value set to 0 Driver/Core Stack internally control the Power saving mechanism */
   sme_SetHostPowerSave (pHddCtx->hHal, pConfig->isAndroidPsEn);

   if (pConfig->fIsBmpsEnabled)
   {
      sme_EnablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
   }
   else
   {
      sme_DisablePowerSave (pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
   }

   bmpsParams.trafficMeasurePeriod = pConfig->nAutoBmpsTimerValue;

   if (sme_SetConfigPowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE, &bmpsParams)== eHAL_STATUS_FAILURE)
   {
      hddLog(LOGE, "SetConfigPowerSave failed to set BMPS params");
   }

   if(pConfig->fIsAutoBmpsTimerEnabled)
   {
      sme_StartAutoBmpsTimer(pHddCtx->hHal);
   }

}

static void hdd_set_power_save_offload_config(hdd_context_t *pHddCtx)
{
   hdd_config_t *pConfig = pHddCtx->cfg_ini;
   tANI_U32 listenInterval = 0;

   if (strcmp(pConfig->PowerUsageControl, "Min") == 0)
   {
      listenInterval = pConfig->nBmpsMinListenInterval;
   }
   else if (strcmp(pConfig->PowerUsageControl, "Max") == 0)
   {
      listenInterval = pConfig->nBmpsMaxListenInterval;
   }
   else if (strcmp(pConfig->PowerUsageControl, "Mod") == 0)
   {
      listenInterval = pConfig->nBmpsModListenInterval;
   }

   /*
    * Based on Mode Set the LI
    * Otherwise default LI value of 1 will
    * be taken
    */
   if (listenInterval)
   {
      /*
       * setcfg for listenInterval.
       * Make sure CFG is updated because PE reads this
       * from CFG at the time of assoc or reassoc
       */
      ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_LISTEN_INTERVAL, listenInterval,
                   NULL, eANI_BOOLEAN_FALSE);
   }

   if(pConfig->fIsBmpsEnabled)
   {
      sme_ConfigEnablePowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
   }
   else
   {
      sme_ConfigDisablePowerSave(pHddCtx->hHal, ePMC_BEACON_MODE_POWER_SAVE);
   }
}

VOS_STATUS hdd_set_idle_ps_config(hdd_context_t *pHddCtx, v_U32_t val)
{
   hdd_config_t *pConfig = pHddCtx->cfg_ini;
   VOS_STATUS status = VOS_STATUS_SUCCESS;

   hddLog(LOG1, "hdd_set_idle_ps_config: Enter Val %d pconfig %pK ",
                 val, pConfig);

   if(pConfig && pConfig->fIsImpsEnabled)
   {
      status = sme_SetIdlePowersaveConfig(pHddCtx->pvosContext, val);
      if(VOS_STATUS_SUCCESS != status)
      {
         hddLog(LOGE, "Fail to Set Idle PS Config val %d", val);
      }
   }
   else
   {
      hddLog(LOG1, "hdd_set_idle_ps_config: IMPS not enabled in ini");
   }
   return status;
}

/**
 * hdd_set_fine_time_meas_cap() - set fine timing measurement capability
 * @hdd_ctx: HDD context
 * @sme_config: pointer to SME config
 *
 * This function is used to pass fine timing measurement capability coming
 * from INI to SME. This function make sure that configure INI is supported
 * by the device. Use bit mask to mask out the unsupported capabilities.
 *
 * Return: None
 */
static void hdd_set_fine_time_meas_cap(hdd_context_t *hdd_ctx,
				       tSmeConfigParams *sme_config)
{
	hdd_config_t *config = hdd_ctx->cfg_ini;
	uint32_t capability = config->fine_time_meas_cap;

	/* Make sure only supported capabilities are enabled in INI */
	capability &= CFG_FINE_TIME_MEAS_CAPABILITY_MAX;
	sme_config->fine_time_meas_cap = capability;

	hddLog(LOG1, FL("fine time meas capability - INI: %04x Enabled: %04x"),
		config->fine_time_meas_cap, sme_config->fine_time_meas_cap);

	return;
}

/**
 * hdd_convert_string_to_u8_array() - used to convert string into u8 array
 * @str: String to be converted
 * @hex_array: Array where converted value is stored
 * @len: Length of the populated array
 * @array_max_len: Maximum length of the array
 * @to_hex: true, if conversion required for hex string
 *
 * This API is called to convert string (each byte separated by
 * a comma) into an u8 array
 *
 * Return: VOS_STATUS
 */

static VOS_STATUS hdd_convert_string_to_array(char *str, uint8_t *array,
			       uint8_t *len, uint8_t array_max_len, bool to_hex)
{
	char *format, *s = str;

	if (str == NULL || array == NULL || len == NULL)
		return VOS_STATUS_E_INVAL;

	format = (to_hex) ? "%02x" : "%d";

	*len = 0;
	while ((s != NULL) && (*len < array_max_len)) {
		int val;
		/* Increment length only if sscanf successfully extracted
		 * one element. Any other return value means error.
		 * Ignore it. */
		if (sscanf(s, format, &val) == 1) {
			array[*len] = (tANI_U8) val;
			*len += 1;
		}

		s = strpbrk(s, ",");
		if (s)
			s++;
	}

	return VOS_STATUS_SUCCESS;
}

/**
 * hdd_hex_string_to_u8_array() - used to convert hex string into u8 array
 * @str: Hexadecimal string
 * @hex_array: Array where converted value is stored
 * @len: Length of the populated array
 * @array_max_len: Maximum length of the array
 *
 * This API is called to convert hexadecimal string (each byte separated by
 * a comma) into an u8 array
 *
 * Return: VOS_STATUS
 */
VOS_STATUS hdd_hex_string_to_u8_array(char *str, uint8_t *hex_array,
				      uint8_t *len, uint8_t array_max_len)
{
	return hdd_convert_string_to_array(str, hex_array, len,
					   array_max_len, true);
}

/**
 * hdd_string_to_u8_array() - used to convert decimal string into u8 array
 * @str: Decimal string
 * @hex_array: Array where converted value is stored
 * @len: Length of the populated array
 * @array_max_len: Maximum length of the array
 *
 * This API is called to convert decimal string (each byte separated by
 * a comma) into an u8 array
 *
 * Return: VOS_STATUS
 */

VOS_STATUS hdd_string_to_u8_array(char *str, uint8_t *array,
				  uint8_t *len, uint8_t array_max_len)
{
	return hdd_convert_string_to_array(str, array, len,
					   array_max_len, false);
}

/**
 * hdd_hex_string_to_u16_array() - convert a hex string to a uint16 array
 * @str: input string
 * @int_array: pointer to input array of type uint16
 * @len: pointer to number of elements which the function adds to the array
 * @int_array_max_len: maximum number of elements in input uint16 array
 *
 * This function is used to convert a space separated hex string to an array of
 * uint16_t. For example, an input string str = "a b c d" would be converted to
 * a unint16 array, int_array = {0xa, 0xb, 0xc, 0xd}, *len = 4.
 * This assumes that input value int_array_max_len >= 4.
 *
 * Return: VOS_STATUS_SUCCESS - if the conversion is successful
 *         non zero value     - if the conversion is a failure
 */
VOS_STATUS hdd_hex_string_to_u16_array(char *str,
		uint16_t *int_array, uint8_t *len, uint8_t int_array_max_len)
{
	char *s = str;
	uint32_t val = 0;
	if (str == NULL || int_array == NULL || len == NULL)
		return VOS_STATUS_E_INVAL;

	hddLog(VOS_TRACE_LEVEL_ERROR,
		FL("str %pK intArray %pK intArrayMaxLen %d"),
		s, int_array, int_array_max_len);

	*len = 0;

	while ((s != NULL) && (*len < int_array_max_len)) {
		/*
		 * Increment length only if sscanf successfully extracted one
		 * element. Any other return value means error. Ignore it.
		 */
		if (sscanf(s, "%x", &val) == 1) {
			int_array[*len] = (uint16_t) val;
			hddLog(VOS_TRACE_LEVEL_DEBUG,
				FL("s %pK val %x intArray[%d]=0x%x"),
				s, val, *len, int_array[*len]);
			*len += 1;
		}
		s = strpbrk(s, " ");
		if (s)
			s++;
	}
	return VOS_STATUS_SUCCESS;
}

#ifdef MDNS_OFFLOAD
VOS_STATUS hdd_string_to_string_array(char *data, uint8_t *datalist,
                                    char separator, uint8_t *num_entries,
                                    uint8_t max_entries, uint8_t max_len_entry)
{
    uint8_t num = 0;
    char *str = data;
    char *field;

    if ((data == NULL) || ( datalist == NULL) || (num_entries == NULL))
        return VOS_STATUS_E_INVAL;

    /* parse the string */
    while (str && ('\0' != *str) && (num < max_entries)) {
        field = str;
        while (('\0' != *str) && (separator != *str))
           str++;
        if ('\0' == *str) {
            /* reach the end of string */
            if ('\0' != *field) {
              strlcpy((char *)(datalist + (num * max_len_entry)),
                      field, max_len_entry);
              num++;
            }
            break;
        }
        /* replace separator with NUL to terminate the data */
        *str++ = '\0';
        strlcpy((char *)(datalist + (num * max_len_entry)),
                field, max_len_entry);
        num++;
    }
    *num_entries = num;

    return VOS_STATUS_SUCCESS;
}
#endif

v_BOOL_t hdd_update_config_dat( hdd_context_t *pHddCtx )
{
   v_BOOL_t  fStatus = TRUE;
   tANI_U32 val;
   tANI_U16 val16;

   hdd_config_t *pConfig = pHddCtx->cfg_ini;
   tSirMacHTCapabilityInfo *phtCapInfo;


   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
      pConfig->ShortGI20MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BA_AUTO_SETUP, pConfig->BlockAckAutoSetup,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_BA_AUTO_SETUP to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
      pConfig->MaxRxAmpduFactor, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE,"Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MPDU_DENSITY,
       pConfig->ht_mpdu_density, NULL, eANI_BOOLEAN_FALSE) ==
                                              eHAL_STATUS_FAILURE) {
      fStatus = FALSE;
      hddLog(LOGE, FL("Could not pass on WNI_CFG_MPDU_DENSITY to CCM"));
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE, pConfig->fIsShortPreamble,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE,"Could not pass on WNI_CFG_SHORT_PREAMBLE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME,
        pConfig->nPassiveMinChnTime, NULL,
        eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME"
                     " to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
        pConfig->nPassiveMaxChnTime, NULL,
        eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME"
                     " to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL, pConfig->nBeaconInterval,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_BEACON_INTERVAL to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_PS_POLL, pConfig->nMaxPsPoll,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA, pConfig-> nRxAnt, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Failure: Could not pass on WNI_CFG_CURRENT_RX_ANTENNA configuration info to HAL");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE, pConfig->fIsLowGainOverride,
         NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD, pConfig->nRssiFilterPeriod,
         NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_IGNORE_DTIM, pConfig->fIgnoreDtim,
         NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_IGNORE_DTIM configuration to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT, pConfig->fEnableFwHeartBeatMonitoring,
                    NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_HEART_BEAT configuration info to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER, pConfig->fEnableFwBeaconFiltering,
                    NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_BCN_FILTER configuration info to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR, pConfig->fEnableFwRssiMonitoring,
                    NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Failure: Could not pass on WNI_CFG_PS_RSSI_MONITOR configuration info to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT, pConfig->nDataInactivityTimeout,
                    NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT configuration info to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_NTH_BEACON_FILTER, pConfig->nthBeaconFilter,
                    NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_NTH_BEACON_FILTER configuration info to CCM");
   }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX, pConfig->enableLTECoex,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_LTE_COEX to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE, pConfig->nEnableListenMode,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT, pConfig->apKeepAlivePeriod,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT, pConfig->goKeepAlivePeriod,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT, pConfig->apLinkMonitorPeriod,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CCM");
     }

    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_GO_LINK_MONITOR_TIMEOUT, pConfig->goLinkMonitorPeriod,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CCM");
     }


#if defined WLAN_FEATURE_VOWIFI
    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING, pConfig->mcastBcastFilterSetting,
                     NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE,
		"Could not pass on WNI_CFG_MCAST_BCAST_FILTER_SETTING to CCM");
     }
#endif

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC, pConfig->bSingleTidRc,
                      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_SINGLE_TID_RC configuration info to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN, pConfig->teleBcnWakeupEn,
                      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN configuration info to CCM");
     }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI, pConfig->nTeleBcnTransListenInterval,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI configuration info to CCM");
    }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI, pConfig->nTeleBcnMaxListenInterval,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI configuration info to CCM");
    }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS, pConfig->nTeleBcnTransLiNumIdleBeacons,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS configuration info to CCM");
    }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS, pConfig->nTeleBcnMaxLiNumIdleBeacons,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
      fStatus = FALSE;
      hddLog(LOGE,"Failure: Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS configuration info to CCM");
    }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK, pConfig->rfSettlingTimeUs,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK configuration info to CCM");
    }

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD, pConfig->infraStaKeepAlivePeriod,
                      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD configuration info to CCM");
     }
    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE, pConfig->dynamicPsPollValue,
                     NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
       fStatus = FALSE;
       hddLog(LOGE,"Failure: Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE configuration info to CCM");
    }

    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT, pConfig->nNullDataApRespTimeout,
               NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
       fStatus = FALSE;
       hddLog(LOGE,"Failure: Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT configuration info to CCM");
    }

    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD, pConfig->apDataAvailPollPeriodInMs,
               NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD configuration info to CCM");
    }
    if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD, pConfig->FragmentationThreshold,
                   NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD configuration info to CCM");
    }
    if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD, pConfig->RTSThreshold,
                        NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_RTS_THRESHOLD configuration info to CCM");
    }

    if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_11D_ENABLED, pConfig->Is11dSupportEnabled,
                        NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_11D_ENABLED configuration info to CCM");
    }

    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DFS_MASTER_ENABLED,
                     pConfig->enableDFSMasterCap, NULL,
                     eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
        fStatus = FALSE;
        hddLog(LOGE,
               "Failure: Could not set value for WNI_CFG_DFS_MASTER_ENABLED");
    }

    if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_ENABLE_TXBF_20MHZ,
                     pConfig->enableTxBFin20MHz, NULL,
                     eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
        fStatus = FALSE;
        hddLog(LOGE,
               "Failure: Could not set value for WNI_CFG_VHT_ENABLE_TXBF_20MHZ");
    }

    if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD, pConfig->HeartbeatThresh24,
                        NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
    {
        fStatus = FALSE;
        hddLog(LOGE,"Failure: Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD configuration info to CCM");
    }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
      pConfig->ShortGI40MhzEnable, NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CCM");
   }


     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST, pConfig->fEnableMCAddrList,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CCM");
     }

#ifdef WLAN_FEATURE_11AC
   /* Based on cfg.ini, update the Basic MCS set, RX/TX MCS map in the cfg.dat */
   /* valid values are 0(MCS0-7), 1(MCS0-8), 2(MCS0-9) */
   /* we update only the least significant 2 bits in the corresponding fields */
   if( (pConfig->dot11Mode == eHDD_DOT11_MODE_AUTO) ||
       (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) ||
       (pConfig->dot11Mode == eHDD_DOT11_MODE_11ac) )
   {
       {
           /* Currently shortGI40Mhz is used for shortGI80Mhz */
           if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_SHORT_GI_80MHZ,
               pConfig->ShortGI40MhzEnable, NULL, eANI_BOOLEAN_FALSE)
               == eHAL_STATUS_FAILURE)
           {
               fStatus = FALSE;
               hddLog(LOGE, "Could not pass WNI_VHT_SHORT_GI_80MHZ to CCM");
           }
           // Hardware is capable of doing 128K AMPDU in 11AC mode
           if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_AMPDU_LEN_EXPONENT,
                           pConfig->fVhtAmpduLenExponent, NULL,
                           eANI_BOOLEAN_FALSE)
               == eHAL_STATUS_FAILURE)
           {
               fStatus = FALSE;
               hddLog(LOGE, "Could not pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CCM");
           }

           /* Change MU Bformee only when TxBF is enabled */
           if (pConfig->enableTxBF)
           {
               ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
                            &val);

               if(val != pConfig->enableMuBformee)
               {
                   if(ccmCfgSetInt(pHddCtx->hHal,
                           WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
                           pConfig->enableMuBformee, NULL,
                           eANI_BOOLEAN_FALSE) ==eHAL_STATUS_FAILURE)
                   {
                        fStatus = FALSE;
                        hddLog(LOGE, "Could not pass on WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CCM");
                   }
               }
          }
           if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_MAX_MPDU_LENGTH,
                           pConfig->vhtMpduLen, NULL,
                           eANI_BOOLEAN_FALSE)
               == eHAL_STATUS_FAILURE)
           {
               fStatus = FALSE;
               hddLog(LOGE, "Could not pass on WNI_CFG_VHT_MAX_MPDU_LENGTH to CCM");
           }
       }
   }
#endif

     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_NUM_BUFF_ADVERT,pConfig->numBuffAdvert,
        NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
     {
        fStatus = FALSE;
        hddLog(LOGE, "Could not pass on WNI_CFG_NUM_BUFF_ADVERT to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
                     pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
         ==eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CCM");
     }

     ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, &val);
     val16 = (tANI_U16)val;
     phtCapInfo = (tSirMacHTCapabilityInfo *)&val16;
     phtCapInfo->rxSTBC = pConfig->enableRxSTBC;
     phtCapInfo->advCodingCap = pConfig->enableRxLDPC;
     val = val16;
     if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO,
                      val, NULL, eANI_BOOLEAN_FALSE)
         == eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
                     pConfig->enableRxSTBC, NULL, eANI_BOOLEAN_FALSE)
         ==eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_TXSTBC,
                     pConfig->enableTxSTBC, NULL, eANI_BOOLEAN_FALSE)
         ==eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TXSTBC to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP,
                     pConfig->enableRxLDPC, NULL, eANI_BOOLEAN_FALSE)
         ==eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE, "Could not pass on WNI_CFG_VHT_LDPC_CODING_CAP to CCM");
     }

#ifdef WLAN_SOFTAP_VSTA_FEATURE
     if(pConfig->fEnableVSTASupport)
     {
        ccmCfgGetInt(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, &val);
        if( val <= WNI_CFG_ASSOC_STA_LIMIT_STADEF)
            val = WNI_CFG_ASSOC_STA_LIMIT_STAMAX;
     }
     else
     {
            val = pHddCtx->max_peers;

     }
     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, val,
         NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
     {
         fStatus = FALSE;
         hddLog(LOGE,"Failure: Could not pass on WNI_CFG_ASSOC_STA_LIMIT configuration info to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT_AP,
                     pConfig->max_sap_peers, NULL, eANI_BOOLEAN_FALSE)
        == eHAL_STATUS_FAILURE) {
         fStatus = FALSE;
         hddLog(LOGE,"can't pass WNI_CFG_ASSOC_STA_LIMIT_AP to CCM");
     }

     if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT_GO,
                     pConfig->max_go_peers, NULL, eANI_BOOLEAN_FALSE)
        == eHAL_STATUS_FAILURE) {
         fStatus = FALSE;
         hddLog(LOGE,"can't pass WNI_CFG_ASSOC_STA_LIMIT_GO to CCM");
     }
#endif
   if(ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
                   pConfig->enableLpwrImgTransition, NULL, eANI_BOOLEAN_FALSE)
       ==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED, pConfig->enableMCCAdaptiveScheduler,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CCM");
   }
   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP, pConfig->disableLDPCWithTxbfAP,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ZERO, pConfig->retryLimitZero,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ZERO to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ONE, pConfig->retryLimitOne,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ONE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_TWO, pConfig->retryLimitTwo,
      NULL, eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_TWO to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_MEDIUM_TIME, pConfig->cfgMaxMediumTime,
      NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_MAX_MEDIUM_TIME to CCM");
   }

#ifdef FEATURE_WLAN_TDLS

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,
                    pConfig->fTDLSUapsdMask, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK to CCM");
   }
   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_BUF_STA_ENABLED,
                    pConfig->fEnableTDLSBufferSta, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CCM");
   }
   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_PUAPSD_INACT_TIME,
                    pConfig->fTDLSPuapsdInactivityTimer, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_PUAPSD_INACT_TIME to CCM");
   }
   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_RX_FRAME_THRESHOLD,
                    pConfig->fTDLSRxFrameThreshold, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,
                    pConfig->fEnableTDLSOffChannel, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TDLS_WMM_MODE_ENABLED,
                    pConfig->fEnableTDLSWmmMode, NULL,
                    eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TDLS_WMM_MODE_ENABLED to CCM");
   }

#endif

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN,
                    pConfig->fEnableAdaptRxDrain, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_ENABLE_ADAPT_RX_DRAIN to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_FLEX_CONNECT_POWER_FACTOR,
                    pConfig->flexConnectPowerFactor, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Failure: Could not pass on "
             "WNI_CFG_FLEX_CONNECT_POWER_FACTOR to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_ANTENNA_DIVESITY,
                    pConfig->antennaDiversity, NULL,
                    eANI_BOOLEAN_FALSE)==eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_ANTENNA_DIVESITY to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal,
                    WNI_CFG_DEFAULT_RATE_INDEX_24GHZ,
                    pConfig->defaultRateIndex24Ghz,
                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal,
                    WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
                    pConfig->debugP2pRemainOnChannel,
                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
       fStatus = FALSE;
       hddLog(LOGE,
              "Could not pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CCM");
   }

#ifdef WLAN_FEATURE_11W
   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
                    pConfig->pmfSaQueryMaxRetries, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_SA_QUERY_MAX_RETRIES to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
                    pConfig->pmfSaQueryRetryInterval, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_SA_QUERY_RETRY_INTERVAL to CCM");
   }
#endif

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_IBSS_ATIM_WIN_SIZE,
                    pConfig->ibssATIMWinSize, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_TGT_GTX_USR_CFG,
                    pConfig->tgt_gtx_usr_cfg, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
   {
      fStatus = FALSE;
      hddLog(LOGE, "Could not pass on WNI_CFG_TGT_GTX_USR_CFG to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MAX_HT_MCS_TX_DATA,
                    pConfig->max_ht_mcs_txdata, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_MAX_HT_MCS_TX_DATA to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MASK_TX_HT_RATE,
                    pConfig->mask_tx_ht_rate, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_MASK_TX_HT_RATE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_MASK_TX_LEGACY_RATE,
                    pConfig->mask_tx_legacy_rate, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_MASK_TX_LEGACY_RATE to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA,
                    pConfig->disable_abg_rate_txdata, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_DISABLE_ABG_RATE_FOR_TX_DATA to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RATE_FOR_TX_MGMT,
                    pConfig->rate_for_tx_mgmt, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_RATE_FOR_TX_MGMT to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RATE_FOR_TX_MGMT_2G,
                    pConfig->rate_for_tx_mgmt_2g, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_RATE_FOR_TX_MGMT_2G to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_RATE_FOR_TX_MGMT_5G,
                    pConfig->rate_for_tx_mgmt_5g, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_RATE_FOR_TX_MGMT_5G to CCM");
   }

   if (ccmCfgSetInt(pHddCtx->hHal, WNI_CFG_REMOVE_TIME_SYNC_CMD,
                    pConfig->remove_time_stamp_sync_cmd, NULL,
                    eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_REMOVE_TIME_SYNC_CMD to CCM");
   }

   return fStatus;
}


/**---------------------------------------------------------------------------

  \brief hdd_set_sme_config() -

   This function initializes the sme configuration parameters

  \param  - pHddCtx - Pointer to the HDD Adapter.

  \return - 0 for success, non zero for failure

  --------------------------------------------------------------------------*/

VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
{
   VOS_STATUS status = VOS_STATUS_SUCCESS;
   eHalStatus halStatus;
   tSmeConfigParams *smeConfig;
   uint8_t rrm_capab_len;

   hdd_config_t *pConfig = pHddCtx->cfg_ini;

   smeConfig = vos_mem_malloc(sizeof(*smeConfig));
   if (NULL == smeConfig)
   {
      VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
              "%s: unable to allocate smeConfig", __func__);
      return VOS_STATUS_E_NOMEM;
   }
   vos_mem_zero(smeConfig, sizeof(*smeConfig));

   VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH,
              "%s bWmmIsEnabled=%d 802_11e_enabled=%d dot11Mode=%d", __func__,
              pConfig->WmmMode, pConfig->b80211eIsEnabled, pConfig->dot11Mode);

   // Config params obtained from the registry
   /* To Do */
   // set regulatory information here

   smeConfig->csrConfig.RTSThreshold             = pConfig->RTSThreshold;
   smeConfig->csrConfig.FragmentationThreshold   = pConfig->FragmentationThreshold;
   smeConfig->csrConfig.shortSlotTime            = pConfig->ShortSlotTimeEnabled;
   smeConfig->csrConfig.Is11dSupportEnabled      = pConfig->Is11dSupportEnabled;
   smeConfig->csrConfig.HeartbeatThresh24        = pConfig->HeartbeatThresh24;

   smeConfig->csrConfig.phyMode                  = hdd_cfg_xlate_to_csr_phy_mode ( pConfig->dot11Mode );

   if (pConfig->dot11Mode == eHDD_DOT11_MODE_abg ||
       pConfig->dot11Mode == eHDD_DOT11_MODE_11b ||
       pConfig->dot11Mode == eHDD_DOT11_MODE_11g ||
       pConfig->dot11Mode == eHDD_DOT11_MODE_11b_ONLY ||
       pConfig->dot11Mode == eHDD_DOT11_MODE_11g_ONLY) {
       smeConfig->csrConfig.channelBondingMode24GHz = 0;
       smeConfig->csrConfig.channelBondingMode5GHz = 0;
   } else {
      smeConfig->csrConfig.channelBondingMode24GHz =
                       pConfig->nChannelBondingMode24GHz;
      smeConfig->csrConfig.channelBondingMode5GHz =
                       pConfig->nChannelBondingMode5GHz;
   }
   smeConfig->csrConfig.TxRate                   = pConfig->TxRate;
   smeConfig->csrConfig.nScanResultAgeCount      = pConfig->ScanResultAgeCount;
   smeConfig->csrConfig.scanAgeTimeNCNPS         = pConfig->nScanAgeTimeNCNPS;
   smeConfig->csrConfig.scanAgeTimeNCPS          = pConfig->nScanAgeTimeNCPS;
   smeConfig->csrConfig.scanAgeTimeCNPS          = pConfig->nScanAgeTimeCNPS;
   smeConfig->csrConfig.scanAgeTimeCPS           = pConfig->nScanAgeTimeCPS;
   smeConfig->csrConfig.AdHocChannel24           = pConfig->OperatingChannel;
   smeConfig->csrConfig.fEnforce11dChannels      = pConfig->fEnforce11dChannels;
   smeConfig->csrConfig.fSupplicantCountryCodeHasPriority     = pConfig->fSupplicantCountryCodeHasPriority;
   smeConfig->csrConfig.fEnforceCountryCodeMatch = pConfig->fEnforceCountryCodeMatch;
   smeConfig->csrConfig.fEnforceDefaultDomain    = pConfig->fEnforceDefaultDomain;
   smeConfig->csrConfig.bCatRssiOffset           = pConfig->nRssiCatGap;
   smeConfig->csrConfig.vccRssiThreshold         = pConfig->nVccRssiTrigger;
   smeConfig->csrConfig.vccUlMacLossThreshold    = pConfig->nVccUlMacLossThreshold;
   smeConfig->csrConfig.nRoamingTime             = pConfig->nRoamingTime;
   smeConfig->csrConfig.IsIdleScanEnabled        = pConfig->nEnableIdleScan;
   smeConfig->csrConfig.nInitialDwellTime        = pConfig->nInitialDwellTime;
   smeConfig->csrConfig.initial_scan_no_dfs_chnl =
                                            pConfig->initial_scan_no_dfs_chnl;
   smeConfig->csrConfig.nActiveMaxChnTime        = pConfig->nActiveMaxChnTime;
   smeConfig->csrConfig.nActiveMinChnTime        = pConfig->nActiveMinChnTime;
   smeConfig->csrConfig.nPassiveMaxChnTime       = pConfig->nPassiveMaxChnTime;
   smeConfig->csrConfig.nPassiveMinChnTime       = pConfig->nPassiveMinChnTime;
   smeConfig->csrConfig.disableAggWithBtc        = pConfig->disableAggWithBtc;
#ifdef WLAN_AP_STA_CONCURRENCY
   smeConfig->csrConfig.nActiveMaxChnTimeConc    = pConfig->nActiveMaxChnTimeConc;
   smeConfig->csrConfig.nActiveMinChnTimeConc    = pConfig->nActiveMinChnTimeConc;
   smeConfig->csrConfig.nPassiveMaxChnTimeConc   = pConfig->nPassiveMaxChnTimeConc;
   smeConfig->csrConfig.nPassiveMinChnTimeConc   = pConfig->nPassiveMinChnTimeConc;
   smeConfig->csrConfig.nRestTimeConc            = pConfig->nRestTimeConc;
   smeConfig->csrConfig.min_rest_time_conc       = pConfig->min_rest_time_conc;
   smeConfig->csrConfig.idle_time_conc           = pConfig->idle_time_conc;

#endif
   smeConfig->csrConfig.Is11eSupportEnabled      = pConfig->b80211eIsEnabled;
   smeConfig->csrConfig.WMMSupportMode           = pConfig->WmmMode;
   smeConfig->csrConfig.gStaLocalEDCAEnable      = pConfig->gStaLocalEDCAEnable;
   /*
    * -channelBondingMode5GHz is getting updated by SAP
    * so stacbmode will be used for STA connection.
    * -Rome STA doesnt support HT40 in 2.4Ghz so interested in only
    *  5GHz configuration.
    */
   smeConfig->csrConfig.stacbmode =
                                 pConfig->nChannelBondingMode5GHz;
#if defined WLAN_FEATURE_VOWIFI
   smeConfig->rrmConfig.rrm_enabled = pConfig->fRrmEnable;
   smeConfig->rrmConfig.max_randn_interval = pConfig->nRrmRandnIntvl;
   hdd_hex_string_to_u8_array(pConfig->rm_capability,
                          smeConfig->rrmConfig.rm_capability, &rrm_capab_len,
                          DOT11F_IE_RRMENABLEDCAP_MAX_LEN);
   /*
    * Update the INI values gRrmOperChanMax and gRrmNonOperChanMax appropriately
    */
   smeConfig->rrmConfig.rm_capability[2] =
                          ((pConfig->nOutChanMeasMaxDuration <<
                               CAP_NONOPER_CHAN_MAX_DURATION_OFFSET) |
                           (pConfig->nOutChanMeasMaxDuration <<
                               CAP_OPER_CHAN_MAX_DURATION_OFFSET) |
                           (smeConfig->rrmConfig.rm_capability[2] &
                              (RM_CAP_RM_MIB | RM_CAP_AP_CHAN_REPORT)));
#endif
   //Remaining config params not obtained from registry
   // On RF EVB beacon using channel 1.
#ifdef WLAN_FEATURE_11AC
   smeConfig->csrConfig.nVhtChannelWidth = pConfig->vhtChannelWidth;
   smeConfig->csrConfig.enableTxBF = pConfig->enableTxBF;
   smeConfig->csrConfig.txBFCsnValue = pConfig->txBFCsnValue;
   smeConfig->csrConfig.enable2x2 = pConfig->enable2x2;
   smeConfig->csrConfig.enableVhtFor24GHz = pConfig->enableVhtFor24GHzBand;
   smeConfig->csrConfig.vendor_vht_for_24ghz_sap =
       pConfig->enable_vendor_vht_for_24ghz_band;
   smeConfig->csrConfig.enableMuBformee = pConfig->enableMuBformee;
   smeConfig->csrConfig.enableVhtpAid = pConfig->enableVhtpAid;
   smeConfig->csrConfig.enableVhtGid = pConfig->enableVhtGid;
#endif
   smeConfig->csrConfig.enableAmpduPs = pConfig->enableAmpduPs;
   smeConfig->csrConfig.enableHtSmps = pConfig->enableHtSmps;
   smeConfig->csrConfig.htSmps = pConfig->htSmps;
   smeConfig->csrConfig.AdHocChannel5G            = pConfig->AdHocChannel5G;
   smeConfig->csrConfig.AdHocChannel24            = pConfig->AdHocChannel24G;
   smeConfig->csrConfig.ProprietaryRatesEnabled   = 0;
   smeConfig->csrConfig.HeartbeatThresh50         = 40;
   smeConfig->csrConfig.bandCapability            = pConfig->nBandCapability;
   if (pConfig->nBandCapability == eCSR_BAND_24)
   {
       smeConfig->csrConfig.Is11hSupportEnabled       = 0;
   } else {
       smeConfig->csrConfig.Is11hSupportEnabled       = pConfig->Is11hSupportEnabled;
   }
   smeConfig->csrConfig.cbChoice                  = 0;
   smeConfig->csrConfig.bgScanInterval            = 0;
   smeConfig->csrConfig.eBand                     = pConfig->nBandCapability;
   smeConfig->csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
   smeConfig->csrConfig.allow_tpc_from_ap = pConfig->allow_tpc_from_ap;
   smeConfig->csrConfig.fEnableBypass11d          = pConfig->enableBypass11d;
   smeConfig->csrConfig.fEnableDFSChnlScan        = pConfig->enableDFSChnlScan;
#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
   smeConfig->csrConfig.nRoamPrefer5GHz           = pConfig->nRoamPrefer5GHz;
   smeConfig->csrConfig.nRoamIntraBand            = pConfig->nRoamIntraBand;
   smeConfig->csrConfig.nProbes                   = pConfig->nProbes;

   smeConfig->csrConfig.nRoamScanHomeAwayTime     = pConfig->nRoamScanHomeAwayTime;
#endif
   smeConfig->csrConfig.fFirstScanOnly2GChnl      = pConfig->enableFirstScan2GOnly;

   //FIXME 11d config is hardcoded
   if ( VOS_STA_SAP_MODE != hdd_get_conparam())
   {
      smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;

      /* if there is a requirement that HDD will control the default
       * channel list & country code (say from .ini file) we need to
       * add some logic here. Otherwise the default 11d info should
       * come from NV as per our current implementation */
   }
   else
   {
      VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                 "AP country Code %s", pConfig->apCntryCode);

      if (memcmp(pConfig->apCntryCode, CFG_AP_COUNTRY_CODE_DEFAULT, 3) != 0)
         sme_setRegInfo(pHddCtx->hHal, pConfig->apCntryCode);
      sme_set11dinfo(pHddCtx->hHal, smeConfig);
   }

   if (!pConfig->enablePowersaveOffload)
   {
       hdd_set_power_save_config(pHddCtx, smeConfig);
   }
   else
   {
       hdd_set_power_save_offload_config(pHddCtx);
   }

#ifdef WLAN_FEATURE_VOWIFI_11R
   smeConfig->csrConfig.csr11rConfig.IsFTResourceReqSupported = pConfig->fFTResourceReqSupported;
#endif
#ifdef FEATURE_WLAN_LFR
   smeConfig->csrConfig.isFastRoamIniFeatureEnabled = pConfig->isFastRoamIniFeatureEnabled;
   smeConfig->csrConfig.MAWCEnabled = pConfig->MAWCEnabled;
#endif
#ifdef FEATURE_WLAN_ESE
   smeConfig->csrConfig.isEseIniFeatureEnabled = pConfig->isEseIniFeatureEnabled;
   if( pConfig->isEseIniFeatureEnabled )
   {
       pConfig->isFastTransitionEnabled = TRUE;
   }
#endif
#if  defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
   smeConfig->csrConfig.isFastTransitionEnabled = pConfig->isFastTransitionEnabled;
   smeConfig->csrConfig.RoamRssiDiff = pConfig->RoamRssiDiff;
   smeConfig->csrConfig.nImmediateRoamRssiDiff = pConfig->nImmediateRoamRssiDiff;
   smeConfig->csrConfig.isWESModeEnabled = pConfig->isWESModeEnabled;
#endif
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
   smeConfig->csrConfig.isRoamOffloadScanEnabled = pConfig->isRoamOffloadScanEnabled;
   smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled = pConfig->bFastRoamInConIniFeatureEnabled;

   if (0 == smeConfig->csrConfig.isRoamOffloadScanEnabled)
   {
       /* Disable roaming in concurrency if roam scan offload is disabled */
       smeConfig->csrConfig.bFastRoamInConIniFeatureEnabled = 0;
   }
#endif
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
   smeConfig->csrConfig.neighborRoamConfig.nNeighborReassocRssiThreshold = pConfig->nNeighborReassocRssiThreshold;
   smeConfig->csrConfig.neighborRoamConfig.nNeighborLookupRssiThreshold = pConfig->nNeighborLookupRssiThreshold;
   smeConfig->csrConfig.neighborRoamConfig.delay_before_vdev_stop =
                                           pConfig->delay_before_vdev_stop;

   smeConfig->csrConfig.neighborRoamConfig.nOpportunisticThresholdDiff =
       pConfig->nOpportunisticThresholdDiff;
   smeConfig->csrConfig.neighborRoamConfig.nRoamRescanRssiDiff =
       pConfig->nRoamRescanRssiDiff;
   smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMaxChanTime = pConfig->nNeighborScanMaxChanTime;
   smeConfig->csrConfig.neighborRoamConfig.nNeighborScanMinChanTime = pConfig->nNeighborScanMinChanTime;
   smeConfig->csrConfig.neighborRoamConfig.nNeighborScanTimerPeriod = pConfig->nNeighborScanPeriod;
   smeConfig->csrConfig.neighborRoamConfig.nMaxNeighborRetries = pConfig->nMaxNeighborReqTries;
   smeConfig->csrConfig.neighborRoamConfig.nNeighborResultsRefreshPeriod = pConfig->nNeighborResultsRefreshPeriod;
   smeConfig->csrConfig.neighborRoamConfig.nEmptyScanRefreshPeriod = pConfig->nEmptyScanRefreshPeriod;
   hdd_string_to_u8_array( pConfig->neighborScanChanList,
                                        smeConfig->csrConfig.neighborRoamConfig.neighborScanChanList.channelList,
                                        &smeConfig->csrConfig.neighborRoamConfig.neighborScanChanList.numChannels,
                                        WNI_CFG_VALID_CHANNEL_LIST_LEN);
   smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFirstBcnt = pConfig->nRoamBmissFirstBcnt;
   smeConfig->csrConfig.neighborRoamConfig.nRoamBmissFinalBcnt = pConfig->nRoamBmissFinalBcnt;
   smeConfig->csrConfig.neighborRoamConfig.nRoamBeaconRssiWeight =
           pConfig->nRoamBeaconRssiWeight;
   smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_max_count =
           pConfig->nhi_rssi_scan_max_count;
   smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_delta =
           pConfig->nhi_rssi_scan_rssi_delta;
   smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_delay =
           pConfig->nhi_rssi_scan_delay;
   smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_ub =
           pConfig->nhi_rssi_scan_rssi_ub;
#endif

   smeConfig->csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
   smeConfig->csrConfig.fValidateList = pConfig->fValidateScanList;
   smeConfig->csrConfig.allowDFSChannelRoam = pConfig->allowDFSChannelRoam;

   //Enable/Disable MCC
   smeConfig->csrConfig.fEnableMCCMode = pConfig->enableMCC;
   smeConfig->csrConfig.mcc_rts_cts_prot_enable =
                                          pConfig->mcc_rts_cts_prot_enable;
   smeConfig->csrConfig.mcc_bcast_prob_resp_enable =
                                          pConfig->mcc_bcast_prob_resp_enable;
   smeConfig->csrConfig.fAllowMCCGODiffBI = pConfig->allowMCCGODiffBI;

   //Scan Results Aging Time out value
   smeConfig->csrConfig.scanCfgAgingTime = pConfig->scanAgingTimeout;

   smeConfig->csrConfig.enableTxLdpc = pConfig->enableTxLdpc;
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
   smeConfig->csrConfig.cc_switch_mode = pConfig->WlanMccToSccSwitchMode;
   smeConfig->csrConfig.band_switch_enable = pConfig->wlan_band_switch_enable;
   smeConfig->csrConfig.ap_p2pgo_concurrency_enable =
                        pConfig->wlan_ap_p2pgo_conc_enable;
   smeConfig->csrConfig.ap_p2pclient_concur_enable =
                        pConfig->wlan_ap_p2pclient_conc_enable;
   smeConfig->csrConfig.ch_width_24g_orig = pConfig->nChannelBondingMode24GHz ?
                        eHT_CHANNEL_WIDTH_40MHZ : eHT_CHANNEL_WIDTH_20MHZ;
   smeConfig->csrConfig.ch_width_5g_orig = pConfig->vhtChannelWidth;
#endif

   smeConfig->csrConfig.max_amsdu_num = pConfig->max_amsdu_num;
   smeConfig->csrConfig.nSelect5GHzMargin = pConfig->nSelect5GHzMargin;

   smeConfig->csrConfig.isCoalesingInIBSSAllowed =
                       pHddCtx->cfg_ini->isCoalesingInIBSSAllowed;
   /* update SSR config */
   sme_UpdateEnableSSR((tHalHandle)(pHddCtx->hHal), pHddCtx->cfg_ini->enableSSR);
   /* Update the Directed scan offload setting */
   smeConfig->fScanOffload =  true;

   /* Update the p2p listen offload setting */
   smeConfig->fP2pListenOffload =  pHddCtx->cfg_ini->fP2pListenOffload;
   smeConfig->csrConfig.scanBandPreference =
                              pHddCtx->cfg_ini->acsScanBandPreference;

#ifdef FEATURE_WLAN_SCAN_PNO
   /* Update PNO offload status */
   smeConfig->pnoOffload = pHddCtx->cfg_ini->PnoOffload;
#endif
   /* Update maximum interfaces information */
   smeConfig->max_intf_count = pHddCtx->max_intf_count;

   smeConfig->fEnableDebugLog = pHddCtx->cfg_ini->gEnableDebugLog;

   smeConfig->enable5gEBT = pHddCtx->cfg_ini->enable5gEBT;

   smeConfig->enableSelfRecovery = pHddCtx->cfg_ini->enableSelfRecovery;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
   smeConfig->csrConfig.isRoamOffloadEnabled =
                        pHddCtx->cfg_ini->isRoamOffloadEnabled;
#endif
   smeConfig->csrConfig.conc_custom_rule1 =
                        pHddCtx->cfg_ini->conc_custom_rule1;
   smeConfig->csrConfig.conc_custom_rule2 =
                        pHddCtx->cfg_ini->conc_custom_rule2;
   smeConfig->csrConfig.is_sta_connection_in_5gz_enabled =
                        pHddCtx->cfg_ini->is_sta_connection_in_5gz_enabled;

   /* Update 802.11p config */
   smeConfig->csrConfig.enable_dot11p = (pHddCtx->cfg_ini->dot11p_mode !=
                                             WLAN_HDD_11P_DISABLED);

   smeConfig->f_sta_miracast_mcc_rest_time_val =
                pHddCtx->cfg_ini->sta_miracast_mcc_rest_time_val;

#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
   smeConfig->sap_channel_avoidance =
                pHddCtx->cfg_ini->sap_channel_avoidance;
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
   smeConfig->csrConfig.ignore_peer_ht_opmode =
                           pConfig->ignore_peer_ht_opmode;
   smeConfig->csrConfig.pkt_err_disconn_th =
                   pHddCtx->cfg_ini->pkt_err_disconn_th;
   smeConfig->f_prefer_non_dfs_on_radar =
                       pHddCtx->cfg_ini->prefer_non_dfs_on_radar;
   smeConfig->csrConfig.first_scan_bucket_threshold =
                       pHddCtx->cfg_ini->first_scan_bucket_threshold;

   vos_set_multicast_logging(pHddCtx->cfg_ini->multicast_host_fw_msgs);
   hdd_set_fine_time_meas_cap(pHddCtx, smeConfig);
   smeConfig->csrConfig.enable_fatal_event =
                          pConfig->enable_fatal_event;
   smeConfig->csrConfig.sendDeauthBeforeCon = pConfig->sendDeauthBeforeCon;
   smeConfig->csrConfig.ignorePeerErpInfo = pConfig->ignorePeerErpInfo;
   smeConfig->csrConfig.tx_aggregation_size =
                   pHddCtx->cfg_ini->tx_aggregation_size;
   smeConfig->csrConfig.rx_aggregation_size =
                   pHddCtx->cfg_ini->rx_aggregation_size;
   smeConfig->csrConfig.tx_aggr_sw_retry_threshhold_be =
                   pHddCtx->cfg_ini->tx_aggr_sw_retry_threshhold_be;
   smeConfig->csrConfig.tx_aggr_sw_retry_threshhold_bk =
                   pHddCtx->cfg_ini->tx_aggr_sw_retry_threshhold_bk;
   smeConfig->csrConfig.tx_aggr_sw_retry_threshhold_vi =
                   pHddCtx->cfg_ini->tx_aggr_sw_retry_threshhold_vi;
   smeConfig->csrConfig.tx_aggr_sw_retry_threshhold_vo =
                   pHddCtx->cfg_ini->tx_aggr_sw_retry_threshhold_vo;
   smeConfig->csrConfig.tx_non_aggr_sw_retry_threshhold_be =
                   pHddCtx->cfg_ini->tx_non_aggr_sw_retry_threshhold_be;
   smeConfig->csrConfig.tx_non_aggr_sw_retry_threshhold_bk =
                   pHddCtx->cfg_ini->tx_non_aggr_sw_retry_threshhold_bk;
   smeConfig->csrConfig.tx_non_aggr_sw_retry_threshhold_vi =
                   pHddCtx->cfg_ini->tx_non_aggr_sw_retry_threshhold_vi;
   smeConfig->csrConfig.tx_non_aggr_sw_retry_threshhold_vo =
                   pHddCtx->cfg_ini->tx_non_aggr_sw_retry_threshhold_vo;

   smeConfig->csrConfig.enable_edca_params =
                        pHddCtx->cfg_ini->enable_edca_params;

   smeConfig->csrConfig.edca_vo_cwmin =
                        pHddCtx->cfg_ini->edca_vo_cwmin;
   smeConfig->csrConfig.edca_vi_cwmin =
                        pHddCtx->cfg_ini->edca_vi_cwmin;
   smeConfig->csrConfig.edca_bk_cwmin =
                        pHddCtx->cfg_ini->edca_bk_cwmin;
   smeConfig->csrConfig.edca_be_cwmin =
                        pHddCtx->cfg_ini->edca_be_cwmin;

   smeConfig->csrConfig.edca_vo_cwmax =
                        pHddCtx->cfg_ini->edca_vo_cwmax;
   smeConfig->csrConfig.edca_vi_cwmax =
                        pHddCtx->cfg_ini->edca_vi_cwmax;
   smeConfig->csrConfig.edca_bk_cwmax =
                        pHddCtx->cfg_ini->edca_bk_cwmax;
   smeConfig->csrConfig.edca_be_cwmax =
                        pHddCtx->cfg_ini->edca_be_cwmax;

   smeConfig->csrConfig.edca_vo_aifs =
                        pHddCtx->cfg_ini->edca_vo_aifs;
   smeConfig->csrConfig.edca_vi_aifs =
                        pHddCtx->cfg_ini->edca_vi_aifs;
   smeConfig->csrConfig.edca_bk_aifs =
                        pHddCtx->cfg_ini->edca_bk_aifs;
   smeConfig->csrConfig.edca_be_aifs =
                        pHddCtx->cfg_ini->edca_be_aifs;
   smeConfig->csrConfig.sta_roam_policy_params.dfs_mode =
       CSR_STA_ROAM_POLICY_DFS_ENABLED;
   smeConfig->csrConfig.sta_roam_policy_params.skip_unsafe_channels = 0;

   smeConfig->snr_monitor_enabled = pHddCtx->cfg_ini->fEnableSNRMonitoring;
   smeConfig->sub20_config_info =
       hdd_cfg_get_sub20_channel_config(pHddCtx);
   smeConfig->sub20_channelwidth =
              hdd_cfg_get_static_sub20_channel_width(pHddCtx);
   smeConfig->sub20_dynamic_channelwidth =
              hdd_cfg_get_sub20_dyn_capabilities(pHddCtx);

   smeConfig->csrConfig.sta_auth_retries_for_code17 =
                        pHddCtx->cfg_ini->sta_auth_retries_for_code17;

   smeConfig->sta_change_cc_via_beacon =
	 pHddCtx->cfg_ini->sta_change_cc_via_beacon;

#ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN
   smeConfig->csrConfig.sap_ch_switch_with_csa = pHddCtx->cfg_ini->sap_ch_switch_with_csa;
#endif//#ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN
   halStatus = sme_UpdateConfig( pHddCtx->hHal, smeConfig);
   if ( !HAL_STATUS_SUCCESS( halStatus ) )
   {
      status = VOS_STATUS_E_FAILURE;
      hddLog(LOGE, "sme_UpdateConfig() return failure %d", halStatus);
   }

   vos_mem_free(smeConfig);
   return status;
}

/**---------------------------------------------------------------------------

  \brief hdd_execute_config_command() -

   This function executes an arbitrary configuration set command

  \param - pHddCtx - Pointer to the HDD Adapter.
  \parmm - command - a configuration command of the form:
                     <name>=<value>

  \return - 0 for success, non zero for failure

  --------------------------------------------------------------------------*/

static VOS_STATUS hdd_execute_config_command(REG_TABLE_ENTRY *reg_table,
                                   unsigned long tableSize, v_U8_t *ini_struct,
                                   hdd_context_t *pHddCtx, char *command)
{
   REG_TABLE_ENTRY *pRegEntry;
   char *clone;
   char *pCmd;
   void *pField;
   char *name;
   char *value_str;
   v_U32_t value;
   v_S31_t svalue;
   size_t len_value_str;
   unsigned int idx;
   unsigned int i;
   VOS_STATUS vstatus;
   int rv;

   // assume failure until proven otherwise
   vstatus = VOS_STATUS_E_FAILURE;

   // clone the command so that we can manipulate it
   clone = kstrdup(command, GFP_ATOMIC);
   if (NULL == clone)
   {
      hddLog(LOGE, "%s: memory allocation failure, unable to process [%s]",
             __func__, command);
      return vstatus;
   }

   // 'clone' will point to the beginning of the string so it can be freed
   // 'pCmd' will be used to walk/parse the command
   pCmd = clone;

   // get rid of leading/trailing whitespace
   pCmd = i_trim(pCmd);
   if ('\0' == *pCmd)
   {
      // only whitespace
      hddLog(LOGE, "%s: invalid command, only whitespace:[%s]",
             __func__, command);
      goto done;
   }

   // parse the <name> = <value>
   name = pCmd;
   while (('=' != *pCmd) && ('\0' != *pCmd))
   {
      pCmd++;
   }
   if ('\0' == *pCmd)
   {
      // did not find '='
      hddLog(LOGE, "%s: invalid command, no '=':[%s]",
             __func__, command);
      goto done;
   }

   // replace '=' with NUL to terminate the <name>
   *pCmd++ = '\0';
   name = i_trim(name);
   if ('\0' == *name)
   {
      // did not find a name
      hddLog(LOGE, "%s: invalid command, no <name>:[%s]",
             __func__, command);
      goto done;
   }

   value_str = i_trim(pCmd);
   if ('\0' == *value_str)
   {
      // did not find a value
      hddLog(LOGE, "%s: invalid command, no <value>:[%s]",
             __func__, command);
      goto done;
   }

   // lookup the configuration item
   for (idx = 0; idx < tableSize; idx++)
   {
      if (0 == strcmp(name, reg_table[idx].RegName))
      {
         // found a match
         break;
      }
   }
   if (tableSize == idx)
   {
      // did not match the name
      hddLog(LOGE, "%s: invalid command, unknown configuration item:[%s]",
             __func__, command);
      goto done;
   }

   pRegEntry = &reg_table[idx];
   if (!(pRegEntry->Flags & VAR_FLAGS_DYNAMIC_CFG))
   {
      // does not support dynamic configuration
      hddLog(LOGE, "%s: Global_Registry_Table.%s does not support "
             "dynamic configuration", __func__, name);
      vstatus = VOS_STATUS_E_PERM;
      goto done;
   }

   pField = ini_struct + pRegEntry->VarOffset;

   switch (pRegEntry->RegType)
   {
   case WLAN_PARAM_Integer:
      rv = kstrtou32(value_str, 10, &value);
      if (rv < 0)
          goto done;
      if (value < pRegEntry->VarMin)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %u < min value %lu",
                __func__, value, pRegEntry->VarMin);
         goto done;
      }
      if (value > pRegEntry->VarMax)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %u > max value %lu",
                __func__, value, pRegEntry->VarMax);
         goto done;
      }
      memcpy(pField, &value, pRegEntry->VarSize);
      break;

   case WLAN_PARAM_HexInteger:
      rv = kstrtou32(value_str, 16, &value);
      if (rv < 0)
         goto done;
      if (value < pRegEntry->VarMin)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %x < min value %lx",
                __func__, value, pRegEntry->VarMin);
         goto done;
      }
      if (value > pRegEntry->VarMax)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %x > max value %lx",
                __func__, value, pRegEntry->VarMax);
         goto done;
      }
      memcpy(pField, &value, pRegEntry->VarSize);
      break;

   case WLAN_PARAM_SignedInteger:
      rv = kstrtos32(value_str, 10, &svalue);
      if (rv < 0)
         goto done;
      if (svalue < (v_S31_t)pRegEntry->VarMin)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %d < min value %d",
                __func__, svalue, (int)pRegEntry->VarMin);
         goto done;
      }
      if (svalue > (v_S31_t)pRegEntry->VarMax)
      {
         // out of range
         hddLog(LOGE, "%s: invalid command, value %d > max value %d",
                __func__, svalue, (int)pRegEntry->VarMax);
         goto done;
      }
      memcpy(pField, &svalue, pRegEntry->VarSize);
      break;

   case WLAN_PARAM_String:
      len_value_str = strlen(value_str);
      if (len_value_str > (pRegEntry->VarSize - 1))
      {
         // too big
         hddLog(LOGE,
                "%s: invalid command, string [%s] length "
                "%zu exceeds maximum length %u",
                __func__, value_str,
                len_value_str, (pRegEntry->VarSize - 1));
         goto done;
      }
      // copy string plus NUL
      memcpy(pField, value_str, (len_value_str + 1));
      break;

   case WLAN_PARAM_MacAddr:
      len_value_str = strlen(value_str);
      if (len_value_str != (VOS_MAC_ADDR_SIZE * 2))
      {
         // out of range
         hddLog(LOGE,
                "%s: invalid command, MAC address [%s] length "
                "%zu is not expected length %u",
                __func__, value_str,
                len_value_str, (VOS_MAC_ADDR_SIZE * 2));
         goto done;
      }
      //parse the string and store it in the byte array
      for (i = 0; i < VOS_MAC_ADDR_SIZE; i++)
      {
         ((char*)pField)[i] = (char)
            ((parseHexDigit(value_str[(i * 2)]) * 16) +
             parseHexDigit(value_str[(i * 2) + 1]));
      }
      break;

   default:
      goto done;
   }

   // if we get here, we had a successful modification
   vstatus = VOS_STATUS_SUCCESS;

   // config table has been modified, is there a notifier?
   if (NULL != pRegEntry->pfnDynamicNotify)
   {
      (pRegEntry->pfnDynamicNotify)(pHddCtx, pRegEntry->NotifyId);
   }

   // note that this item was explicitly configured
   if (idx < MAX_CFG_INI_ITEMS)
   {
      set_bit(idx, (void *)&pHddCtx->cfg_ini->bExplicitCfg);
   }
 done:
   kfree(clone);
   return vstatus;
}

VOS_STATUS hdd_execute_global_config_command(hdd_context_t *pHddCtx,
                                                                 char *command)
{
    return hdd_execute_config_command(g_registry_table,
                                      ARRAY_SIZE(g_registry_table),
                                      (v_U8_t *) pHddCtx->cfg_ini,
                                      pHddCtx, command);
}

#ifdef WLAN_FEATURE_MBSSID
VOS_STATUS hdd_execute_sap_dyn_config_command(hdd_adapter_t *pAdapter,
                                                                 char *command)
{
    return hdd_execute_config_command(mbssid_sap_dyn_ini_reg_table,
                                      ARRAY_SIZE(mbssid_sap_dyn_ini_reg_table),
                                      (v_U8_t *) &pAdapter->sap_dyn_ini_cfg,
                                      WLAN_HDD_GET_CTX(pAdapter), command);
}
#endif
/**---------------------------------------------------------------------------

  \brief hdd_is_okc_mode_enabled() -

   This function returns whether OKC mode is enabled or not

  \param - pHddCtx - Pointer to the HDD Adapter.

  \return - 1 for enabled, zero for disabled

  --------------------------------------------------------------------------*/

tANI_BOOLEAN hdd_is_okc_mode_enabled(hdd_context_t *pHddCtx)
{
    if (NULL == pHddCtx)
    {
        hddLog(VOS_TRACE_LEVEL_FATAL, "%s: pHddCtx is NULL", __func__);
        return -EINVAL;
    }

#ifdef FEATURE_WLAN_OKC
    return pHddCtx->cfg_ini->isOkcIniFeatureEnabled;
#else
    return eANI_BOOLEAN_FALSE;
#endif
}

/**
 * hdd_update_nss() - configures the provided nss value to the driver
 *
 * @hdd_ctx: the pointer to hdd context
 * @nss    : the number of spatial streams to be updated
 *
 * Return: VOS_STATUS_SUCCESS if nss is correctly updated,
 *              otherwise VOS_STATUS_E_FAILURE would be returned
 */
VOS_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss)
{
	hdd_config_t *hdd_config = hdd_ctx->cfg_ini;
	uint32_t  temp = 0;
	uint32_t  rx_supp_data_rate, tx_supp_data_rate;
	uint8_t   status = TRUE;
	tSirMacHTCapabilityInfo *ht_cap_info;
	uint8_t   mcs_set[SIZE_OF_SUPPORTED_MCS_SET] = {0};
	uint8_t   mcs_set_temp[SIZE_OF_SUPPORTED_MCS_SET];
	uint32_t  val;
	uint16_t  val16;
	uint8_t   enable2x2;

	if ((nss == 2) && (hdd_ctx->num_rf_chains != 2)) {
		hddLog(LOGE, "No support for 2 spatial streams");
		return VOS_STATUS_E_FAILURE;
	}

	enable2x2 = (nss == 1) ? 0 : 1;

	if (hdd_config->enable2x2 == enable2x2) {
		hddLog(LOGE, "NSS same as requested");
		return VOS_STATUS_SUCCESS;
	}

	if (TRUE == sme_is_any_session_in_connected_state(hdd_ctx->hHal)) {
		hddLog(LOGE, "Connected sessions present, Do not change NSS");
		return VOS_STATUS_E_FAILURE;
	}

	hdd_config->enable2x2 = enable2x2;

	if (!hdd_config->enable2x2) {
		/* 1x1 */
		rx_supp_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
		tx_supp_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
	} else {
		/* 2x2 */
		rx_supp_data_rate = VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
		tx_supp_data_rate = VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
	}

	/* Update Rx Highest Long GI data Rate */
	if (ccmCfgSetInt(hdd_ctx->hHal,
			 WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE,
			 rx_supp_data_rate, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE,
			"Could not pass on WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE to CCM");
	}

	/* Update Tx Highest Long GI data Rate */
	if (ccmCfgSetInt(hdd_ctx->hHal,
			 WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE,
			 tx_supp_data_rate, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE,
		       "Could not pass on HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1 to CCM");
	}

	ccmCfgGetInt(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO, &temp);
	val16 = (uint16_t)temp;
	ht_cap_info = (tSirMacHTCapabilityInfo *)&val16;
	if (!(hdd_ctx->ht_tx_stbc_supported && hdd_config->enable2x2))
		ht_cap_info->txSTBC = 0;
	else
		ht_cap_info->txSTBC = hdd_config->enableTxSTBC;
	temp = val16;
	if (ccmCfgSetInt(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
			 temp, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CCM");
	}

	ccmCfgGetInt(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET, &temp);
	temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
	if (hdd_config->enable2x2)
		temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
	else
		temp |= 0x000C;

	if (ccmCfgSetInt(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
			 temp, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE,
			"Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CCM");
	}

	ccmCfgGetInt(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP, &temp);
	temp = (temp & 0xFFFC) | hdd_config->vhtRxMCS;
	if (hdd_config->enable2x2)
		temp = (temp & 0xFFF3) | (hdd_config->vhtRxMCS2x2 << 2);
	else
		temp |= 0x000C;

	if (ccmCfgSetInt(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
			 temp, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CCM");
	}

	ccmCfgGetInt(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
	temp = (temp & 0xFFFC) | hdd_config->vhtTxMCS;
	if (hdd_config->enable2x2)
		temp = (temp & 0xFFF3) | (hdd_config->vhtTxMCS2x2 << 2);
	else
		temp |= 0x000C;

	if (ccmCfgSetInt(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
			 temp, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CCM");
	}

#define WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES 0xff
	val = SIZE_OF_SUPPORTED_MCS_SET;
	ccmCfgGetStr(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
		     mcs_set_temp, &val);

	mcs_set[0] = mcs_set_temp[0];
	if (hdd_config->enable2x2)
		for (val = 0; val < nss; val++)
			mcs_set[val] = WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES;

	if (ccmCfgSetStr(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
			 mcs_set, SIZE_OF_SUPPORTED_MCS_SET, NULL,
			 eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE) {
		status = FALSE;
		hddLog(LOGE, "Could not pass on MCS SET to CCM");
	}
#undef WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES

	if (eHAL_STATUS_SUCCESS != sme_update_nss(hdd_ctx->hHal, nss))
		status = FALSE;

	return (status == FALSE) ? VOS_STATUS_E_FAILURE : VOS_STATUS_SUCCESS;
}

/**
 * hdd_set_btc_bt_wlan_interval() - set btc bt/wlan interval page to FW
 * @hdd_ctx: the pointer to hdd context
 *
 * This function set btc bt/wlan interval page (p2p/sta/sap) to FW.
 *
 * Return: None
 */
void hdd_set_btc_bt_wlan_interval(hdd_context_t *hdd_ctx)
{
	hdd_config_t *config = hdd_ctx->cfg_ini;
	VOS_STATUS status = VOS_STATUS_SUCCESS;

	/** Sanity check.
	 * If not set in ini file, these parameters will be zero.
	 * Otherwise hdd_apply_cfg_ini()
	 * will ensure the valuse to be in the range 20~200 (ms as unit).
	 * If no parameters sent to firmware,
	 * firmware will set relevant parameters to default value itself.
	*/
	if ((config->coex_page_p2p_bt_interval !=0) &&
		(config->coex_page_p2p_wlan_interval !=0)) {
		status = sme_set_btc_bt_wlan_interval_page_p2p(
					config->coex_page_p2p_bt_interval,
					config->coex_page_p2p_wlan_interval);
		if (VOS_STATUS_SUCCESS != status)
			hddLog(LOGE, "Fail to set coex page p2p bt interval parameters");
	}

	if ((config->coex_page_sta_bt_interval !=0) &&
		(config->coex_page_sta_wlan_interval !=0)) {
		status = sme_set_btc_bt_wlan_interval_page_sta(
					config->coex_page_sta_bt_interval,
					config->coex_page_sta_wlan_interval);
		if (VOS_STATUS_SUCCESS != status)
			hddLog(LOGE, "Fail to set coex page sta bt interval parameters");
	}

	if ((config->coex_page_sap_bt_interval !=0) &&
		(config->coex_page_sap_wlan_interval !=0)) {
		status = sme_set_btc_bt_wlan_interval_page_sap(
					config->coex_page_sap_bt_interval,
					config->coex_page_sap_wlan_interval);
		if (VOS_STATUS_SUCCESS != status)
			hddLog(LOGE, "Fail to set coex page sap bt interval parameters");
	}

	if ((config->coex_config_wlan_conn_val0 != 0) ||
		(config->coex_config_wlan_conn_val1 != 0)) {
		status = sme_set_btc_wlan_conn_params(
					config->coex_config_wlan_conn_val0,
					config->coex_config_wlan_conn_val1);
		if (VOS_STATUS_SUCCESS != status)
			hddLog(LOGE, "Fail to set coex wlan connection parameters");
	}

        if ((config->coex_page_p2p_sta_bt_interval !=0) &&
                (config->coex_page_p2p_sta_wlan_interval !=0)) {
                status = sme_set_btc_bt_wlan_interval_page_p2p_sta(
                                   config->coex_page_p2p_sta_bt_interval,
                                   config->coex_page_p2p_sta_wlan_interval);
                if (VOS_STATUS_SUCCESS != status)
                        hddLog(LOGE, "Fail to set coex page p2p sta bt interval parameters");
        }

        if ((config->coex_inquiry_sta_bt_interval !=0) &&
                (config->coex_inquiry_sta_wlan_interval !=0)) {
                status = sme_set_btc_bt_wlan_interval_inquiry_sta(
                                   config->coex_inquiry_sta_bt_interval,
                                   config->coex_inquiry_sta_wlan_interval);
                if (VOS_STATUS_SUCCESS != status)
                        hddLog(LOGE, "Fail to set coex inquiry sta bt interval parameters");
        }

        if ((config->coex_inquiry_sap_bt_interval !=0) &&
                (config->coex_inquiry_sap_wlan_interval !=0)) {
                status = sme_set_btc_bt_wlan_interval_inquiry_sap(
                                   config->coex_inquiry_sap_bt_interval,
                                   config->coex_inquiry_sap_wlan_interval);
                if (VOS_STATUS_SUCCESS != status)
                        hddLog(LOGE, "Fail to set coex inquiry sap bt interval parameters");
        }

        if ((config->coex_inquiry_p2p_bt_interval !=0) &&
                (config->coex_inquiry_p2p_wlan_interval !=0)) {
                status = sme_set_btc_bt_wlan_interval_inquiry_p2p(
                                   config->coex_inquiry_p2p_bt_interval,
                                   config->coex_inquiry_p2p_wlan_interval);
                if (VOS_STATUS_SUCCESS != status)
                        hddLog(LOGE, "Fail to set coex inquiry p2p bt interval parameters");
        }

        if ((config->coex_inquiry_p2p_sta_bt_interval !=0) &&
                (config->coex_inquiry_p2p_sta_wlan_interval !=0)) {
                status = sme_set_btc_bt_wlan_interval_inquiry_p2p_sta(
                                   config->coex_inquiry_p2p_sta_bt_interval,
                                   config->coex_inquiry_p2p_sta_wlan_interval);
                if (VOS_STATUS_SUCCESS != status)
                        hddLog(LOGE, "Fail to set coex inquiry p2p sta bt interval parameters");
        }

	status = sme_set_btc_dynamic_bt_wlan_coex(
		config->dynamic_wlan_bt_coex, config->antenna_isolation);

	if (VOS_STATUS_SUCCESS != status)
		hddLog(LOGE, "Fail to set enable bt wlan coex parameters");

	status = sme_set_btc_wlan_coex_tx_power(config->coex_tx_power);

	if (VOS_STATUS_SUCCESS != status)
		hddLog(LOGE, "Fail to set coex tx power");

#ifdef FEATURE_COEX_PTA_CONFIG_ENABLE
       status = sme_configure_pta_coex(config->coex_pta_config_enable,config->coex_pta_config_param);

        if (VOS_STATUS_SUCCESS != status)
                hddLog(LOGE, "Fail to set pta coex");
#endif


#ifdef WMI_COEX_BTC_DUTYCYCLE
       status = sme_set_btc_coex_dutycycle(config->coex_btc_PauseDuration,config->coex_btc_UnPauseDuration);

        if (VOS_STATUS_SUCCESS != status)
                hddLog(LOGE, "Fail to set coex PauseDuration");
#endif

}

/**
 * hdd_validate_prb_req_ie_bitmap - validates user input for ie bit map
 * @hdd_ctx: the pointer to hdd context
 *
 * This function checks whether user have entered valid probe request
 * ie bitmap and also verifies vendor ouis if vendor specific ie is set
 *
 * Return: status of verification
 *              1 - valid input
 *              0 - invalid input
 */
uint32_t hdd_validate_prb_req_ie_bitmap(hdd_context_t* pHddCtx)
{
	if (!(pHddCtx->cfg_ini->probe_req_ie_bitmap_0 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_1 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_2 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_3 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_4 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_5 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_6 ||
	    pHddCtx->cfg_ini->probe_req_ie_bitmap_7))
		return 0;

	/**
	 * check whether vendor oui IE is set and OUIs are present, each OUI
	 * is eneterd in the form of string of 8 characters from ini, therefore,
	 * for atleast one OUI, minimum length is 8 and hence this string length
	 * is checked for minimum of 8
	 */
	if ((pHddCtx->cfg_ini->probe_req_ie_bitmap_6 &
	     VENDOR_SPECIFIC_IE_BITMAP) &&
	     (strlen(pHddCtx->cfg_ini->probe_req_ouis) < 8))
		return 0;

	/* check whether vendor oui IE is not set but OUIs are present */
	if (!(pHddCtx->cfg_ini->probe_req_ie_bitmap_6 &
	    VENDOR_SPECIFIC_IE_BITMAP) &&
	    (strlen(pHddCtx->cfg_ini->probe_req_ouis) > 0))
		return 0;

	return 1;
}

/**
 * probe_req_voui_convert_to_hex - converts str of 8 chars into two hex values
 * @temp: string to be converted
 * @voui: contains the type and subtype values
 *
 * This function converts the string length of 8 characters into two
 * hexa-decimal values, oui_type and oui_subtype, where oui_type is the
 * hexa decimal value converted from first 6 characters and oui_subtype is
 * hexa decimal value converted from last 2 characters.
 * strings which doesn't match with the specified pattern are ignored.
 *
 * Return: status of conversion
 *	   1 - if conversion is successful
 *	   0 - if conversion is failed
 */
static uint32_t hdd_probe_req_voui_convert_to_hex(uint8_t *temp,
						  struct vendor_oui *voui)
{
	uint32_t hex_value[4];
	uint32_t i = 0;
	uint32_t indx = 0;

	memset(hex_value, 0x00, sizeof(hex_value));
	memset(voui, 0x00, sizeof(*voui));

	/* convert string to hex */
	for (i = 0; i < 8; i++) {
		if (temp[i] >= '0' && temp[i] <= '9') {
			hex_value[indx] = (temp[i] - '0') << 4;
		} else if (temp[i] >= 'A' && temp[i] <= 'F') {
			hex_value[indx] = (temp[i] - 'A') + 0xA;
			hex_value[indx] = hex_value[indx] << 4;
		} else {
			/* invalid character in oui */
			return 0;
		}

		if (temp[i + 1] >= '0' && temp[i + 1] <= '9') {
			hex_value[indx] |= (temp[i + 1] - '0');
			i = i + 1;
			indx = indx + 1;
		} else if (temp[i + 1] >= 'A' && temp[i + 1] <= 'F') {
			hex_value[indx] |= ((temp[i + 1] - 'A') + 0xA);
			i = i + 1;
			indx = indx + 1;
		} else {
			/* invalid character in oui */
			return 0;
		}
	}

	voui->oui_type = (hex_value[0] | (hex_value[1] << 8) |
			 (hex_value[2] << 16));
	voui->oui_subtype = hex_value[3];

	hddLog(LOG1, FL("OUI_type = %x and OUI_subtype = %x"), voui->oui_type,
							voui->oui_subtype);
	return 1;
}

/**
 * hdd_parse_probe_req_ouis - form ouis from ini gProbeReqOUIs
 * @hdd_ctx: the pointer to hdd context
 *
 * This function parses the ini string gProbeReqOUIs which needs to in the
 * following format:
 * "<8 characters of [0-9] or [A-F]>space<8 characters from [0-9] etc.,"
 * example: "AABBCCDD 1122EEFF"
 * and the logic counts the number of OUIS and allocates the memory
 * for every valid OUI and is stored in hdd_context_t
 *
 * Return: status of parsing
 */
VOS_STATUS hdd_parse_probe_req_ouis(hdd_context_t* pHddCtx)
{
	struct vendor_oui voui[MAX_PROBE_REQ_OUIS];
	uint8_t *str;
	uint8_t temp[9];
	uint32_t start = 0, end = 0;
	uint32_t oui_indx = 0;
	uint32_t i = 0;

	pHddCtx->cfg_ini->probe_req_ouis[MAX_PRB_REQ_VENDOR_OUI_INI_LEN - 1] =
									'\0';
	if (!strlen(pHddCtx->cfg_ini->probe_req_ouis)) {
		pHddCtx->no_of_probe_req_ouis = 0;
		pHddCtx->probe_req_voui = NULL;
		hddLog(LOG1, FL("NO OUIS to parse"));
		return VOS_STATUS_SUCCESS;
	}

	str = (uint8_t *)(pHddCtx->cfg_ini->probe_req_ouis);

	while(str[i] != '\0') {
		if (str[i] == ' ') {
			if ((end - start) != 8)
			{
				end = start = 0;
				i++;
				continue;
			} else {
				memcpy(temp, &str[i - 8], 8);
				i++;
				temp[8] = '\0';
				if (hdd_probe_req_voui_convert_to_hex(temp,
					&voui[oui_indx]) == 0) {
					end = start = 0;
					continue;
				}
				oui_indx++;
				if (oui_indx >= MAX_PROBE_REQ_OUIS) {
					hddLog(LOGE, "Max no.of OUIS supported "
						"is 16. ignoring the rest");
					break;
				}
			}
			start = end = 0;
		} else {
			i++;
			end++;
		}
	}

	if ((end - start) == 8 && oui_indx < MAX_PROBE_REQ_OUIS) {
		memcpy(temp, &str[i - 8], 8);
		temp[8] = '\0';
		if (hdd_probe_req_voui_convert_to_hex(temp,
		    &voui[oui_indx]) == 1)
			oui_indx++;
	}

	if (!oui_indx)
		return VOS_STATUS_SUCCESS;

	pHddCtx->probe_req_voui = (struct vendor_oui *)vos_mem_malloc(oui_indx *
						sizeof(struct vendor_oui));
	if (pHddCtx->probe_req_voui == NULL) {
		hddLog(LOGE,"Not Enough memory for OUI");
		pHddCtx->no_of_probe_req_ouis = 0;
		return VOS_STATUS_E_FAILURE;
	}
	vos_mem_zero(pHddCtx->probe_req_voui,
				oui_indx * sizeof(struct vendor_oui));
	pHddCtx->no_of_probe_req_ouis = oui_indx;
	vos_mem_copy(pHddCtx->probe_req_voui, voui,
				oui_indx * sizeof(struct vendor_oui));

	return VOS_STATUS_SUCCESS;
}

/**
 * hdd_free_probe_req_ouis - de-allocates the probe req ouis
 * @hdd_ctx: the pointer to hdd context
 *
 * This function de-alloactes the probe req ouis which are
 * allocated while parsing of ini string gProbeReqOUIs
 *
 * Return: None
 */
void hdd_free_probe_req_ouis(hdd_context_t* pHddCtx)
{
	if (pHddCtx->probe_req_voui) {
		vos_mem_free(pHddCtx->probe_req_voui);
		pHddCtx->probe_req_voui = NULL;
	}

	pHddCtx->no_of_probe_req_ouis = 0;
}
