/*
 * Copyright (c) 2011-2014 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.
 */

/*
 * DO NOT EDIT - This file is generated automatically
 */

/*
 * IMPORTANT:  This file is for system that supports STA mode ONLY.
 */
#include "cfgPriv.h"

unsigned char *gCfgParamName[] = {
    (unsigned char *)"STA_ID",
    (unsigned char *)"CF_POLLABLE",
    (unsigned char *)"CFP_PERIOD",
    (unsigned char *)"CFP_MAX_DURATION",
    (unsigned char *)"SSID",
    (unsigned char *)"BEACON_INTERVAL",
    (unsigned char *)"DTIM_PERIOD",
    (unsigned char *)"WEP_KEY_LENGTH",
    (unsigned char *)"WEP_DEFAULT_KEY_1",
    (unsigned char *)"WEP_DEFAULT_KEY_2",
    (unsigned char *)"WEP_DEFAULT_KEY_3",
    (unsigned char *)"WEP_DEFAULT_KEY_4",
    (unsigned char *)"WEP_DEFAULT_KEYID",
    (unsigned char *)"EXCLUDE_UNENCRYPTED",
    (unsigned char *)"RTS_THRESHOLD",
    (unsigned char *)"SHORT_RETRY_LIMIT",
    (unsigned char *)"LONG_RETRY_LIMIT",
    (unsigned char *)"FRAGMENTATION_THRESHOLD",
    (unsigned char *)"ACTIVE_MINIMUM_CHANNEL_TIME",
    (unsigned char *)"ACTIVE_MAXIMUM_CHANNEL_TIME",
    (unsigned char *)"PASSIVE_MINIMUM_CHANNEL_TIME",
    (unsigned char *)"PASSIVE_MAXIMUM_CHANNEL_TIME",
    (unsigned char *)"JOIN_FAILURE_TIMEOUT",
    (unsigned char *)"AUTHENTICATE_FAILURE_TIMEOUT",
    (unsigned char *)"AUTHENTICATE_RSP_TIMEOUT",
    (unsigned char *)"ASSOCIATION_FAILURE_TIMEOUT",
    (unsigned char *)"REASSOCIATION_FAILURE_TIMEOUT",
    (unsigned char *)"RA_PERIODICITY_TIMEOUT_IN_PS",
    (unsigned char *)"PS_ENABLE_BCN_FILTER",
    (unsigned char *)"PS_ENABLE_HEART_BEAT",
    (unsigned char *)"PS_ENABLE_RSSI_MONITOR",
    (unsigned char *)"PS_DATA_INACTIVITY_TIMEOUT",
    (unsigned char *)"RF_SETTLING_TIME_CLK",
    (unsigned char *)"SUPPORTED_RATES_11B",
    (unsigned char *)"SUPPORTED_RATES_11A",
    (unsigned char *)"PHY_MODE",
    (unsigned char *)"DOT11_MODE",
    (unsigned char *)"OPERATIONAL_RATE_SET",
    (unsigned char *)"EXTENDED_OPERATIONAL_RATE_SET",
    (unsigned char *)"PROPRIETARY_OPERATIONAL_RATE_SET",
    (unsigned char *)"BSSID",
    (unsigned char *)"LISTEN_INTERVAL",
    (unsigned char *)"VALID_CHANNEL_LIST",
    (unsigned char *)"CURRENT_CHANNEL",
    (unsigned char *)"DEFAULT_RATE_INDEX_5GHZ",
    (unsigned char *)"DEFAULT_RATE_INDEX_24GHZ",
    (unsigned char *)"RATE_ADAPTATION_TYPE",
    (unsigned char *)"FIXED_RATE",
    (unsigned char *)"FIXED_RATE_MULTICAST_24GHZ",
    (unsigned char *)"FIXED_RATE_MULTICAST_5GHZ",
    (unsigned char *)"RETRYRATE_POLICY",
    (unsigned char *)"RETRYRATE_SECONDARY",
    (unsigned char *)"RETRYRATE_TERTIARY",
    (unsigned char *)"APSD_ENABLED",
    (unsigned char *)"SHARED_KEY_AUTH_ENABLE",
    (unsigned char *)"OPEN_SYSTEM_AUTH_ENABLE",
    (unsigned char *)"AUTHENTICATION_TYPE",
    (unsigned char *)"CF_POLL_REQUEST",
    (unsigned char *)"PRIVACY_ENABLED",
    (unsigned char *)"SHORT_PREAMBLE",
    (unsigned char *)"SHORT_SLOT_TIME",
    (unsigned char *)"ACCEPT_SHORT_SLOT_ASSOC_ONLY",
    (unsigned char *)"QOS_ENABLED",
    (unsigned char *)"HCF_ENABLED",
    (unsigned char *)"RSN_ENABLED",
    (unsigned char *)"BACKGROUND_SCAN_PERIOD",
    (unsigned char *)"MAX_NUM_PRE_AUTH",
    (unsigned char *)"PREAUTH_CLNUP_TIMEOUT",
    (unsigned char *)"RELEASE_AID_TIMEOUT",
    (unsigned char *)"HEART_BEAT_THRESHOLD",
    (unsigned char *)"PROBE_AFTER_HB_FAIL_TIMEOUT",
    (unsigned char *)"MANUFACTURER_OUI",
    (unsigned char *)"MANUFACTURER_NAME",
    (unsigned char *)"MODEL_NUMBER",
    (unsigned char *)"MODEL_NAME",
    (unsigned char *)"MANUFACTURER_PRODUCT_NAME",
    (unsigned char *)"MANUFACTURER_PRODUCT_VERSION",
    (unsigned char *)"11D_ENABLED",
    (unsigned char *)"MAX_TX_POWER_2_4",
    (unsigned char *)"MAX_TX_POWER_5",
    (unsigned char *)"NETWORK_DENSITY",
    (unsigned char *)"ADAPTIVE_THRESHOLD_ALGORITHM",
    (unsigned char *)"CURRENT_TX_ANTENNA",
    (unsigned char *)"CURRENT_RX_ANTENNA",
    (unsigned char *)"CURRENT_TX_POWER_LEVEL",
    (unsigned char *)"POWER_STATE_PER_CHAIN",
    (unsigned char *)"NEW_BSS_FOUND_IND",
    (unsigned char *)"PROPRIETARY_ANI_FEATURES_ENABLED",
    (unsigned char *)"PROPRIETARY_RATES_ENABLED",
    (unsigned char *)"AP_NODE_NAME",
    (unsigned char *)"COUNTRY_CODE",
    (unsigned char *)"11H_ENABLED",
    (unsigned char *)"WT_CNF_TIMEOUT",
    (unsigned char *)"KEEPALIVE_TIMEOUT",
    (unsigned char *)"PROXIMITY",
    (unsigned char *)"LOG_LEVEL",
    (unsigned char *)"OLBC_DETECT_TIMEOUT",
    (unsigned char *)"PROTECTION_ENABLED",
    (unsigned char *)"11G_PROTECTION_ALWAYS",
    (unsigned char *)"FORCE_POLICY_PROTECTION",
    (unsigned char *)"11G_SHORT_PREAMBLE_ENABLED",
    (unsigned char *)"11G_SHORT_SLOT_TIME_ENABLED",
    (unsigned char *)"CAL_PERIOD",
    (unsigned char *)"STATS_PERIOD",
    (unsigned char *)"CAL_CONTROL",
    (unsigned char *)"11G_ONLY_POLICY",
    (unsigned char *)"PACKET_CLASSIFICATION",
    (unsigned char *)"WME_ENABLED",
    (unsigned char *)"ADDTS_RSP_TIMEOUT",
    (unsigned char *)"MAX_SP_LENGTH",
    (unsigned char *)"KEEP_ALIVE_STA_LIMIT_THRESHOLD",
    (unsigned char *)"SEND_SINGLE_SSID_ALWAYS",
    (unsigned char *)"WSM_ENABLED",
    (unsigned char *)"PROP_CAPABILITY",
    (unsigned char *)"EDCA_PROFILE",
    (unsigned char *)"EDCA_ANI_ACBK_LOCAL",
    (unsigned char *)"EDCA_ANI_ACBE_LOCAL",
    (unsigned char *)"EDCA_ANI_ACVI_LOCAL",
    (unsigned char *)"EDCA_ANI_ACVO_LOCAL",
    (unsigned char *)"EDCA_ANI_ACBK",
    (unsigned char *)"EDCA_ANI_ACBE",
    (unsigned char *)"EDCA_ANI_ACVI",
    (unsigned char *)"EDCA_ANI_ACVO",
    (unsigned char *)"EDCA_WME_ACBK_LOCAL",
    (unsigned char *)"EDCA_WME_ACBE_LOCAL",
    (unsigned char *)"EDCA_WME_ACVI_LOCAL",
    (unsigned char *)"EDCA_WME_ACVO_LOCAL",
    (unsigned char *)"EDCA_WME_ACBK",
    (unsigned char *)"EDCA_WME_ACBE",
    (unsigned char *)"EDCA_WME_ACVI",
    (unsigned char *)"EDCA_WME_ACVO",
    (unsigned char *)"EDCA_TIT_DEMO_ACBK_LOCAL",
    (unsigned char *)"EDCA_TIT_DEMO_ACBE_LOCAL",
    (unsigned char *)"EDCA_TIT_DEMO_ACVI_LOCAL",
    (unsigned char *)"EDCA_TIT_DEMO_ACVO_LOCAL",
    (unsigned char *)"EDCA_TIT_DEMO_ACBK",
    (unsigned char *)"EDCA_TIT_DEMO_ACBE",
    (unsigned char *)"EDCA_TIT_DEMO_ACVI",
    (unsigned char *)"EDCA_TIT_DEMO_ACVO",
    (unsigned char *)"RDET_FLAG",
    (unsigned char *)"RADAR_CHANNEL_LIST",
    (unsigned char *)"LOCAL_POWER_CONSTRAINT",
    (unsigned char *)"ADMIT_POLICY",
    (unsigned char *)"ADMIT_BWFACTOR",
    (unsigned char *)"MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE",
    (unsigned char *)"CHANNEL_BONDING_MODE",
    (unsigned char *)"CB_SECONDARY_CHANNEL_STATE",
    (unsigned char *)"DYNAMIC_THRESHOLD_ZERO",
    (unsigned char *)"DYNAMIC_THRESHOLD_ONE",
    (unsigned char *)"DYNAMIC_THRESHOLD_TWO",
    (unsigned char *)"TRIG_STA_BK_SCAN",
    (unsigned char *)"DYNAMIC_PROFILE_SWITCHING",
    (unsigned char *)"SCAN_CONTROL_LIST",
    (unsigned char *)"MIMO_ENABLED",
    (unsigned char *)"BLOCK_ACK_ENABLED",
    (unsigned char *)"BA_ACTIVITY_CHECK_TIMEOUT",
    (unsigned char *)"HT_RX_STBC",
    (unsigned char *)"HT_CAP_INFO",
    (unsigned char *)"HT_AMPDU_PARAMS",
    (unsigned char *)"SUPPORTED_MCS_SET",
    (unsigned char *)"EXT_HT_CAP_INFO",
    (unsigned char *)"TX_BF_CAP",
    (unsigned char *)"AS_CAP",
    (unsigned char *)"HT_INFO_FIELD1",
    (unsigned char *)"HT_INFO_FIELD2",
    (unsigned char *)"HT_INFO_FIELD3",
    (unsigned char *)"BASIC_MCS_SET",
    (unsigned char *)"CURRENT_MCS_SET",
    (unsigned char *)"GREENFIELD_CAPABILITY",
    (unsigned char *)"VHT_MAX_MPDU_LENGTH",
    (unsigned char *)"VHT_SUPPORTED_CHAN_WIDTH_SET",
    (unsigned char *)"VHT_LDPC_CODING_CAP",
    (unsigned char *)"VHT_SHORT_GI_80MHZ",
    (unsigned char *)"VHT_SHORT_GI_160_AND_80_PLUS_80MHZ",
    (unsigned char *)"VHT_TXSTBC",
    (unsigned char *)"VHT_RXSTBC",
    (unsigned char *)"VHT_SU_BEAMFORMER_CAP",
    (unsigned char *)"VHT_SU_BEAMFORMEE_CAP",
    (unsigned char *)"VHT_CSN_BEAMFORMEE_ANT_SUPPORTED",
    (unsigned char *)"VHT_NUM_SOUNDING_DIMENSIONS",
    (unsigned char *)"VHT_MU_BEAMFORMER_CAP",
    (unsigned char *)"VHT_MU_BEAMFORMEE_CAP",
    (unsigned char *)"VHT_TXOP_PS",
    (unsigned char *)"VHT_HTC_VHTC_CAP",
    (unsigned char *)"VHT_AMPDU_LEN_EXPONENT",
    (unsigned char *)"VHT_LINK_ADAPTATION_CAP",
    (unsigned char *)"VHT_RX_ANT_PATTERN",
    (unsigned char *)"VHT_TX_ANT_PATTERN",
    (unsigned char *)"VHT_RX_MCS_MAP",
    (unsigned char *)"VHT_TX_MCS_MAP",
    (unsigned char *)"VHT_RX_HIGHEST_SUPPORTED_DATA_RATE",
    (unsigned char *)"VHT_TX_HIGHEST_SUPPORTED_DATA_RATE",
    (unsigned char *)"VHT_CHANNEL_WIDTH",
    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT1",
    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT2",
    (unsigned char *)"VHT_BASIC_MCS_SET",
    (unsigned char *)"VHT_MU_MIMO_CAP_STA_COUNT",
    (unsigned char *)"VHT_SS_UNDER_UTIL",
    (unsigned char *)"VHT_40MHZ_UTILIZATION",
    (unsigned char *)"VHT_80MHZ_UTILIZATION",
    (unsigned char *)"VHT_160MHZ_UTILIZATION",
    (unsigned char *)"MAX_AMSDU_LENGTH",
    (unsigned char *)"MPDU_DENSITY",
    (unsigned char *)"NUM_BUFF_ADVERT",
    (unsigned char *)"MAX_RX_AMPDU_FACTOR",
    (unsigned char *)"SHORT_GI_20MHZ",
    (unsigned char *)"SHORT_GI_40MHZ",
    (unsigned char *)"RIFS_ENABLED",
    (unsigned char *)"MAX_PS_POLL",
    (unsigned char *)"NUM_BEACON_PER_RSSI_AVERAGE",
    (unsigned char *)"RSSI_FILTER_PERIOD",
    (unsigned char *)"MIN_RSSI_THRESHOLD",
    (unsigned char *)"NTH_BEACON_FILTER",
    (unsigned char *)"BROADCAST_FRAME_FILTER_ENABLE",
    (unsigned char *)"SCAN_IN_POWERSAVE",
    (unsigned char *)"IGNORE_DTIM",
    (unsigned char *)"WOWLAN_UCAST_PATTERN_FILTER_ENABLE",
    (unsigned char *)"WOWLAN_CHANNEL_SWITCH_ENABLE",
    (unsigned char *)"WOWLAN_DEAUTH_ENABLE",
    (unsigned char *)"WOWLAN_DISASSOC_ENABLE",
    (unsigned char *)"WOWLAN_MAX_MISSED_BEACON",
    (unsigned char *)"WOWLAN_MAX_SLEEP_PERIOD",
    (unsigned char *)"BA_TIMEOUT",
    (unsigned char *)"BA_THRESHOLD_HIGH",
    (unsigned char *)"MAX_BA_BUFFERS",
    (unsigned char *)"MAX_BA_SESSIONS",
    (unsigned char *)"BA_AUTO_SETUP",
    (unsigned char *)"ADDBA_REQ_DECLINE",
    (unsigned char *)"BG_SCAN_CHANNEL_LIST",
    (unsigned char *)"MAX_MEDIUM_TIME",
    (unsigned char *)"MAX_MPDUS_IN_AMPDU",
    (unsigned char *)"IBSS_AUTO_BSSID",
    (unsigned char *)"PROBE_REQ_ADDNIE_FLAG",
    (unsigned char *)"PROBE_REQ_ADDNIE_DATA",
    (unsigned char *)"PROBE_RSP_ADDNIE_FLAG",
    (unsigned char *)"PROBE_RSP_ADDNIE_DATA1",
    (unsigned char *)"PROBE_RSP_ADDNIE_DATA2",
    (unsigned char *)"PROBE_RSP_ADDNIE_DATA3",
    (unsigned char *)"ASSOC_RSP_ADDNIE_FLAG",
    (unsigned char *)"ASSOC_RSP_ADDNIE_DATA",
    (unsigned char *)"PROBE_REQ_ADDNP2PIE_FLAG",
    (unsigned char *)"PROBE_REQ_ADDNP2PIE_DATA",
    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_FLAG",
    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_DATA",
    (unsigned char *)"WPS_ENABLE",
    (unsigned char *)"WPS_STATE",
    (unsigned char *)"WPS_PROBE_REQ_FLAG",
    (unsigned char *)"WPS_VERSION",
    (unsigned char *)"WPS_REQUEST_TYPE",
    (unsigned char *)"WPS_CFG_METHOD",
    (unsigned char *)"WPS_UUID",
    (unsigned char *)"WPS_PRIMARY_DEVICE_CATEGORY",
    (unsigned char *)"WPS_PIMARY_DEVICE_OUI",
    (unsigned char *)"WPS_DEVICE_SUB_CATEGORY",
    (unsigned char *)"WPS_ASSOCIATION_STATE",
    (unsigned char *)"WPS_CONFIGURATION_ERROR",
    (unsigned char *)"WPS_DEVICE_PASSWORD_ID",
    (unsigned char *)"WPS_ASSOC_METHOD",
    (unsigned char *)"LOW_GAIN_OVERRIDE",
    (unsigned char *)"ENABLE_PHY_AGC_LISTEN_MODE",
    (unsigned char *)"RPE_POLLING_THRESHOLD",
    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC0_REG",
    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC1_REG",
    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC2_REG",
    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC3_REG",
    (unsigned char *)"NO_OF_ONCHIP_REORDER_SESSIONS",
    (unsigned char *)"SINGLE_TID_RC",
    (unsigned char *)"RRM_ENABLED",
    (unsigned char *)"RRM_OPERATING_CHAN_MAX",
    (unsigned char *)"RRM_NON_OPERATING_CHAN_MAX",
    (unsigned char *)"TX_PWR_CTRL_ENABLE",
    (unsigned char *)"MCAST_BCAST_FILTER_SETTING",
    (unsigned char *)"BTC_DHCP_BT_SLOTS_TO_BLOCK",
    (unsigned char *)"DYNAMIC_PS_POLL_VALUE",
    (unsigned char *)"PS_NULLDATA_AP_RESP_TIMEOUT",
    (unsigned char *)"TELE_BCN_WAKEUP_EN",
    (unsigned char *)"TELE_BCN_TRANS_LI",
    (unsigned char *)"TELE_BCN_TRANS_LI_IDLE_BCNS",
    (unsigned char *)"TELE_BCN_MAX_LI",
    (unsigned char *)"TELE_BCN_MAX_LI_IDLE_BCNS",
    (unsigned char *)"BTC_A2DP_DHCP_BT_SUB_INTERVALS",
    (unsigned char *)"INFRA_STA_KEEP_ALIVE_PERIOD",
    (unsigned char *)"ASSOC_STA_LIMIT",
    (unsigned char *)"SAP_CHANNEL_SELECT_START_CHANNEL",
    (unsigned char *)"SAP_CHANNEL_SELECT_END_CHANNEL",
    (unsigned char *)"SAP_CHANNEL_SELECT_OPERATING_BAND",
    (unsigned char *)"AP_DATA_AVAIL_POLL_PERIOD",
    (unsigned char *)"ENABLE_CLOSE_LOOP",
    (unsigned char *)"ENABLE_LTE_COEX",
    (unsigned char *)"AP_KEEP_ALIVE_TIMEOUT",
    (unsigned char *)"GO_KEEP_ALIVE_TIMEOUT",
    (unsigned char *)"ENABLE_MC_ADDR_LIST",
    (unsigned char *)"ENABLE_UC_FILTER",
    (unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
    (unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
    (unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
    (unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
    (unsigned char *)"TDLS_QOS_WMM_UAPSD_MASK",
    (unsigned char *)"TDLS_BUF_STA_ENABLED",
    (unsigned char *)"TDLS_PUAPSD_INACT_TIME",
    (unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
    (unsigned char *)"ENABLE_ADAPT_RX_DRAIN",
    (unsigned char *)"FLEX_CONNECT_POWER_FACTOR",
    (unsigned char *)"ANTENNA_DIVESITY",
    (unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
    (unsigned char *)"ATH_DISABLE",
    (unsigned char *)"BTC_ACTIVE_WLAN_LEN",
    (unsigned char *)"BTC_ACTIVE_BT_LEN",
    (unsigned char *)"BTC_SAP_ACTIVE_WLAN_LEN",
    (unsigned char *)"BTC_SAP_ACTIVE_BT_LEN",
    (unsigned char *)"RMC_ACTION_PERIOD_FREQUENCY",
    (unsigned char *)"ASD_PROBE_INTERVAL",
    (unsigned char *)"ASD_TRIGGER_THRESHOLD",
    (unsigned char *)"ASD_RTT_RSSI_HYST_THRESHOLD",
    (unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL",
    (unsigned char *)"BTC_CTS2S_DURING_SCO",
    (unsigned char *)"CHANNEL_BONDING_24G",
    (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_DWELL_TIME",
    (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_DWELL_TIME",
    (unsigned char *)"OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL",
    (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL",
    (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
    (unsigned char *)"OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR",
    (unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
    (unsigned char *)"TDLS_OFF_CHANNEL_ENABLED",
    (unsigned char *)"PMF_SA_QUERY_MAX_RETRIES",
    (unsigned char *)"PMF_SA_QUERY_RETRY_INTERVAL",
    (unsigned char *)"RA_FILTER_ENABLE",
    (unsigned char *)"RA_RATE_LIMIT_INTERVAL",
    (unsigned char *)"BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE",
    (unsigned char *)"BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE",
    (unsigned char *)"BTC_DYN_A2DP_TX_QUEUE_THOLD",
    (unsigned char *)"BTC_DYN_OPP_TX_QUEUE_THOLD",
    (unsigned char *)"TDLS_WMM_MODE_ENABLED",
};



