blob: 734bd4ba4e5d5fa5a6e9bd7b68c5a97cf12511d5 [file] [log] [blame]
/*
* Copyright (c) 2012-2015 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.
*/
/**
* DOC: wlan_hdd_cfg.c
*
* WLAN Host Device Driver configuration interface implementation
*/
/* 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 <cdf_types.h>
#include <csr_api.h>
#include <wlan_hdd_misc.h>
#include <wlan_hdd_napi.h>
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
static void
cb_notify_set_roam_prefer5_g_hz(hdd_context_t *pHddCtx, unsigned long notifyId)
{
sme_update_roam_prefer5_g_hz(pHddCtx->hHal,
pHddCtx->config->nRoamPrefer5GHz);
}
static void
cb_notify_set_roam_rssi_diff(hdd_context_t *pHddCtx, unsigned long notifyId)
{
sme_update_roam_rssi_diff(pHddCtx->hHal,
0, pHddCtx->config->RoamRssiDiff);
}
static void
cb_notify_set_fast_transition_enabled(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_update_fast_transition_enabled(pHddCtx->hHal,
pHddCtx->config->
isFastTransitionEnabled);
}
static void
cb_notify_set_roam_intra_band(hdd_context_t *pHddCtx, unsigned long notifyId)
{
sme_set_roam_intra_band(pHddCtx->hHal, pHddCtx->config->nRoamIntraBand);
}
static void cb_notify_set_wes_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_wes_mode(pHddCtx->hHal, pHddCtx->config->isWESModeEnabled, 0);
}
static void
cb_notify_set_roam_scan_n_probes(hdd_context_t *pHddCtx, unsigned long notifyId)
{
sme_update_roam_scan_n_probes(pHddCtx->hHal, 0, pHddCtx->config->nProbes);
}
static void
cb_notify_set_roam_scan_home_away_time(hdd_context_t *pHddCtx, unsigned long notifyId)
{
sme_update_roam_scan_home_away_time(pHddCtx->hHal, 0,
pHddCtx->config->nRoamScanHomeAwayTime,
true);
}
#endif
#ifdef FEATURE_WLAN_OKC
static void
cb_notify_set_okc_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
}
#endif
#ifdef FEATURE_WLAN_LFR
static void
notify_is_fast_roam_ini_feature_enabled(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_is_fast_roam_ini_feature_enabled(pHddCtx->hHal, 0,
pHddCtx->config->
isFastRoamIniFeatureEnabled);
}
static void
notify_is_mawc_ini_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_is_mawc_ini_feature_enabled(pHddCtx->hHal,
pHddCtx->config->MAWCEnabled);
}
#endif
#ifdef FEATURE_WLAN_ESE
static void
cb_notify_set_ese_feature_enabled(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_is_ese_feature_enabled(pHddCtx->hHal, 0,
pHddCtx->config->isEseIniFeatureEnabled);
}
#endif
static void
cb_notify_set_fw_rssi_monitoring(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_config_fw_rssi_monitoring(pHddCtx->hHal,
pHddCtx->config->
fEnableFwRssiMonitoring);
}
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
static void cb_notify_set_opportunistic_scan_threshold_diff(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_roam_opportunistic_scan_threshold_diff(pHddCtx->hHal, 0,
pHddCtx->config->
nOpportunisticThresholdDiff);
}
static void cb_notify_set_roam_rescan_rssi_diff(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_roam_rescan_rssi_diff(pHddCtx->hHal,
0, pHddCtx->config->nRoamRescanRssiDiff);
}
static void
cb_notify_set_neighbor_lookup_rssi_threshold(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_neighbor_lookup_rssi_threshold(pHddCtx->hHal, 0,
pHddCtx->config->
nNeighborLookupRssiThreshold);
}
static void
cb_notify_set_delay_before_vdev_stop(hdd_context_t *hdd_ctx,
unsigned long notify_id)
{
/*
* At the point this routine is called, the value in the cfg_ini
* table has already been updated
*/
sme_set_delay_before_vdev_stop(hdd_ctx->hHal, 0,
hdd_ctx->config->delay_before_vdev_stop);
}
static void
cb_notify_set_neighbor_scan_period(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_neighbor_scan_period(pHddCtx->hHal, 0,
pHddCtx->config->nNeighborScanPeriod);
}
static void
cb_notify_set_neighbor_results_refresh_period(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_neighbor_scan_refresh_period(pHddCtx->hHal, 0,
pHddCtx->config->
nNeighborResultsRefreshPeriod);
}
static void
cb_notify_set_empty_scan_refresh_period(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_empty_scan_refresh_period(pHddCtx->hHal, 0,
pHddCtx->config->
nEmptyScanRefreshPeriod);
}
static void
cb_notify_set_neighbor_scan_min_chan_time(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_neighbor_scan_min_chan_time(pHddCtx->hHal,
pHddCtx->config->
nNeighborScanMinChanTime, 0);
}
static void
cb_notify_set_neighbor_scan_max_chan_time(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_set_neighbor_scan_max_chan_time(pHddCtx->hHal, 0,
pHddCtx->config->
nNeighborScanMaxChanTime);
}
static void cb_notify_set_roam_bmiss_first_bcnt(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_set_roam_bmiss_first_bcnt(pHddCtx->hHal,
0, pHddCtx->config->nRoamBmissFirstBcnt);
}
static void cb_notify_set_roam_bmiss_final_bcnt(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_set_roam_bmiss_final_bcnt(pHddCtx->hHal, 0,
pHddCtx->config->nRoamBmissFinalBcnt);
}
static void cb_notify_set_roam_beacon_rssi_weight(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_set_roam_beacon_rssi_weight(pHddCtx->hHal, 0,
pHddCtx->config->nRoamBeaconRssiWeight);
}
static void
cb_notify_set_dfs_scan_mode(hdd_context_t *pHddCtx, unsigned long notifyId)
{
/* At the point this routine is called, the value in the hdd config
table has already been updated */
sme_update_dfs_scan_mode(pHddCtx->hHal, 0,
pHddCtx->config->allowDFSChannelRoam);
}
#endif
static void cb_notify_set_enable_ssr(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_update_enable_ssr(pHddCtx->hHal, pHddCtx->config->enableSSR);
}
static void cb_notify_set_g_sap_preferred_chan_location(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
wlansap_set_dfs_preferred_channel_location(pHddCtx->hHal,
pHddCtx->config->
gSapPreferredChanLocation);
}
static void ch_notify_set_g_disable_dfs_japan_w53(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
wlansap_set_dfs_restrict_japan_w53(pHddCtx->hHal,
pHddCtx->config->
gDisableDfsJapanW53);
}
static void
cb_notify_update_roam_scan_offload_enabled(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_update_roam_scan_offload_enabled(pHddCtx->hHal,
pHddCtx->config->
isRoamOffloadScanEnabled);
if (0 == pHddCtx->config->isRoamOffloadScanEnabled) {
pHddCtx->config->bFastRoamInConIniFeatureEnabled = 0;
sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
pHddCtx->config->
bFastRoamInConIniFeatureEnabled);
}
}
static void
cb_notify_set_enable_fast_roam_in_concurrency(hdd_context_t *pHddCtx,
unsigned long notifyId)
{
sme_update_enable_fast_roam_in_concurrency(pHddCtx->hHal,
pHddCtx->config->
bFastRoamInConIniFeatureEnabled);
}
/**
* 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 hdd 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)) {
hddLog(LOGE, FL("HDD context is invalid"));
return;
}
switch (notify_id) {
case eCSR_HI_RSSI_SCAN_MAXCOUNT_ID:
val = hdd_ctx->config->nhi_rssi_scan_max_count;
break;
case eCSR_HI_RSSI_SCAN_RSSI_DELTA_ID:
val = hdd_ctx->config->nhi_rssi_scan_rssi_delta;
break;
case eCSR_HI_RSSI_SCAN_DELAY_ID:
val = hdd_ctx->config->nhi_rssi_scan_delay;
break;
case eCSR_HI_RSSI_SCAN_RSSI_UB_ID:
val = hdd_ctx->config->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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_COUNTRY_CODE_PRIORITY_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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_HEARTBEAT_THRESH_24_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, PowerUsageControl,
VAR_FLAGS_OPTIONAL,
(void *)CFG_POWER_USAGE_DEFAULT),
REG_VARIABLE(CFG_ENABLE_LOGP_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_PS_NAME, WLAN_PARAM_Integer,
struct hdd_config, is_ps_enabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_PS_DEFAULT,
CFG_ENABLE_PS_MIN,
CFG_ENABLE_PS_MAX),
REG_VARIABLE(CFG_BMPS_MINIMUM_LI_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_DOT11_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_CHANNEL_BONDING_MODE_5GHZ_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_FIXED_RATE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_SCAN_RESULT_AGE_COUNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, IbssBssid,
VAR_FLAGS_OPTIONAL,
(void *)CFG_IBSS_BSSID_DEFAULT),
REG_VARIABLE_STRING(CFG_INTF0_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
struct hdd_config, intfMacAddr[0],
VAR_FLAGS_OPTIONAL,
(void *)CFG_INTF0_MAC_ADDR_DEFAULT),
REG_VARIABLE_STRING(CFG_INTF1_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
struct hdd_config, intfMacAddr[1],
VAR_FLAGS_OPTIONAL,
(void *)CFG_INTF1_MAC_ADDR_DEFAULT),
REG_VARIABLE_STRING(CFG_INTF2_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
struct hdd_config, intfMacAddr[2],
VAR_FLAGS_OPTIONAL,
(void *)CFG_INTF2_MAC_ADDR_DEFAULT),
REG_VARIABLE_STRING(CFG_INTF3_MAC_ADDR_NAME, WLAN_PARAM_MacAddr,
struct hdd_config, intfMacAddr[3],
VAR_FLAGS_OPTIONAL,
(void *)CFG_INTF3_MAC_ADDR_DEFAULT),
REG_VARIABLE(CFG_AP_QOS_UAPSD_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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(CFG_AP_ENABLE_RANDOM_BSSID_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_LTE_COEX, WLAN_PARAM_Integer,
struct hdd_config, 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_FORCE_SAP_ACS, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_AP_KEEP_ALIVE_PERIOD_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, nBeaconInterval,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_BEACON_INTERVAL_DEFAULT,
CFG_BEACON_INTERVAL_MIN,
CFG_BEACON_INTERVAL_MAX),
REG_VARIABLE(CFG_ROAMING_TIME_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef WLAN_AP_STA_CONCURRENCY
REG_VARIABLE(CFG_PASSIVE_MAX_CHANNEL_TIME_CONC_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_NUM_STA_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
struct hdd_config, nNumStaChanCombinedConc,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NUM_STA_CHAN_COMBINED_CONC_DEFAULT,
CFG_NUM_STA_CHAN_COMBINED_CONC_MIN,
CFG_NUM_STA_CHAN_COMBINED_CONC_MAX),
REG_VARIABLE(CFG_NUM_P2P_CHAN_COMBINED_CONC_NAME, WLAN_PARAM_Integer,
struct hdd_config, nNumP2PChanCombinedConc,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NUM_P2P_CHAN_COMBINED_CONC_DEFAULT,
CFG_NUM_P2P_CHAN_COMBINED_CONC_MIN,
CFG_NUM_P2P_CHAN_COMBINED_CONC_MAX),
#endif
REG_VARIABLE(CFG_MAX_PS_POLL_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_LOW_GAIN_OVERRIDE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_fw_rssi_monitoring, 0),
REG_VARIABLE(CFG_FW_MCC_RTS_CTS_PROT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_QOS_WMM_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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_QOS_WMM_80211E_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_ese_feature_enabled, 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,
struct hdd_config, 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,
notify_is_fast_roam_ini_feature_enabled, 0),
/* flag to turn ON/OFF Motion assistance for Legacy Fast Roaming */
REG_DYNAMIC_VARIABLE(CFG_LFR_MAWC_FEATURE_ENABLED_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
notify_is_mawc_ini_feature_enabled, 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,
struct hdd_config, 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,
cb_notify_set_fast_transition_enabled, 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,
struct hdd_config, 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,
cb_notify_set_roam_rssi_diff, 0),
REG_DYNAMIC_VARIABLE(CFG_ENABLE_WES_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_wes_mode, 0),
#endif
#ifdef FEATURE_WLAN_OKC
REG_DYNAMIC_VARIABLE(CFG_OKC_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_okc_feature_enabled, 0),
#endif
REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_OFFLOAD_ENABLED, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_update_roam_scan_offload_enabled, 0),
REG_VARIABLE(CFG_QOS_WMM_PKT_CLASSIFY_BASIS_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, wowlPattern,
VAR_FLAGS_OPTIONAL,
(void *)CFG_WOWL_PATTERN_DEFAULT),
REG_VARIABLE(CFG_QOS_IMPLICIT_SETUP_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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_AP_LISTEN_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
REG_VARIABLE(CFG_WLAN_AUTO_SHUTDOWN, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
#ifdef WLAN_FEATURE_VOWIFI_11R
REG_VARIABLE(CFG_FT_RESOURCE_REQ_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_neighbor_scan_period, 0),
REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_LOOKUP_RSSI_THRESHOLD_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_neighbor_lookup_rssi_threshold, 0),
REG_DYNAMIC_VARIABLE(CFG_OPPORTUNISTIC_SCAN_THRESHOLD_DIFF_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_opportunistic_scan_threshold_diff, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_RESCAN_RSSI_DIFF_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_rescan_rssi_diff, 0),
REG_VARIABLE_STRING(CFG_NEIGHBOR_SCAN_CHAN_LIST_NAME, WLAN_PARAM_String,
struct hdd_config, neighborScanChanList,
VAR_FLAGS_OPTIONAL,
(void *)CFG_NEIGHBOR_SCAN_CHAN_LIST_DEFAULT),
REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MIN_CHAN_TIME_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_neighbor_scan_min_chan_time, 0),
REG_DYNAMIC_VARIABLE(CFG_NEIGHBOR_SCAN_MAX_CHAN_TIME_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_neighbor_scan_max_chan_time, 0),
REG_VARIABLE(CFG_11R_NEIGHBOR_REQ_MAX_TRIES_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_neighbor_results_refresh_period, 0),
REG_DYNAMIC_VARIABLE(CFG_EMPTY_SCAN_REFRESH_PERIOD_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_empty_scan_refresh_period, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FIRST_BCNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_bmiss_first_bcnt, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_BMISS_FINAL_BCNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_bmiss_final_bcnt, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_BEACON_RSSI_WEIGHT_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_beacon_rssi_weight, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAMING_DFS_CHANNEL_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_dfs_scan_mode, 0),
REG_DYNAMIC_VARIABLE(CFG_DELAY_BEFORE_VDEV_STOP_NAME,
WLAN_PARAM_Integer,
struct hdd_config,
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,
struct hdd_config,
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,
struct hdd_config,
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,
struct hdd_config,
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,
struct hdd_config,
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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_IGNORE_PEER_ERP_INFO_NAME, WLAN_PARAM_Integer,
struct hdd_config, ignore_peer_erp_info,
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_HOST_SSDP_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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_NSOFFLOAD_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_CDF_TRACE_ENABLE Parameters */
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_wdi,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_HDD_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_hdd,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_BMI_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_bmi,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SME_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_sme,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_PE_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_pe,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_WMA_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_wma,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SYS_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_sys,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_CDF_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_cdf,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_SAP_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_sap,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_CDF_TRACE_ENABLE_HDD_SAP_NAME, WLAN_PARAM_Integer,
struct hdd_config, cdf_trace_enable_hdd_sap,
VAR_FLAGS_OPTIONAL,
CFG_CDF_TRACE_ENABLE_DEFAULT,
CFG_CDF_TRACE_ENABLE_MIN,
CFG_CDF_TRACE_ENABLE_MAX),
REG_VARIABLE(CFG_TELE_BCN_TRANS_LI_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_AP_DATA_AVAIL_POLL_PERIOD_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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_ENABLE_CLOSE_LOOP_NAME, WLAN_PARAM_Integer,
struct hdd_config, enableCloseLoop,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_CLOSE_LOOP_DEFAULT,
CFG_ENABLE_CLOSE_LOOP_MIN,
CFG_ENABLE_CLOSE_LOOP_MAX),
REG_VARIABLE(CFG_ENABLE_BYPASS_11D_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_AUTOMATIC_TX_POWER_CONTROL_NAME,
WLAN_PARAM_Integer,
struct hdd_config, enableAutomaticTxPowerControl,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_DEFAULT,
CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MIN,
CFG_ENABLE_AUTOMATIC_TX_POWER_CONTROL_MAX),
REG_VARIABLE(CFG_SHORT_GI_40MHZ_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_roam_prefer5_g_hz, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_INTRA_BAND, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_intra_band, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_N_PROBES, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_scan_n_probes, 0),
REG_DYNAMIC_VARIABLE(CFG_ROAM_SCAN_HOME_AWAY_TIME, WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_roam_scan_home_away_time, 0),
#endif
REG_VARIABLE(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_MODULATED_DTIM_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_VHT_ENABLE_MU_BFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_DFS_MASTER_CAPABILITY, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
cb_notify_set_g_sap_preferred_chan_location, 0),
REG_DYNAMIC_VARIABLE(CFG_DISABLE_DFS_JAPAN_W53, WLAN_PARAM_Integer,
struct hdd_config, 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,
ch_notify_set_g_disable_dfs_japan_w53, 0),
REG_VARIABLE(CFG_ENABLE_FIRST_SCAN_2G_ONLY_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_RX_STBC, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
struct hdd_config, 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_PACKET_THRESHOLD, WLAN_PARAM_Integer,
struct hdd_config, 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_TRIGGER_THRESHOLD, WLAN_PARAM_SignedInteger,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
#ifdef WLAN_SOFTAP_VSTA_FEATURE
REG_VARIABLE(CFG_VSTA_SUPPORT_ENABLE, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_LPWR_IMG_TRANSITION_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_VHT_SU_BEAMFORMEE_CAP_FEATURE, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_VHT_ENABLE_TX_SU_BEAM_FORMER, WLAN_PARAM_Integer,
struct hdd_config, enable_su_tx_bformer,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_DEFAULT,
CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MIN,
CFG_VHT_ENABLE_TX_SU_BEAM_FORMER_MAX),
REG_VARIABLE(CFG_SAP_ALLOW_ALL_CHANNEL_PARAM_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_DYNAMIC_VARIABLE(CFG_ENABLE_SSR, WLAN_PARAM_Integer,
struct hdd_config, enableSSR,
VAR_FLAGS_OPTIONAL |
VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_SSR_DEFAULT,
CFG_ENABLE_SSR_MIN,
CFG_ENABLE_SSR_MAX,
cb_notify_set_enable_ssr, 0),
REG_VARIABLE(CFG_MAX_MEDIUM_TIME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, enableVhtFor24GHzBand,
VAR_FLAGS_OPTIONAL,
CFG_ENABLE_VHT_FOR_24GHZ_DEFAULT,
CFG_ENABLE_VHT_FOR_24GHZ_MIN,
CFG_ENABLE_VHT_FOR_24GHZ_MAX),
#endif
REG_DYNAMIC_VARIABLE(CFG_ENABLE_FAST_ROAM_IN_CONCURRENCY,
WLAN_PARAM_Integer,
struct hdd_config, 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,
cb_notify_set_enable_fast_roam_in_concurrency, 0),
REG_VARIABLE(CFG_ENABLE_ADAPT_RX_DRAIN_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
REG_VARIABLE(CFG_AMSDU_SUPPORT_IN_AMPDU_NAME, WLAN_PARAM_Integer,
struct hdd_config, isAmsduSupportInAMPDU,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_AMSDU_SUPPORT_IN_AMPDU_DEFAULT,
CFG_AMSDU_SUPPORT_IN_AMPDU_MIN,
CFG_AMSDU_SUPPORT_IN_AMPDU_MAX),
REG_VARIABLE(CFG_STRICT_5GHZ_PREF_BY_MARGIN, WLAN_PARAM_Integer,
struct hdd_config, 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_IP_TCP_UDP_CHKSUM_OFFLOAD, WLAN_PARAM_Integer,
struct hdd_config, enable_ip_tcp_udp_checksum_offload,
VAR_FLAGS_OPTIONAL,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DEFAULT,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_DISABLE,
CFG_ENABLE_IP_TCP_UDP_CHKSUM_OFFLOAD_ENABLE),
REG_VARIABLE(CFG_POWERSAVE_OFFLOAD_NAME, WLAN_PARAM_Integer,
struct hdd_config, enablePowersaveOffload,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_POWERSAVE_OFFLOAD_DEFAULT,
CFG_POWERSAVE_OFFLOAD_MIN,
CFG_POWERSAVE_OFFLOAD_MAX),
REG_VARIABLE(CFG_ENABLE_FW_UART_PRINT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef IPA_OFFLOAD
REG_VARIABLE(CFG_IPA_OFFLOAD_CONFIG_NAME, WLAN_PARAM_HexInteger,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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
#ifdef WLAN_FEATURE_11AC
REG_VARIABLE(CFG_VHT_AMPDU_LEN_EXPONENT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, maxNumberOfPeers,
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_IBSS_IS_POWER_SAVE_ALLOWED_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_THERMAL_TEMP_MIN_LEVEL0_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_SET_TXPOWER_LIMIT2G_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_RX_THREAD, WLAN_PARAM_Integer,
struct hdd_config, enableRxThread,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_RX_THREAD_DEFAULT,
CFG_ENABLE_RX_THREAD_MIN,
CFG_ENABLE_RX_THREAD_MAX),
REG_VARIABLE(CFG_ENABLE_DFS_PHYERR_FILTEROFFLOAD_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_LEGACY_TX_FLOW_CONTROL */
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
REG_VARIABLE(CFG_LL_TX_FLOW_STOP_QUEUE_TH, WLAN_PARAM_Integer,
struct hdd_config, TxFlowStopQueueThreshold,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_LL_TX_FLOW_STOP_QUEUE_TH_DEFAULT,
CFG_LL_TX_FLOW_STOP_QUEUE_TH_MIN,
CFG_LL_TX_FLOW_STOP_QUEUE_TH_MAX),
REG_VARIABLE(CFG_LL_TX_FLOW_START_QUEUE_OFFSET, WLAN_PARAM_Integer,
struct hdd_config, TxFlowStartQueueOffset,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_LL_TX_FLOW_START_QUEUE_OFFSET_DEFAULT,
CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MIN,
CFG_LL_TX_FLOW_START_QUEUE_OFFSET_MAX),
#endif
REG_VARIABLE(CFG_INITIAL_DWELL_TIME_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_SAP_MAX_OFFLOAD_PEERS, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef MEMORY_DEBUG
REG_VARIABLE(CFG_ENABLE_MEMORY_DEBUG_NAME, WLAN_PARAM_Integer,
struct hdd_config, IsMemoryDebugSupportEnabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_MEMORY_DEBUG_DEFAULT,
CFG_ENABLE_MEMORY_DEBUG_MIN,
CFG_ENABLE_MEMORY_DEBUG_MAX),
#endif
REG_VARIABLE(CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
REG_VARIABLE(CFG_ROAMING_OFFLOAD_NAME, WLAN_PARAM_Integer,
struct hdd_config, isRoamOffloadEnabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,
CFG_ROAMING_OFFLOAD_DEFAULT,
CFG_ROAMING_OFFLOAD_MIN,
CFG_ROAMING_OFFLOAD_MAX),
#endif
#ifdef MSM_PLATFORM
REG_VARIABLE(CFG_BUS_BANDWIDTH_HIGH_THRESHOLD, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
REG_VARIABLE(CFG_ENABLE_FW_LOG_TYPE, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_STRING(CFG_ENABLE_FW_MODULE_LOG_LEVEL, WLAN_PARAM_String,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#endif
REG_VARIABLE(CFG_IGNORE_CAC_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_IPA_UC_TX_BUF_COUNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef WLAN_LOGGING_SOCK_SVC_ENABLE
REG_VARIABLE(CFG_WLAN_LOGGING_SUPPORT_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
#ifdef FEATURE_WLAN_FORCE_SAP_SCC
REG_VARIABLE(CFG_SAP_SCC_CHAN_AVOIDANCE, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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_STRING(CFG_DHCP_SERVER_IP_NAME, WLAN_PARAM_String,
struct hdd_config, dhcpServerIP,
VAR_FLAGS_OPTIONAL,
(void *)CFG_DHCP_SERVER_IP_DEFAULT),
#endif /* DHCP_SERVER_OFFLOAD */
REG_VARIABLE(CFG_ENABLE_DEAUTH_BEFORE_CONNECTION, WLAN_PARAM_Integer,
struct hdd_config, 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_ENABLE_MAC_ADDR_SPOOFING, WLAN_PARAM_Integer,
struct hdd_config, 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),
REG_VARIABLE(CFG_ENABLE_CUSTOM_CONC_RULE1_NAME, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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),
REG_VARIABLE(CFG_STA_MIRACAST_MCC_REST_TIME_VAL, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config,
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,
struct hdd_config, 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_RAMDUMP_COLLECTION, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_ENABLE_NON_DFS_CHAN_ON_RADAR, WLAN_PARAM_Integer,
struct hdd_config, 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),
REG_VARIABLE(CFG_MULTICAST_HOST_FW_MSGS, WLAN_PARAM_Integer,
struct hdd_config, 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_CONC_SYSTEM_PREF, WLAN_PARAM_Integer,
struct hdd_config, conc_system_pref,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CONC_SYSTEM_PREF_DEFAULT,
CFG_CONC_SYSTEM_PREF_MIN,
CFG_CONC_SYSTEM_PREF_MAX),
REG_VARIABLE(CFG_POLICY_MNGR_ENABLE, WLAN_PARAM_Integer,
struct hdd_config, policy_manager_enabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_POLICY_MNGR_ENABLE_DEFAULT,
CFG_POLICY_MNGR_ENABLE_MIN,
CFG_POLICY_MNGR_ENABLE_MAX),
REG_VARIABLE(CFG_TSO_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, tso_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_TSO_ENABLED_DEFAULT,
CFG_TSO_ENABLED_MIN,
CFG_TSO_ENABLED_MAX),
REG_VARIABLE(CFG_LRO_ENABLED_NAME, WLAN_PARAM_Integer,
struct hdd_config, lro_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_LRO_ENABLED_DEFAULT,
CFG_LRO_ENABLED_MIN,
CFG_LRO_ENABLED_MAX),
REG_VARIABLE(CFG_ACTIVE_MODE_OFFLOAD, WLAN_PARAM_Integer,
struct hdd_config, 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_FINE_TIME_MEAS_CAPABILITY, WLAN_PARAM_HexInteger,
struct hdd_config, 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),
#ifdef WLAN_FEATURE_FASTPATH
REG_VARIABLE(CFG_ENABLE_FASTPATH, WLAN_PARAM_Integer,
struct hdd_config, fastpath_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_FASTPATH_DEFAULT,
CFG_ENABLE_FASTPATH_MIN,
CFG_ENABLE_FASTPATH_MAX),
#endif
REG_VARIABLE(CFG_MAX_SCAN_COUNT_NAME, WLAN_PARAM_Integer,
struct hdd_config, max_scan_count,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_MAX_SCAN_COUNT_DEFAULT,
CFG_MAX_SCAN_COUNT_MIN,
CFG_MAX_SCAN_COUNT_MAX),
REG_VARIABLE(CFG_DOT11P_MODE_NAME, WLAN_PARAM_Integer,
struct hdd_config, dot11p_mode,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_DOT11P_MODE_DEFAULT,
CFG_DOT11P_MODE_MIN,
CFG_DOT11P_MODE_MAX),
#ifdef FEATURE_NAPI
REG_VARIABLE(CFG_NAPI_NAME, WLAN_PARAM_Integer,
struct hdd_config, napi_enable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_NAPI_DEFAULT,
CFG_NAPI_MIN,
CFG_NAPI_MAX),
#endif /* FEATURE_NAPI */
#ifdef FEATURE_WLAN_EXTSCAN
REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME,
WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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,
struct hdd_config, 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
REG_VARIABLE(CFG_CE_CLASSIFY_ENABLE_NAME, WLAN_PARAM_Integer,
struct hdd_config, ce_classify_enabled,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_CE_CLASSIFY_ENABLE_DEFAULT,
CFG_CE_CLASSIFY_ENABLE_MIN,
CFG_CE_CLASSIFY_ENABLE_MAX),
REG_VARIABLE(CFG_DUAL_MAC_FEATURE_DISABLE, WLAN_PARAM_HexInteger,
struct hdd_config, dual_mac_feature_disable,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_DUAL_MAC_FEATURE_DISABLE_DEFAULT,
CFG_DUAL_MAC_FEATURE_DISABLE_MIN,
CFG_DUAL_MAC_FEATURE_DISABLE_MAX),
REG_VARIABLE(CFG_TX_CHAIN_MASK_CCK, WLAN_PARAM_Integer,
struct hdd_config, 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,
struct hdd_config, 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_SELF_GEN_FRM_PWR, WLAN_PARAM_Integer,
struct hdd_config, 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),
};
/**
* get_next_line() - find and locate the new line pointer
* @str: pointer to string
*
* This function returns a pointer to the character after the occurence
* of a new line character. It also modifies the original string by replacing
* the '\n' character with the null character.
*
* Return: the pointer to the character at new line,
* or NULL if no new line character was found
*/
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) == ' ')
/**
* i_trim() - trims any leading and trailing white spaces
* @str: pointer to string
*
* Return: the pointer of the string
*/
static char *i_trim(char *str)
{
char *ptr;
if (*str == '\0')
return str;
/* Find the first non white-space */
ptr = str;
while (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;
while (ptr != str && i_isspace(*ptr))
ptr--;
/* Null terminate the following character */
ptr[1] = '\0';
return str;
}
/* Maximum length of the confgiuration name and value */
#define CFG_VALUE_MAX_LEN 256
#define CFG_ENTRY_MAX_LEN (32+CFG_VALUE_MAX_LEN)
/**
* hdd_cfg_get_config() - get the configuration content
* @reg_table: pointer to configuration table
* @cRegTableEntries: number of the configuration entries
* @ini_struct: pointer to the hdd config knob
* @pHddCtx: pointer to hdd context
* @pBuf: buffer to store the configuration
* @buflen: size of the buffer
*
* Return: CDF_STATUS_SUCCESS if the configuration and buffer size can carry
* the content, otherwise CDF_STATUS_E_RESOURCES
*/
static CDF_STATUS hdd_cfg_get_config(REG_TABLE_ENTRY *reg_table,
unsigned long cRegTableEntries,
uint8_t *ini_struct,
hdd_context_t *pHddCtx, char *pBuf,
int buflen)
{
unsigned int idx;
REG_TABLE_ENTRY *pRegEntry = reg_table;
uint32_t value;
char valueStr[CFG_VALUE_MAX_LEN];
char configStr[CFG_ENTRY_MAX_LEN];
char *fmt;
void *pField;
struct cdf_mac_addr *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 = (struct cdf_mac_addr *) 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->config->
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 CDF_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 CDF_STATUS_SUCCESS;
}
/** struct tCfgIniEntry - ini configuration entry
*
* @name: name of the entry
* @value: value of the entry
*/
typedef struct {
char *name;
char *value;
} tCfgIniEntry;
/**
* find_cfg_item() - find the configuration item
* @iniTable: pointer to configuration table
* @entries: number fo the configuration entries
* @name: the interested configuration to find
* @value: the value to read back
*
* Return: CDF_STATUS_SUCCESS if the interested configuration is found,
* otherwise CDF_STATUS_E_FAILURE
*/
static CDF_STATUS find_cfg_item(tCfgIniEntry *iniTable, unsigned long entries,
char *name, char **value)
{
CDF_STATUS status = CDF_STATUS_E_FAILURE;
unsigned long i;
for (i = 0; i < entries; i++) {
if (strcmp(iniTable[i].name, name) == 0) {
*value = iniTable[i].value;
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Found %s entry for Name=[%s] Value=[%s] ",
WLAN_INI_FILE, name, *value);
return CDF_STATUS_SUCCESS;
}
}
return status;
}
/**
* parse_hex_digit() - conversion to hex value
* @c: the character to convert
*
* Return: the hex value, otherwise 0
*/
static int parse_hex_digit(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;
}
/**
* update_mac_from_string() - convert string to 6 bytes mac address
* @pHddCtx: the pointer to hdd context
* @macTable: the macTable to carry the conversion
* @num: number of the interface
*
* 00AA00BB00CC -> 0x00 0xAA 0x00 0xBB 0x00 0xCC
*
* Return: None
*/
static void update_mac_from_string(hdd_context_t *pHddCtx,
tCfgIniEntry *macTable, int num)
{
int i = 0, j = 0, res = 0;
char *candidate = NULL;
struct cdf_mac_addr macaddr[CDF_MAX_CONCURRENCY_PERSONA];
memset(macaddr, 0, sizeof(macaddr));
for (i = 0; i < num; i++) {
candidate = macTable[i].value;
for (j = 0; j < CDF_MAC_ADDR_SIZE; j++) {
res =
hex2bin(&macaddr[i].bytes[j], &candidate[(j << 1)],
1);
if (res < 0)
break;
}
if (res == 0 && !cdf_is_macaddr_zero(&macaddr[i])) {
cdf_mem_copy((uint8_t *) &pHddCtx->config->
intfMacAddr[i].bytes[0],
(uint8_t *) &macaddr[i].bytes[0],
CDF_MAC_ADDR_SIZE);
}
}
}
/**
* hdd_apply_cfg_ini() - apply the ini configuration file
* @pHddCtx: the pointer to hdd context
* @iniTable: pointer to configuration table
* @entries: number fo the configuration entries
* It overwrites the MAC address if config file exist.
*
* Return: CDF_STATUS_SUCCESS if the ini configuration file is correctly parsed,
* otherwise CDF_STATUS_E_INVAL
*/
static CDF_STATUS hdd_apply_cfg_ini(hdd_context_t *pHddCtx,
tCfgIniEntry *iniTable,
unsigned long entries)
{
CDF_STATUS match_status = CDF_STATUS_E_FAILURE;
CDF_STATUS ret_status = CDF_STATUS_SUCCESS;
unsigned int idx;
void *pField;
char *value_str = NULL;
unsigned long len_value_str;
char *candidate;
uint32_t value;
int32_t svalue;
void *pStructBase = pHddCtx->config;
REG_TABLE_ENTRY *pRegEntry = g_registry_table;
unsigned long cRegTableEntries = CDF_ARRAY_SIZE(g_registry_table);
uint32_t cbOutString;
int i;
int rv;
/* sanity test */
if (MAX_CFG_INI_ITEMS < cRegTableEntries) {
hddLog(LOGE,
"%s: MAX_CFG_INI_ITEMS too small, must be at least %ld",
__func__, cRegTableEntries);
}
for (idx = 0; idx < cRegTableEntries; idx++, pRegEntry++) {
/* Calculate the address of the destination field in the structure. */
pField = ((uint8_t *) pStructBase) + pRegEntry->VarOffset;
match_status =
find_cfg_item(iniTable, entries, pRegEntry->RegName,
&value_str);
if ((match_status != CDF_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 = CDF_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 == CDF_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 == CDF_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 (CDF_STATUS_SUCCESS == match_status) {
rv = kstrtos32(value_str, 10, &svalue);
if (rv < 0) {
hddLog(CDF_TRACE_LEVEL_WARN,
"%s: Reg Parameter %s invalid. Enforcing Default",
__func__, pRegEntry->RegName);
svalue =
(int32_t) pRegEntry->VarDefault;
}
} else {
svalue = (int32_t) pRegEntry->VarDefault;
}
/* If this parameter needs range checking, do it here. */
if (pRegEntry->Flags & VAR_FLAGS_RANGE_CHECK) {
if (svalue > (int32_t) pRegEntry->VarMax) {
hddLog(LOGE,
"%s: Reg Parameter %s > allowed Maximum "
"[%d > %d]. Enforcing Maximum",
__func__, pRegEntry->RegName,
svalue, (int)pRegEntry->VarMax);
svalue = (int32_t) pRegEntry->VarMax;
}
if (svalue < (int32_t) pRegEntry->VarMin) {
hddLog(LOGE,
"%s: Reg Parameter %s < allowed Minimum "
"[%d < %d]. Enforcing Minimum",
__func__, pRegEntry->RegName,
svalue, (int)pRegEntry->VarMin);
svalue = (int32_t) pRegEntry->VarMin;
}
}
/* If this parameter needs range checking, do it here. */
else if (pRegEntry->
Flags & VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT) {
if (svalue > (int32_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 =
(int32_t) pRegEntry->VarDefault;
}
if (svalue < (int32_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
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_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 == CDF_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 =
util_min(strlen
((char *)pRegEntry->
VarDefault),
pRegEntry->VarSize - 1);
memcpy(pField,
(void *)(pRegEntry->VarDefault),
cbOutString);
((uint8_t *) pField)[cbOutString] =
'\0';
} else {
memcpy(pField, (void *)(value_str),
len_value_str);
((uint8_t *) pField)[len_value_str] =
'\0';
}
} else {
/* Failed to read the string parameter from the registry. Use the default. */
cbOutString =
util_min(strlen((char *)pRegEntry->VarDefault),
pRegEntry->VarSize - 1);
memcpy(pField, (void *)(pRegEntry->VarDefault),
cbOutString);
((uint8_t *) pField)[cbOutString] = '\0';
}
} else if (WLAN_PARAM_MacAddr == pRegEntry->RegType) {
if (pRegEntry->VarSize != CDF_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 == CDF_STATUS_SUCCESS) {
len_value_str = strlen(value_str);
if (len_value_str != (CDF_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 < CDF_MAC_ADDR_SIZE; i++) {
((char *)pField)[i] =
(char)(parse_hex_digit(candidate[i * 2]) *
16 +
parse_hex_digit(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 == CDF_STATUS_SUCCESS) &&
(idx < MAX_CFG_INI_ITEMS)) {
set_bit(idx, (void *)&pHddCtx->config->bExplicitCfg);
}
}
return ret_status;
}
/**
* hdd_execute_config_command() - executes an arbitrary configuration command
* @reg_table: the pointer to configuration table
* @tableSize: the size of the configuration table
* @ini_struct: pointer to the hdd config knob
* @pHddCtx: the pointer to hdd context
* @command: the command to run
*
* Return: CDF_STATUS_SUCCESS if the command is found and able to execute,
* otherwise the appropriate CDF_STATUS will be returned
*/
static CDF_STATUS hdd_execute_config_command(REG_TABLE_ENTRY *reg_table,
unsigned long tableSize,
uint8_t *ini_struct,
hdd_context_t *pHddCtx,
char *command)
{
REG_TABLE_ENTRY *pRegEntry;
char *clone;
char *pCmd;
void *pField;
char *name;
char *value_str;
uint32_t value;
int32_t svalue;
size_t len_value_str;
unsigned int idx;
unsigned int i;
CDF_STATUS vstatus;
int rv;
/* assume failure until proven otherwise */
vstatus = CDF_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 = CDF_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 < (int32_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 > (int32_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 != (CDF_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, (CDF_MAC_ADDR_SIZE * 2));
goto done;
}
/* parse the string and store it in the byte array */
for (i = 0; i < CDF_MAC_ADDR_SIZE; i++) {
((char *)pField)[i] = (char)
((parse_hex_digit(value_str[(i * 2)]) * 16) +
parse_hex_digit(value_str[(i * 2) + 1]));
}
break;
default:
goto done;
}
/* if we get here, we had a successful modification */
vstatus = CDF_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->config->bExplicitCfg);
}
done:
kfree(clone);
return vstatus;
}
/**
* hdd_set_power_save_offload_config() - set power save offload configuration
* @pHddCtx: the pointer to hdd context
*
* Return: none
*/
static void hdd_set_power_save_offload_config(hdd_context_t *pHddCtx)
{
struct hdd_config *pConfig = pHddCtx->config;
uint32_t 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
*/
sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_LISTEN_INTERVAL,
listenInterval);
}
}
/**
* hdd_cfg_print() - print the hdd configuration
* @iniTable: pointer to hdd context
*
* Return: None
*/
void hdd_cfg_print(hdd_context_t *pHddCtx)
{
int i;
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"*********Config values in HDD Adapter*******");
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [RTSThreshold] Value = %u",
pHddCtx->config->RTSThreshold);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [OperatingChannel] Value = [%u]",
pHddCtx->config->OperatingChannel);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [PowerUsageControl] Value = [%s]",
pHddCtx->config->PowerUsageControl);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fIsImpsEnabled] Value = [%u]",
pHddCtx->config->fIsImpsEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nVccRssiTrigger] Value = [%u]",
pHddCtx->config->nVccRssiTrigger);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssBssid] Value =[" MAC_ADDRESS_STR "]",
MAC_ADDR_ARRAY(pHddCtx->config->IbssBssid.bytes));
for (i = 0; i < CDF_MAX_CONCURRENCY_PERSONA; i++) {
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [Intf%dMacAddress] Value =[" MAC_ADDRESS_STR "]",
i, MAC_ADDR_ARRAY(pHddCtx->config->intfMacAddr[i].bytes));
}
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApEnableUapsd] value = [%u]",
pHddCtx->config->apUapsdEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableApProt] value = [%u]",
pHddCtx->config->apProtEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gAPAutoShutOff] Value = [%u]",
pHddCtx->config->nAPAutoShutOff);
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gWlanMccToSccSwitchMode] Value = [%u]",
pHddCtx->config->WlanMccToSccSwitchMode);
#endif
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gWlanAutoShutdown] Value = [%u]",
pHddCtx->config->WlanAutoShutdown);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableListenMode] Value = [%u]",
pHddCtx->config->nEnableListenMode);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApProtection] value = [%u]",
pHddCtx->config->apProtection);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableApOBSSProt] value = [%u]",
pHddCtx->config->apOBSSProtEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS,
pHddCtx->config->force_sap_acs);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_START_CH,
pHddCtx->config->force_sap_acs_st_ch);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] value = [%u]", CFG_FORCE_SAP_ACS_END_CH,
pHddCtx->config->force_sap_acs_end_ch);
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
CDF_TRACE(CDF_MODULE_ID_HDD,
CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [sap_channel_avoidance] value = [%u]",
pHddCtx->config->sap_channel_avoidance);
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] value = [%u]", CFG_SAP_P2P_11AC_OVERRIDE_NAME,
pHddCtx->config->sap_p2p_11ac_override);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [ChannelBondingMode] Value = [%u]",
pHddCtx->config->nChannelBondingMode24GHz);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [ChannelBondingMode] Value = [%u]",
pHddCtx->config->nChannelBondingMode5GHz);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [dot11Mode] Value = [%u]",
pHddCtx->config->dot11Mode);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [WmmMode] Value = [%u] ", pHddCtx->config->WmmMode);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [UapsdMask] Value = [0x%x] ",
pHddCtx->config->UapsdMask);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [PktClassificationBasis] Value = [%u] ",
pHddCtx->config->PktClassificationBasis);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [ImplicitQosIsEnabled] Value = [%u]",
(int)pHddCtx->config->bImplicitQosEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdVoSrvIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdVoSrvIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdVoSuspIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdVoSuspIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdViSrvIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdViSrvIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdViSuspIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdViSuspIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdBeSrvIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdBeSrvIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdBeSuspIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdBeSuspIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdBkSrvIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdBkSrvIntv);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraUapsdBkSuspIntv] Value = [%u] ",
pHddCtx->config->InfraUapsdBkSuspIntv);
#ifdef FEATURE_WLAN_ESE
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraInactivityInterval] Value = [%u] ",
pHddCtx->config->InfraInactivityInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [EseEnabled] Value = [%u] ",
pHddCtx->config->isEseIniFeatureEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [FastTransitionEnabled] Value = [%u] ",
pHddCtx->config->isFastTransitionEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gTxPowerCap] Value = [%u] dBm ",
pHddCtx->config->nTxPowerCap);
#endif
#ifdef FEATURE_WLAN_LFR
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [FastRoamEnabled] Value = [%u] ",
pHddCtx->config->isFastRoamIniFeatureEnabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [MAWCEnabled] Value = [%u] ",
pHddCtx->config->MAWCEnabled);
#endif
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [RoamRssiDiff] Value = [%u] ",
pHddCtx->config->RoamRssiDiff);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [isWESModeEnabled] Value = [%u] ",
pHddCtx->config->isWESModeEnabled);
#endif
#ifdef FEATURE_WLAN_OKC
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [OkcEnabled] Value = [%u] ",
pHddCtx->config->isOkcIniFeatureEnabled);
#endif
#ifdef FEATURE_WLAN_SCAN_PNO
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [configPNOScanSupport] Value = [%u] ",
pHddCtx->config->configPNOScanSupport);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [configPNOScanTimerRepeatValue] Value = [%u] ",
pHddCtx->config->configPNOScanTimerRepeatValue);
#endif
#ifdef FEATURE_WLAN_TDLS
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fEnableTDLSSupport] Value = [%u] ",
pHddCtx->config->fEnableTDLSSupport);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fEnableTDLSImplicitTrigger] Value = [%u] ",
pHddCtx->config->fEnableTDLSImplicitTrigger);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fTDLSExternalControl] Value = [%u] ",
pHddCtx->config->fTDLSExternalControl);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fTDLSUapsdMask] Value = [%u] ",
pHddCtx->config->fTDLSUapsdMask);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fEnableTDLSBufferSta] Value = [%u] ",
pHddCtx->config->fEnableTDLSBufferSta);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fEnableTDLSWmmMode] Value = [%u] ",
pHddCtx->config->fEnableTDLSWmmMode);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [enable_tdls_scan] Value = [%u]",
pHddCtx->config->enable_tdls_scan);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraDirAcVo] Value = [%u] ",
pHddCtx->config->InfraDirAcVo);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraNomMsduSizeAcVo] Value = [0x%x] ",
pHddCtx->config->InfraNomMsduSizeAcVo);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMeanDataRateAcVo] Value = [0x%x] ",
pHddCtx->config->InfraMeanDataRateAcVo);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMinPhyRateAcVo] Value = [0x%x] ",
pHddCtx->config->InfraMinPhyRateAcVo);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraSbaAcVo] Value = [0x%x] ",
pHddCtx->config->InfraSbaAcVo);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraDirAcVi] Value = [%u] ",
pHddCtx->config->InfraDirAcVi);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraNomMsduSizeAcVi] Value = [0x%x] ",
pHddCtx->config->InfraNomMsduSizeAcVi);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMeanDataRateAcVi] Value = [0x%x] ",
pHddCtx->config->InfraMeanDataRateAcVi);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMinPhyRateAcVi] Value = [0x%x] ",
pHddCtx->config->InfraMinPhyRateAcVi);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraSbaAcVi] Value = [0x%x] ",
pHddCtx->config->InfraSbaAcVi);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraDirAcBe] Value = [%u] ",
pHddCtx->config->InfraDirAcBe);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraNomMsduSizeAcBe] Value = [0x%x] ",
pHddCtx->config->InfraNomMsduSizeAcBe);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMeanDataRateAcBe] Value = [0x%x] ",
pHddCtx->config->InfraMeanDataRateAcBe);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMinPhyRateAcBe] Value = [0x%x] ",
pHddCtx->config->InfraMinPhyRateAcBe);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraSbaAcBe] Value = [0x%x] ",
pHddCtx->config->InfraSbaAcBe);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraDirAcBk] Value = [%u] ",
pHddCtx->config->InfraDirAcBk);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraNomMsduSizeAcBk] Value = [0x%x] ",
pHddCtx->config->InfraNomMsduSizeAcBk);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMeanDataRateAcBk] Value = [0x%x] ",
pHddCtx->config->InfraMeanDataRateAcBk);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraMinPhyRateAcBk] Value = [0x%x] ",
pHddCtx->config->InfraMinPhyRateAcBk);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [InfraSbaAcBk] Value = [0x%x] ",
pHddCtx->config->InfraSbaAcBk);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [DelayedTriggerFrmInt] Value = [%u] ",
pHddCtx->config->DelayedTriggerFrmInt);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [mcastBcastFilterSetting] Value = [%u] ",
pHddCtx->config->mcastBcastFilterSetting);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fhostArpOffload] Value = [%u] ",
pHddCtx->config->fhostArpOffload);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [ssdp] Value = [%u] ", pHddCtx->config->ssdp);
#ifdef FEATURE_WLAN_RA_FILTERING
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [RArateLimitInterval] Value = [%u] ",
pHddCtx->config->RArateLimitInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [IsRArateLimitEnabled] Value = [%u] ",
pHddCtx->config->IsRArateLimitEnabled);
#endif
#ifdef WLAN_FEATURE_VOWIFI_11R
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fFTResourceReqSupported] Value = [%u] ",
pHddCtx->config->fFTResourceReqSupported);
#endif
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nNeighborLookupRssiThreshold] Value = [%u] ",
pHddCtx->config->nNeighborLookupRssiThreshold);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [delay_before_vdev_stop] Value = [%u] ",
pHddCtx->config->delay_before_vdev_stop);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nOpportunisticThresholdDiff] Value = [%u] ",
pHddCtx->config->nOpportunisticThresholdDiff);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nRoamRescanRssiDiff] Value = [%u] ",
pHddCtx->config->nRoamRescanRssiDiff);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nNeighborScanMinChanTime] Value = [%u] ",
pHddCtx->config->nNeighborScanMinChanTime);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nNeighborScanMaxChanTime] Value = [%u] ",
pHddCtx->config->nNeighborScanMaxChanTime);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nMaxNeighborRetries] Value = [%u] ",
pHddCtx->config->nMaxNeighborReqTries);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nNeighborScanPeriod] Value = [%u] ",
pHddCtx->config->nNeighborScanPeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nNeighborScanResultsRefreshPeriod] Value = [%u] ",
pHddCtx->config->nNeighborResultsRefreshPeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nEmptyScanRefreshPeriod] Value = [%u] ",
pHddCtx->config->nEmptyScanRefreshPeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nRoamBmissFirstBcnt] Value = [%u] ",
pHddCtx->config->nRoamBmissFirstBcnt);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nRoamBmissFinalBcnt] Value = [%u] ",
pHddCtx->config->nRoamBmissFinalBcnt);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nRoamBeaconRssiWeight] Value = [%u] ",
pHddCtx->config->nRoamBeaconRssiWeight);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [allowDFSChannelRoam] Value = [%u] ",
pHddCtx->config->allowDFSChannelRoam);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nhi_rssi_scan_max_count] Value = [%u] ",
pHddCtx->config->nhi_rssi_scan_max_count);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nhi_rssi_scan_rssi_delta] Value = [%u] ",
pHddCtx->config->nhi_rssi_scan_rssi_delta);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nhi_rssi_scan_delay] Value = [%u] ",
pHddCtx->config->nhi_rssi_scan_delay);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nhi_rssi_scan_rssi_ub] Value = [%u] ",
pHddCtx->config->nhi_rssi_scan_rssi_ub);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [burstSizeDefinition] Value = [0x%x] ",
pHddCtx->config->burstSizeDefinition);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [tsInfoAckPolicy] Value = [0x%x] ",
pHddCtx->config->tsInfoAckPolicy);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [rfSettlingTimeUs] Value = [%u] ",
pHddCtx->config->rfSettlingTimeUs);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [bSingleTidRc] Value = [%u] ",
pHddCtx->config->bSingleTidRc);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gDynamicPSPollvalue] Value = [%u] ",
pHddCtx->config->dynamicPsPollValue);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gAddTSWhenACMIsOff] Value = [%u] ",
pHddCtx->config->AddTSWhenACMIsOff);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gValidateScanList] Value = [%u] ",
pHddCtx->config->fValidateScanList);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gStaKeepAlivePeriod] Value = [%u] ",
pHddCtx->config->infraStaKeepAlivePeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApDataAvailPollInterVal] Value = [%u] ",
pHddCtx->config->apDataAvailPollPeriodInMs);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [BandCapability] Value = [%u] ",
pHddCtx->config->nBandCapability);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fEnableBeaconEarlyTermination] Value = [%u] ",
pHddCtx->config->fEnableBeaconEarlyTermination);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [teleBcnWakeupEnable] Value = [%u] ",
pHddCtx->config->teleBcnWakeupEn);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [transListenInterval] Value = [%u] ",
pHddCtx->config->nTeleBcnTransListenInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [transLiNumIdleBeacons] Value = [%u] ",
pHddCtx->config->nTeleBcnTransLiNumIdleBeacons);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [maxListenInterval] Value = [%u] ",
pHddCtx->config->nTeleBcnMaxListenInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [maxLiNumIdleBeacons] Value = [%u] ",
pHddCtx->config->nTeleBcnMaxLiNumIdleBeacons);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [bcnEarlyTermWakeInterval] Value = [%u] ",
pHddCtx->config->bcnEarlyTermWakeInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApDataAvailPollInterVal] Value = [%u] ",
pHddCtx->config->apDataAvailPollPeriodInMs);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableBypass11d] Value = [%u] ",
pHddCtx->config->enableBypass11d);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableDFSChnlScan] Value = [%u] ",
pHddCtx->config->enableDFSChnlScan);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableDFSPnoChnlScan] Value = [%u] ",
pHddCtx->config->enable_dfs_pno_chnl_scan);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gReportMaxLinkSpeed] Value = [%u] ",
pHddCtx->config->reportMaxLinkSpeed);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [thermalMitigationEnable] Value = [%u] ",
pHddCtx->config->thermalMitigationEnable);
#ifdef WLAN_FEATURE_11AC
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gVhtChannelWidth] value = [%u]",
pHddCtx->config->vhtChannelWidth);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [enableFirstScan2GOnly] Value = [%u] ",
pHddCtx->config->enableFirstScan2GOnly);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [skipDfsChnlInP2pSearch] Value = [%u] ",
pHddCtx->config->skipDfsChnlInP2pSearch);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",
pHddCtx->config->ignoreDynamicDtimInP2pMode);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [enableRxSTBC] Value = [%u] ",
pHddCtx->config->enableRxSTBC);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableLpwrImgTransition] Value = [%u] ",
pHddCtx->config->enableLpwrImgTransition);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableSSR] Value = [%u] ",
pHddCtx->config->enableSSR);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableVhtFor24GHzBand] Value = [%u] ",
pHddCtx->config->enableVhtFor24GHzBand);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gFlexConnectPowerFactor] Value = [%u] ",
pHddCtx->config->flexConnectPowerFactor);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableIbssHeartBeatOffload] Value = [%u] ",
pHddCtx->config->enableIbssHeartBeatOffload);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gAntennaDiversity] Value = [%u] ",
pHddCtx->config->antennaDiversity);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gGoLinkMonitorPeriod] Value = [%u]",
pHddCtx->config->goLinkMonitorPeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApLinkMonitorPeriod] Value = [%u]",
pHddCtx->config->apLinkMonitorPeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gGoKeepAlivePeriod] Value = [%u]",
pHddCtx->config->goKeepAlivePeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gApKeepAlivePeriod]Value = [%u]",
pHddCtx->config->apKeepAlivePeriod);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gAmsduSupportInAMPDU] Value = [%u] ",
pHddCtx->config->isAmsduSupportInAMPDU);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [nSelect5GHzMargin] Value = [%u] ",
pHddCtx->config->nSelect5GHzMargin);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gCoalesingInIBSS] Value = [%u] ",
pHddCtx->config->isCoalesingInIBSSAllowed);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssATIMWinSize] Value = [%u] ",
pHddCtx->config->ibssATIMWinSize);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssIsPowerSaveAllowed] Value = [%u] ",
pHddCtx->config->isIbssPowerSaveAllowed);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssIsPowerCollapseAllowed] Value = [%u] ",
pHddCtx->config->isIbssPowerCollapseAllowed);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssAwakeOnTxRx] Value = [%u] ",
pHddCtx->config->isIbssAwakeOnTxRx);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssInactivityTime] Value = [%u] ",
pHddCtx->config->ibssInactivityCount);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssTxSpEndInactivityTime] Value = [%u] ",
pHddCtx->config->ibssTxSpEndInactivityTime);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssPsWarmupTime] Value = [%u] ",
pHddCtx->config->ibssPsWarmupTime);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIbssPs1RxChainInAtim] Value = [%u] ",
pHddCtx->config->ibssPs1RxChainInAtimEnable);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fDfsPhyerrFilterOffload] Value = [%u] ",
pHddCtx->config->fDfsPhyerrFilterOffload);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIgnorePeerErpInfo] Value = [%u] ",
pHddCtx->config->ignore_peer_erp_info);
#ifdef IPA_OFFLOAD
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIPAConfig] Value = [0x%x] ",
pHddCtx->config->IpaConfig);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIPADescSize] Value = [%u] ",
pHddCtx->config->IpaDescSize);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [IpaHighBandwidthMbpsg] Value = [%u] ",
pHddCtx->config->IpaHighBandwidthMbps);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [IpaMediumBandwidthMbps] Value = [%u] ",
pHddCtx->config->IpaMediumBandwidthMbps);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [IpaLowBandwidthMbps] Value = [%u] ",
pHddCtx->config->IpaLowBandwidthMbps);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableOverLapCh] Value = [%u] ",
pHddCtx->config->gEnableOverLapCh);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gMaxOffloadPeers] Value = [%u] ",
pHddCtx->config->apMaxOffloadPeers);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gMaxOffloadReorderBuffs] value = [%u] ",
pHddCtx->config->apMaxOffloadReorderBuffs);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gAllowDFSChannelRoam] Value = [%u] ",
pHddCtx->config->allowDFSChannelRoam);
hddLog(CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gMaxConcurrentActiveSessions] Value = [%u] ",
pHddCtx->config->gMaxConcurrentActiveSessions);
#ifdef MSM_PLATFORM
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gBusBandwidthHighThreshold] Value = [%u] ",
pHddCtx->config->busBandwidthHighThreshold);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gBusBandwidthMediumThreshold] Value = [%u] ",
pHddCtx->config->busBandwidthMediumThreshold);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gBusBandwidthLowThreshold] Value = [%u] ",
pHddCtx->config->busBandwidthLowThreshold);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gbusBandwidthComputeInterval] Value = [%u] ",
pHddCtx->config->busBandwidthComputeInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gTcpDelAckThresholdHigh] Value = [%u] ",
pHddCtx->config->tcpDelackThresholdHigh);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gTcpDelAckThresholdLow] Value = [%u] ",
pHddCtx->config->tcpDelackThresholdLow);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gIgnoreCAC] Value = [%u] ",
pHddCtx->config->ignoreCAC);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gSapPreferredChanLocation] Value = [%u] ",
pHddCtx->config->gSapPreferredChanLocation);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gDisableDfsJapanW53] Value = [%u] ",
pHddCtx->config->gDisableDfsJapanW53);
#ifdef FEATURE_GREEN_AP
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableGreenAp] Value = [%u] ",
pHddCtx->config->enableGreenAP);
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [isRoamOffloadEnabled] Value = [%u]",
pHddCtx->config->isRoamOffloadEnabled);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableSifsBurst] Value = [%u]",
pHddCtx->config->enableSifsBurst);
#ifdef WLAN_FEATURE_LPSS
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableLpassSupport] Value = [%u] ",
pHddCtx->config->enablelpasssupport);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableSelfRecovery] Value = [%u]",
pHddCtx->config->enableSelfRecovery);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableSapSuspend] Value = [%u]",
pHddCtx->config->enableSapSuspend);
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWgotoSuspend] Value = [%u]",
pHddCtx->config->extWowGotoSuspend);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWowApp1WakeupPinNumber] Value = [%u]",
pHddCtx->config->extWowApp1WakeupPinNumber);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWowApp2WakeupPinNumber] Value = [%u]",
pHddCtx->config->extWowApp2WakeupPinNumber);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2KAInitPingInterval] Value = [%u]",
pHddCtx->config->extWowApp2KAInitPingInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2KAMinPingInterval] Value = [%u]",
pHddCtx->config->extWowApp2KAMinPingInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2KAMaxPingInterval] Value = [%u]",
pHddCtx->config->extWowApp2KAMaxPingInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2KAIncPingInterval] Value = [%u]",
pHddCtx->config->extWowApp2KAIncPingInterval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2TcpSrcPort] Value = [%u]",
pHddCtx->config->extWowApp2TcpSrcPort);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2TcpDstPort] Value = [%u]",
pHddCtx->config->extWowApp2TcpDstPort);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2TcpTxTimeout] Value = [%u]",
pHddCtx->config->extWowApp2TcpTxTimeout);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gExtWoWApp2TcpRxTimeout] Value = [%u]",
pHddCtx->config->extWowApp2TcpRxTimeout);
#endif
#ifdef DHCP_SERVER_OFFLOAD
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gDHCPServerOffloadEnable] Value = [%u]",
pHddCtx->config->enableDHCPServerOffload);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gDHCPMaxNumClients] Value = [%u]",
pHddCtx->config->dhcpMaxNumClients);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gDHCPServerIP] Value = [%s]",
pHddCtx->config->dhcpServerIP);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gEnableDumpCollect] Value = [%u]",
pHddCtx->config->is_ramdump_enabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [gP2PListenDeferInterval] Value = [%u]",
pHddCtx->config->p2p_listen_defer_interval);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [is_ps_enabled] value = [%d]",
pHddCtx->config->is_ps_enabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [policy_manager_enabled] value = [%d]",
pHddCtx->config->policy_manager_enabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [tso_enable] value = [%d]",
pHddCtx->config->tso_enable);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [LROEnable] value = [%d]",
pHddCtx->config->lro_enable);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [active_mode_offload] value = [%d]",
pHddCtx->config->active_mode_offload);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [gfine_time_meas_cap] value = [%u]",
pHddCtx->config->fine_time_meas_cap);
#ifdef WLAN_FEATURE_FASTPATH
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [fastpath_enable] Value = [%u]",
pHddCtx->config->fastpath_enable);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [max_scan_count] value = [%d]",
pHddCtx->config->max_scan_count);
#ifdef FEATURE_NAPI_DEBUG
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [%s] value = [%d]",
CFG_ENABLE_RX_THREAD, pHddCtx->config->enableRxThread);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [%s] value = [%d]",
CFG_NAPI_NAME, pHddCtx->config->napi_enable);
#endif
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"Name = [%s] Value = [%u]",
CFG_CE_CLASSIFY_ENABLE_NAME,
pHddCtx->config->ce_classify_enabled);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"Name = [%s] value = [%u]",
CFG_DUAL_MAC_FEATURE_DISABLE,
pHddCtx->config->dual_mac_feature_disable);
}
/**
* hdd_update_mac_config() - update MAC address from cfg file
* @pHddCtx: the pointer to hdd context
*
* It overwrites the MAC address if config file exist.
*
* Return: CDF_STATUS_SUCCESS if the MAC address is found from cfg file
* and overwritten, otherwise CDF_STATUS_E_INVAL
*/
CDF_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx)
{
int status, i = 0;
const struct firmware *fw = NULL;
char *line, *buffer = NULL;
char *name, *value;
tCfgIniEntry macTable[CDF_MAX_CONCURRENCY_PERSONA];
tSirMacAddr customMacAddr;
CDF_STATUS cdf_status = CDF_STATUS_SUCCESS;
memset(macTable, 0, sizeof(macTable));
status = request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev);
if (status) {
hddLog(CDF_TRACE_LEVEL_WARN, "%s: request_firmware failed %d",
__func__, status);
cdf_status = CDF_STATUS_E_FAILURE;
return cdf_status;
}
if (!fw || !fw->data || !fw->size) {
hddLog(CDF_TRACE_LEVEL_FATAL, "%s: invalid firmware", __func__);
cdf_status = CDF_STATUS_E_INVAL;
goto config_exit;
}
buffer = (char *)fw->data;
/* 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 = strnchr(buffer, strlen(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 >= CDF_MAX_CONCURRENCY_PERSONA)
break;
}
}
}
buffer = line;
}
if (i <= CDF_MAX_CONCURRENCY_PERSONA) {
hddLog(CDF_TRACE_LEVEL_INFO, "%s: %d Mac addresses provided",
__func__, i);
} else {
hddLog(CDF_TRACE_LEVEL_ERROR,
"%s: invalid number of Mac address provided, nMac = %d",
__func__, i);
cdf_status = CDF_STATUS_E_INVAL;
goto config_exit;
}
update_mac_from_string(pHddCtx, &macTable[0], i);
cdf_mem_copy(&customMacAddr,
&pHddCtx->config->intfMacAddr[0].bytes[0],
sizeof(tSirMacAddr));
sme_set_custom_mac_addr(customMacAddr);
config_exit:
release_firmware(fw);
return cdf_status;
}
/**
* hdd_parse_config_ini() - parse the ini configuration file
* @pHddCtx: the pointer to hdd context
*
* This function reads the qcom_cfg.ini file and
* parses each 'Name=Value' pair in the ini file
*
* Return: CDF_STATUS_SUCCESS if the qcom_cfg.ini is correctly read,
* otherwise CDF_STATUS_E_INVAL
*/
CDF_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];
CDF_STATUS cdf_status = CDF_STATUS_SUCCESS;
memset(cfgIniTable, 0, sizeof(cfgIniTable));
status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev);
if (status) {
hddLog(CDF_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",
__func__, status);
cdf_status = CDF_STATUS_E_FAILURE;
goto config_exit;
}
if (!fw || !fw->data || !fw->size) {
hddLog(CDF_TRACE_LEVEL_FATAL, "%s: %s download failed",
__func__, WLAN_INI_FILE);
cdf_status = CDF_STATUS_E_FAILURE;
goto config_exit;
}
hddLog(LOG1, "%s: qcom_cfg.ini Size %zu", __func__, fw->size);
buffer = (char *)cdf_mem_malloc(fw->size);
if (NULL == buffer) {
hddLog(CDF_TRACE_LEVEL_FATAL, FL("cdf_mem_malloc failure"));
release_firmware(fw);
return CDF_STATUS_E_NOMEM;
}
pTemp = buffer;
cdf_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 (!i_isspace(*buffer)
&& *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 */
cdf_status = hdd_apply_cfg_ini(pHddCtx, cfgIniTable, i);
#ifdef FEATURE_NAPI
if (CDF_STATUS_SUCCESS == cdf_status)
hdd_napi_event(NAPI_EVT_INI_FILE,
(void *)pHddCtx->config->napi_enable);
#endif /* FEATURE_NAPI */
config_exit:
release_firmware(fw);
cdf_mem_free(pTemp);
return cdf_status;
}
/**
* hdd_cfg_xlate_to_csr_phy_mode() - convert PHY mode
* @dot11Mode: the mode to convert
*
* Convert the configuration PHY mode to CSR PHY mode
*
* Return: the CSR phy mode value
*/
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;
}
}
/**
* hdd_set_idle_ps_config() - set idle power save configuration
* @pHddCtx: the pointer to hdd context
* @val: the value to configure
*
* Return: CDF_STATUS_SUCCESS if command set correctly,
* otherwise the CDF_STATUS return from SME layer
*/
CDF_STATUS hdd_set_idle_ps_config(hdd_context_t *pHddCtx, uint32_t val)
{
struct hdd_config *pConfig = pHddCtx->config;
CDF_STATUS status = CDF_STATUS_SUCCESS;
hddLog(LOG1, "hdd_set_idle_ps_config: Enter Val %d", val);
if (pConfig->fIsImpsEnabled) {
status = sme_set_idle_powersave_config(pHddCtx->pcds_context,
pHddCtx->hHal, val);
if (CDF_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)
{
struct hdd_config *config = hdd_ctx->config;
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_string_to_u8_array() - scan the string and convert to u8 array
* @str: the pointer to the string
* @intArray: the pointer of buffer to store the u8 value
* @len: size of the buffer
*
* Return: CDF_STATUS_SUCCESS if the conversion is done,
* otherwise CDF_STATUS_E_INVAL
*/
CDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *intArray, uint8_t *len,
uint8_t intArrayMaxLen)
{
char *s = str;
if (str == NULL || intArray == NULL || len == NULL) {
return CDF_STATUS_E_INVAL;
}
*len = 0;
while ((s != NULL) && (*len < intArrayMaxLen)) {
int val;
/* Increment length only if sscanf succesfully extracted one element.
* Any other return value means error. Ignore it.
*/
if (sscanf(s, "%d", &val) == 1) {
intArray[*len] = (uint8_t) val;
*len += 1;
}
s = strpbrk(s, ",");
if (s)
s++;
}
return CDF_STATUS_SUCCESS;
}
/**
* hdd_update_config_dat() - scan the string and convery to u8 array
* @str: the pointer to the string
* @intArray: the pointer of buffer to store the u8 value
* @len: size of the buffer
*
* Return: CDF_STATUS_SUCCESS if the configuration could be updated corectly,
* otherwise CDF_STATUS_E_INVAL
*/
bool hdd_update_config_dat(hdd_context_t *pHddCtx)
{
bool fStatus = true;
uint32_t val;
uint16_t val16;
struct hdd_config *pConfig = pHddCtx->config;
tSirMacHTCapabilityInfo *phtCapInfo;
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_20MHZ,
pConfig->ShortGI20MhzEnable) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_20MHZ to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FIXED_RATE, pConfig->TxRate)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_FIXED_RATE to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_MAX_RX_AMPDU_FACTOR,
pConfig->MaxRxAmpduFactor) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_HT_AMPDU_PARAMS_MAX_RX_AMPDU_FACTOR to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_SHORT_PREAMBLE,
pConfig->fIsShortPreamble) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_SHORT_PREAMBLE to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME,
pConfig->nPassiveMinChnTime)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PASSIVE_MINIMUM_CHANNEL_TIME"
" to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME,
pConfig->nPassiveMaxChnTime)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PASSIVE_MAXIMUM_CHANNEL_TIME"
" to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_BEACON_INTERVAL,
pConfig->nBeaconInterval) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_BEACON_INTERVAL to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_MAX_PS_POLL,
pConfig->nMaxPsPoll) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_MAX_PS_POLL to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_CURRENT_RX_ANTENNA,
pConfig->nRxAnt) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_CURRENT_RX_ANTENNA to CFG");
}
if (sme_cfg_set_int (pHddCtx->hHal, WNI_CFG_LOW_GAIN_OVERRIDE,
pConfig->fIsLowGainOverride) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_LOW_GAIN_OVERRIDE to HAL");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RSSI_FILTER_PERIOD,
pConfig->nRssiFilterPeriod) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RSSI_FILTER_PERIOD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_IGNORE_DTIM,
pConfig->fIgnoreDtim) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_IGNORE_DTIM to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_PS_ENABLE_HEART_BEAT,
pConfig->fEnableFwHeartBeatMonitoring)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PS_HEART_BEAT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_PS_ENABLE_BCN_FILTER,
pConfig->fEnableFwBeaconFiltering) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PS_BCN_FILTER to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_PS_ENABLE_RSSI_MONITOR,
pConfig->fEnableFwRssiMonitoring) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PS_RSSI_MONITOR to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT,
pConfig->nDataInactivityTimeout) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PS_DATA_INACTIVITY_TIMEOUT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_ENABLE_LTE_COEX,
pConfig->enableLTECoex) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_LTE_COEX to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE,
pConfig->nEnableListenMode) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_PHY_AGC_LISTEN_MODE to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_AP_KEEP_ALIVE_TIMEOUT,
pConfig->apKeepAlivePeriod) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_AP_KEEP_ALIVE_TIMEOUT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_GO_KEEP_ALIVE_TIMEOUT,
pConfig->goKeepAlivePeriod) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_GO_KEEP_ALIVE_TIMEOUT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_AP_LINK_MONITOR_TIMEOUT,
pConfig->apLinkMonitorPeriod) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_AP_LINK_MONITOR_TIMEOUT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_GO_LINK_MONITOR_TIMEOUT,
pConfig->goLinkMonitorPeriod) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_GO_LINK_MONITOR_TIMEOUT to CFG");
}
#if defined WLAN_FEATURE_VOWIFI
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RRM_ENABLED, pConfig->fRrmEnable)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RRM_ENABLE to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RRM_OPERATING_CHAN_MAX,
pConfig->nInChanMeasMaxDuration) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RRM_OPERATING_CHAN_MAX to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RRM_NON_OPERATING_CHAN_MAX,
pConfig->nOutChanMeasMaxDuration) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RRM_OUT_CHAN_MAX to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_MCAST_BCAST_FILTER_SETTING,
pConfig->mcastBcastFilterSetting) == CDF_STATUS_E_FAILURE)
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_MCAST_BCAST_FILTER_SETTING to CFG");
#endif
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_SINGLE_TID_RC,
pConfig->bSingleTidRc) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_SINGLE_TID_RC to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_TELE_BCN_WAKEUP_EN,
pConfig->teleBcnWakeupEn) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TELE_BCN_WAKEUP_EN to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI,
pConfig->nTeleBcnTransListenInterval) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TELE_BCN_TRANS_LI to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI,
pConfig->nTeleBcnMaxListenInterval) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TELE_BCN_MAX_LI to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS,
pConfig->nTeleBcnTransLiNumIdleBeacons) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TELE_BCN_TRANS_LI_IDLE_BCNS to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS,
pConfig->nTeleBcnMaxLiNumIdleBeacons) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TELE_BCN_MAX_LI_IDLE_BCNS to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RF_SETTLING_TIME_CLK,
pConfig->rfSettlingTimeUs) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RF_SETTLING_TIME_CLK to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD,
pConfig->infraStaKeepAlivePeriod) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_INFRA_STA_KEEP_ALIVE_PERIOD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_DYNAMIC_PS_POLL_VALUE,
pConfig->dynamicPsPollValue) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DYNAMIC_PS_POLL_VALUE to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_PS_NULLDATA_AP_RESP_TIMEOUT,
pConfig->nNullDataApRespTimeout) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_PS_NULLDATA_DELAY_TIMEOUT to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
pConfig->apDataAvailPollPeriodInMs) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_FRAGMENTATION_THRESHOLD,
pConfig->FragmentationThreshold) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_FRAGMENTATION_THRESHOLD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_RTS_THRESHOLD,
pConfig->RTSThreshold) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_RTS_THRESHOLD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_11D_ENABLED,
pConfig->Is11dSupportEnabled) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_11D_ENABLED to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_DFS_MASTER_ENABLED,
pConfig->enableDFSMasterCap) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Failure: Could not set value for WNI_CFG_DFS_MASTER_ENABLED");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_ENABLE_TXBF_20MHZ,
pConfig->enableTxBFin20MHz) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not set value for WNI_CFG_VHT_ENABLE_TXBF_20MHZ");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_HEART_BEAT_THRESHOLD,
pConfig->HeartbeatThresh24) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_HEART_BEAT_THRESHOLD to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD,
pConfig->apDataAvailPollPeriodInMs) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_AP_DATA_AVAIL_POLL_PERIOD to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_CLOSE_LOOP,
pConfig->enableCloseLoop) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_CLOSE_LOOP to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TX_PWR_CTRL_ENABLE,
pConfig->enableAutomaticTxPowerControl)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TX_PWR_CTRL_ENABLE to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_SHORT_GI_40MHZ,
pConfig->ShortGI40MhzEnable) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_SHORT_GI_40MHZ to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_ENABLE_MC_ADDR_LIST,
pConfig->fEnableMCAddrList) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_MC_ADDR_LIST to CFG");
}
/* 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)) {
uint32_t temp = 0;
sme_cfg_get_int(pHddCtx->hHal,
WNI_CFG_VHT_BASIC_MCS_SET, &temp);
temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
if (pConfig->enable2x2)
temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_BASIC_MCS_SET, temp) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
}
sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
&temp);
temp = (temp & 0xFFFC) | pConfig->vhtRxMCS;
if (pConfig->enable2x2)
temp = (temp & 0xFFF3) | (pConfig->vhtRxMCS2x2 << 2);
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_RX_MCS_MAP, temp)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
}
sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP, &temp);
temp = (temp & 0xFFFC) | pConfig->vhtTxMCS;
if (pConfig->enable2x2)
temp = (temp & 0xFFF3) | (pConfig->vhtTxMCS2x2 << 2);
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_INFO_HIGH,
"vhtRxMCS2x2 - %x temp - %u enable2x2 %d",
pConfig->vhtRxMCS2x2, temp,
pConfig->enable2x2);
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
temp) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
}
/* Currently shortGI40Mhz is used for shortGI80Mhz */
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_VHT_SHORT_GI_80MHZ,
pConfig->ShortGI40MhzEnable) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass WNI_VHT_SHORT_GI_80MHZ to CFG");
}
/* Hardware is capable of doing
* 128K AMPDU in 11AC mode */
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_AMPDU_LEN_EXPONENT,
pConfig->fVhtAmpduLenExponent) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_AMPDU_LEN_EXPONENT to CFG");
}
/* Change MU Bformee only when TxBF is enabled */
if (pConfig->enableTxBF) {
sme_cfg_get_int(pHddCtx->hHal,
WNI_CFG_VHT_MU_BEAMFORMEE_CAP, &temp);
if (temp != pConfig->enableMuBformee) {
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_MU_BEAMFORMEE_CAP,
pConfig->enableMuBformee
) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_MU_BEAMFORMEE_CAP to CFG");
}
}
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_MAX_MPDU_LENGTH,
pConfig->vhtMpduLen) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_MAX_MPDU_LENGTH to CFG");
}
if (pConfig->enable2x2 && pConfig->enable_su_tx_bformer) {
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_SU_BEAMFORMER_CAP,
pConfig->enable_su_tx_bformer) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hdd_err("set SU_BEAMFORMER_CAP to CFG failed");
}
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_VHT_NUM_SOUNDING_DIMENSIONS,
NUM_OF_SOUNDING_DIMENSIONS) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hdd_err("failed to set NUM_OF_SOUNDING_DIM");
}
}
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_RX_STBC,
pConfig->enableRxSTBC) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_HT_RX_STBC to CFG");
}
sme_cfg_get_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, &val);
val16 = (uint16_t) val;
phtCapInfo = (tSirMacHTCapabilityInfo *) &val16;
phtCapInfo->rxSTBC = pConfig->enableRxSTBC;
phtCapInfo->advCodingCap = pConfig->enableRxLDPC;
val = val16;
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_HT_CAP_INFO, val)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_RXSTBC,
pConfig->enableRxSTBC) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RXSTBC to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_TXSTBC,
pConfig->enableTxSTBC) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TXSTBC to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_VHT_LDPC_CODING_CAP,
pConfig->enableRxLDPC) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_LDPC_CODING_CAP to CFG");
}
#ifdef WLAN_SOFTAP_VSTA_FEATURE
if (pConfig->fEnableVSTASupport) {
sme_cfg_get_int(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 = pConfig->maxNumberOfPeers;
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ASSOC_STA_LIMIT, val) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ASSOC_STA_LIMIT to CFG");
}
#endif
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_LPWR_IMG_TRANSITION,
pConfig->enableLpwrImgTransition)
== CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_LPWR_IMG_TRANSITION to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED,
pConfig->enableMCCAdaptiveScheduler) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_MCC_ADAPTIVE_SCHED to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP,
pConfig->disableLDPCWithTxbfAP) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DISABLE_LDPC_WITH_TXBF_AP to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ZERO,
pConfig->retryLimitZero) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ZERO to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_ONE,
pConfig->retryLimitOne) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_ONE to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_DYNAMIC_THRESHOLD_TWO,
pConfig->retryLimitTwo) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DYNAMIC_THRESHOLD_TWO to CFG");
}
if (sme_cfg_set_int
(pHddCtx->hHal, WNI_CFG_MAX_MEDIUM_TIME,
pConfig->cfgMaxMediumTime) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_MAX_MEDIUM_TIME to CFG");
}
#ifdef FEATURE_WLAN_TDLS
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,
pConfig->fTDLSUapsdMask) == CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_BUF_STA_ENABLED,
pConfig->fEnableTDLSBufferSta) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_PUAPSD_INACT_TIME,
pConfig->fTDLSPuapsdInactivityTimer) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_PUAPSD_INACT_TIME to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_RX_FRAME_THRESHOLD,
pConfig->fTDLSRxFrameThreshold) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_RX_FRAME_THRESHOLD to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,
pConfig->fEnableTDLSOffChannel) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_BUF_STA_ENABLED to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_TDLS_WMM_MODE_ENABLED,
pConfig->fEnableTDLSWmmMode) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_TDLS_WMM_MODE_ENABLED to CFG");
}
#endif
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ENABLE_ADAPT_RX_DRAIN,
pConfig->fEnableAdaptRxDrain) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ENABLE_ADAPT_RX_DRAIN to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_FLEX_CONNECT_POWER_FACTOR,
pConfig->flexConnectPowerFactor) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE, "Failure: Could not pass on "
"WNI_CFG_FLEX_CONNECT_POWER_FACTOR to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_ANTENNA_DIVESITY,
pConfig->antennaDiversity) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_ANTENNA_DIVESITY to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_DEFAULT_RATE_INDEX_24GHZ,
pConfig->defaultRateIndex24Ghz) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DEFAULT_RATE_INDEX_24GHZ to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal,
WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
pConfig->debugP2pRemainOnChannel) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CFG");
}
#ifdef WLAN_FEATURE_11W
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
pConfig->pmfSaQueryMaxRetries) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_SA_QUERY_MAX_RETRIES to CFG");
}
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
pConfig->pmfSaQueryRetryInterval) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_SA_QUERY_RETRY_INTERVAL to CFG");
}
#endif
if (sme_cfg_set_int(pHddCtx->hHal, WNI_CFG_IBSS_ATIM_WIN_SIZE,
pConfig->ibssATIMWinSize) ==
CDF_STATUS_E_FAILURE) {
fStatus = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_IBSS_ATIM_WIN_SIZE to CFG");
}
return fStatus;
}
/**
* hdd_set_sme_config() -initializes the sme configuration parameters
*
* @pHddCtx: the pointer to hdd context
*
* Return: CDF_STATUS_SUCCESS if configuration is correctly applied,
* otherwise the appropriate CDF_STATUS would be returned
*/
CDF_STATUS hdd_set_sme_config(hdd_context_t *pHddCtx)
{
CDF_STATUS status = CDF_STATUS_SUCCESS;
tSmeConfigParams *smeConfig;
struct hdd_config *pConfig = pHddCtx->config;
smeConfig = cdf_mem_malloc(sizeof(*smeConfig));
if (NULL == smeConfig) {
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_TRACE_LEVEL_ERROR,
"%s: unable to allocate smeConfig", __func__);
return CDF_STATUS_E_NOMEM;
}
cdf_mem_zero(smeConfig, sizeof(*smeConfig));
CDF_TRACE(CDF_MODULE_ID_HDD, CDF_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.fSupplicantCountryCodeHasPriority =
pConfig->fSupplicantCountryCodeHasPriority;
smeConfig->csrConfig.bCatRssiOffset = pConfig->nRssiCatGap;
smeConfig->csrConfig.vccRssiThreshold = pConfig->nVccRssiTrigger;
smeConfig->csrConfig.vccUlMacLossThreshold =
pConfig->nVccUlMacLossThreshold;
smeConfig->csrConfig.nRoamingTime = pConfig->nRoamingTime;
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;
#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.nNumStaChanCombinedConc =
pConfig->nNumStaChanCombinedConc;
smeConfig->csrConfig.nNumP2PChanCombinedConc =
pConfig->nNumP2PChanCombinedConc;
#endif
smeConfig->csrConfig.Is11eSupportEnabled = pConfig->b80211eIsEnabled;
smeConfig->csrConfig.WMMSupportMode = pConfig->WmmMode;
#if defined WLAN_FEATURE_VOWIFI
smeConfig->rrmConfig.rrmEnabled = pConfig->fRrmEnable;
smeConfig->rrmConfig.maxRandnInterval = pConfig->nRrmRandnIntvl;
#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.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.eBand = pConfig->nBandCapability;
smeConfig->csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
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 (CDF_SAP_MODE != hdd_get_conparam())
smeConfig->csrConfig.Csr11dinfo.Channels.numChannels = 0;
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.isWESModeEnabled = pConfig->isWESModeEnabled;
#endif
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;
}
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
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;
#endif
smeConfig->csrConfig.isAmsduSupportInAMPDU =
pConfig->isAmsduSupportInAMPDU;
smeConfig->csrConfig.nSelect5GHzMargin = pConfig->nSelect5GHzMargin;
smeConfig->csrConfig.isCoalesingInIBSSAllowed =
pHddCtx->config->isCoalesingInIBSSAllowed;
smeConfig->csrConfig.ignore_peer_erp_info =
pConfig->ignore_peer_erp_info;
/* update SSR config */
sme_update_enable_ssr((tHalHandle) (pHddCtx->hHal),
pHddCtx->config->enableSSR);
#ifdef FEATURE_WLAN_SCAN_PNO
/* Update PNO offoad status */
smeConfig->pnoOffload = pHddCtx->config->PnoOffload;
#endif
/* Update maximum interfaces information */
smeConfig->max_intf_count = pHddCtx->max_intf_count;
smeConfig->fEnableDebugLog = pHddCtx->config->gEnableDebugLog;
smeConfig->enable5gEBT = pHddCtx->config->enable5gEBT;
smeConfig->enableSelfRecovery = pHddCtx->config->enableSelfRecovery;
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
smeConfig->csrConfig.isRoamOffloadEnabled =
pHddCtx->config->isRoamOffloadEnabled;
#endif
smeConfig->csrConfig.conc_custom_rule1 =
pHddCtx->config->conc_custom_rule1;
smeConfig->csrConfig.conc_custom_rule2 =
pHddCtx->config->conc_custom_rule2;
smeConfig->csrConfig.is_sta_connection_in_5gz_enabled =
pHddCtx->config->is_sta_connection_in_5gz_enabled;
smeConfig->f_sta_miracast_mcc_rest_time_val =
pHddCtx->config->sta_miracast_mcc_rest_time_val;
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
smeConfig->sap_channel_avoidance =
pHddCtx->config->sap_channel_avoidance;
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
smeConfig->f_prefer_non_dfs_on_radar =
pHddCtx->config->prefer_non_dfs_on_radar;
smeConfig->is_ps_enabled = pHddCtx->config->is_ps_enabled;
hdd_set_fine_time_meas_cap(pHddCtx, smeConfig);
cds_set_multicast_logging(pHddCtx->config->multicast_host_fw_msgs);
smeConfig->csrConfig.sendDeauthBeforeCon = pConfig->sendDeauthBeforeCon;
smeConfig->policy_manager_enabled =
pHddCtx->config->policy_manager_enabled;
smeConfig->csrConfig.max_scan_count =
pHddCtx->config->max_scan_count;
/* Update 802.11p config */
smeConfig->csrConfig.enable_dot11p =
(pHddCtx->config->dot11p_mode != WLAN_HDD_11P_DISABLED);
smeConfig->dual_mac_feature_disable =
pHddCtx->config->dual_mac_feature_disable;
status = sme_update_config(pHddCtx->hHal, smeConfig);
if (!CDF_IS_STATUS_SUCCESS(status)) {
hddLog(LOGE, "sme_update_config() return failure %d",
status);
}
cdf_mem_free(smeConfig);
return status;
}
/**
* hdd_execute_global_config_command() - execute the global config command
* @pHddCtx: the pointer to hdd context
* @command: the command to run
*
* Return: the CDF_STATUS return from hdd_execute_config_command
*/
CDF_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),
(uint8_t *) pHddCtx->config,
pHddCtx, command);
}
/**
* hdd_cfg_get_global_config() - get the configuration table
* @pHddCtx: pointer to hdd context
* @pBuf: buffer to store the configuration
* @buflen: size of the buffer
*
* Return: CDF_STATUS_SUCCESS if the configuration and buffer size can carry
* the content, otherwise CDF_STATUS_E_RESOURCES
*/
CDF_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),
(uint8_t *) pHddCtx->config, pHddCtx, pBuf,
buflen);
}
/**
* hdd_is_okc_mode_enabled() - returns whether OKC mode is enabled or not
* @pHddCtx: the pointer to hdd context
*
* Return: true if OKC is enabled, otherwise false
*/
bool hdd_is_okc_mode_enabled(hdd_context_t *pHddCtx)
{
if (NULL == pHddCtx) {
hddLog(CDF_TRACE_LEVEL_FATAL, "%s: pHddCtx is NULL", __func__);
return -EINVAL;
}
#ifdef FEATURE_WLAN_OKC
return pHddCtx->config->isOkcIniFeatureEnabled;
#else
return false;
#endif
}
/**
* hdd_update_nss() - Update the number of spatial streams supported.
* Ensure that nss is either 1 or 2 before calling this.
*
* @hdd_ctx: the pointer to hdd context
* @nss: the number of spatial streams to be updated
*
* This function is used to modify the number of spatial streams
* supported when not in connected state.
*
* Return: CDF_STATUS_SUCCESS if nss is correctly updated,
* otherwise CDF_STATUS_E_FAILURE would be returned
*/
CDF_STATUS hdd_update_nss(hdd_context_t *hdd_ctx, uint8_t nss)
{
struct hdd_config *hdd_config = hdd_ctx->config;
uint32_t temp = 0;
uint32_t rx_supp_data_rate, tx_supp_data_rate;
bool 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 CDF_STATUS_E_INVAL;
}
enable2x2 = (nss == 1) ? 0 : 1;
if (hdd_config->enable2x2 == enable2x2) {
hddLog(LOGE, "NSS same as requested");
return CDF_STATUS_SUCCESS;
}
if (true == sme_is_any_session_in_connected_state(hdd_ctx->hHal)) {
hddLog(LOGE, "Connected sessions present, Do not change NSS");
return CDF_STATUS_E_INVAL;
}
hdd_config->enable2x2 = enable2x2;
if (!hdd_config->enable2x2) {
/* 1x1 */
rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_1_1;
} else {
/* 2x2 */
rx_supp_data_rate = HDD_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
tx_supp_data_rate = HDD_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE_2_2;
}
/* Update Rx Highest Long GI data Rate */
if (sme_cfg_set_int(hdd_ctx->hHal,
WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE,
rx_supp_data_rate) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_RX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
}
/* Update Tx Highest Long GI data Rate */
if (sme_cfg_set_int(hdd_ctx->hHal,
WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE,
tx_supp_data_rate) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_TX_HIGHEST_SUPPORTED_DATA_RATE to CFG");
}
sme_cfg_get_int(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 (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_HT_CAP_INFO,
temp) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE, "Could not pass on WNI_CFG_HT_CAP_INFO to CFG");
}
sme_cfg_get_int(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 (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_BASIC_MCS_SET,
temp) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE,
"Could not pass on WNI_CFG_VHT_BASIC_MCS_SET to CFG");
}
sme_cfg_get_int(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 (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_RX_MCS_MAP,
temp) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE, "Could not pass on WNI_CFG_VHT_RX_MCS_MAP to CFG");
}
sme_cfg_get_int(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 (sme_cfg_set_int(hdd_ctx->hHal, WNI_CFG_VHT_TX_MCS_MAP,
temp) == CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE, "Could not pass on WNI_CFG_VHT_TX_MCS_MAP to CFG");
}
#define WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES 0xff
val = SIZE_OF_SUPPORTED_MCS_SET;
sme_cfg_get_str(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 (sme_cfg_set_str(hdd_ctx->hHal, WNI_CFG_SUPPORTED_MCS_SET,
mcs_set,
SIZE_OF_SUPPORTED_MCS_SET) ==
CDF_STATUS_E_FAILURE) {
status = false;
hddLog(LOGE, "Could not pass on MCS SET to CFG");
}
#undef WLAN_HDD_RX_MCS_ALL_NSTREAM_RATES
if (CDF_STATUS_SUCCESS != sme_update_nss(hdd_ctx->hHal, nss))
status = false;
return (status == false) ? CDF_STATUS_E_FAILURE : CDF_STATUS_SUCCESS;
}