# This file allows user to override the factory
# defaults for the WLAN Driver

#############################################
# Power related configurations
#############################################
# Phy Mode (auto, b, g, n, etc)
# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only
# 7 = 11b only 8 = 11ac only.
gDot11Mode=0

#############################################
# STA related general configurations
#############################################
# UAPSD service interval for VO,VI, BE, BK traffic
InfraUapsdVoSrvIntv=0
InfraUapsdViSrvIntv=0
InfraUapsdBeSrvIntv=0
InfraUapsdBkSrvIntv=0

# Flag to allow STA send AddTspec even when ACM is Off
gAddTSWhenACMIsOff=1

#############################################
# SAP related configurations
#############################################
#Enable OBSS protection
gEnableApOBSSProt=1

# RTS threshold
RTSThreshold=1048576

# 802.11d support
g11dSupportEnabled=0

# DFS Master Capability
gEnableDFSMasterCap=0

gNeighborLookupThreshold=76

# Legacy (non-ESE, non-802.11r) Fast Roaming Support
# To enable, set FastRoamEnabled=1
# To disable, set FastRoamEnabled=0
FastRoamEnabled=1

# Check if the AP to which we are roaming is better than current AP in
# terms of RSSI.  Checking is disabled if set to Zero.Otherwise it will
# use this value as to how better the RSSI of the new/roamable AP should
# be for roaming
RoamRssiDiff=3

#Channel Bonding
gChannelBondingMode24GHz=0
gChannelBondingMode5GHz=1

# Enable DFS channel roam
# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE
gAllowDFSChannelRoam=1

# chain mask related params
#
# Set txchainmask and rxchainmask
# These parameters are used only if gEnable2x2 is 0
# Valid values are 1,2
# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0.
# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1.
gSetTxChainmask1x1=1
gSetRxChainmask1x1=1

# MCC to SCC Switch mode:
# 0-Disable
# 1-Enable
# 2-Force SCC if same band, with SAP restart
# 3-Force SCC if same band, without SAP restart by sending (E)CSA
# 4-Force SCC if same band (or) use SAP mandatory channel for DBS,
#   without SAP restart by sending (E)CSA
gWlanMccToSccSwitchMode = 3

#Allow STA+SAP SCC on DFS channel with master mode support disabled.
g_sta_sap_scc_on_dfs_chan = 0

# 1=enable tx STBC; 0=disable
gEnableTXSTBC=1

# 1=enable rx LDPC; 0=disable
gEnableRXLDPC=1

#Enable/Disable Tx beamformee in SAP mode
gEnableTxBFeeSAP=1

# Enable Tx beamforming in VHT20MHz
# Valid values are 0,1. If commented out, the default value is 0.
# 0=disable, 1=enable
gEnableTxBFin20MHz=1

# 802.11K support
gRrmEnable=1

#Enable Power Save offload
gEnablePowerSaveOffload=2

# Maximum Receive AMPDU size (VHT only. Valid values:
# 0->8k 1->16k 2->32k 3->64k 4->128k)
gVhtAmpduLenExponent=7

# Maximum MPDU length (VHT only. Valid values:
# 0->3895 octets, 1->7991 octets, 2->11454 octets)
gVhtMpduLen=2

# Report actual link speed (not max or scaled)
gReportMaxLinkSpeed=0

#############################################
# P2P related configurations
#############################################
#Enable or Disable p2p device address administered
isP2pDeviceAddrAdministrated=0

#Mac address provisioning
enable_mac_provision=1

#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1

#############################################
# Offload related configurations
#############################################

# controlling the following offload patterns
# through ini parameter. Default value is 1
# to disable set it to zero. ssdp = 0
# Setup multicast pattern for mDNS 224.0.0.251,
# SSDP 239.255.255.250 and LLMNR 224.0.0.252
ssdp=0

# Regulatory Setting; 0=STRICT; 1=CUSTOM
gRegulatoryChangeCountry=1

# Disable/Enable GreenAP
# 0 to disable, 1 to enable, default: 1
gEnableGreenAp=0

#Enable/Disable LPASS support
# 0 to disable, 1 to enable
gEnableLpassSupport=1

# Whether userspace country code setting shld have priority
gCountryCodePriority=1

# Enable or Disable Multi-user MIMO
# 1=Enable (default), 0=Disable
gEnableMuBformee=1

# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode
gIbssTxSpEndInactivityTime=10

#############################################
# TDLS related configurations
#############################################
# Enable support for TDLS
#  0 - disable
#  1 - enable
gEnableTDLSSupport=1

# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall
# initiate TDLS Discovery towards a peer whenever setup criteria (throughput
# and RSSI) is met and then will initiate teardown when teardown criteria
# (idle packet count and RSSI) is met.
#  0 - disable
#  1 - enable
gEnableTDLSImplicitTrigger=1

# Enable support for TDLS off-channel operation
#  0 - disable
#  1 - enable
# TDLS off-channel operation will be invoked when there is only one
# TDLS connection.
gEnableTDLSOffChannel=0

# Tx/Rx Packet threshold for initiating TDLS.
# This ini is used to configure the number of Tx/Rx packets during the period of
# gTDLSTxStatsPeriod when exceeded, a TDLS Discovery request is triggered.
gTDLSTxPacketThreshold=10

# Number of idle packet.
# This ini is used to configure the number of Tx/Rx packet, below which
# within last gTDLSTxStatsPeriod period is considered as idle condition.
gTDLSIdlePacketThreshold=1

# VHT Tx/Rx MCS values
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gVhtRxMCS=2
gVhtTxMCS=2

# VHT Tx/Rx MCS values for 2x2
# Valid values are 0,1,2. If commented out, the default value is 0.
# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
gEnable2x2=1
gVhtRxMCS2x2=2
gVhtTxMCS2x2=2

#IPA config is a bit mask and following are the configurations.
#bit0 IPA Enable
#bit1 IPA PRE Filter enable
#bit2 IPv6 enable
#bit3 IPA Resource Manager (RM) enable
#bit4 IPA Clock scaling enable
#bit5 IPA uC ENABLE
#bit6 IPA uC STA ENABLE
#bit8 IPA Real Time Debugging
gIPAConfig=0x7d

# Enable Rx handling options
# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium)
# Rx_thread + NAPI = 5
rx_mode=5

# Enable(Tx) fastpath for data traffic.
# 1 - enable(default)  0 - disable
gEnableFastPath=1

# Enable TCP Segmentation Offload
# 1 - enable  0 - disable
TSOEnable=1

# Enable Generic Receive Offload
# LRO and GRO are exclusive to each other
# LRO support is deprecated on latest 4.9(SDM845) kernel
# 1 - enable(default)  0 - disable
GROEnable=1

# Enable HT MPDU Density
# 4 for 2 micro sec
ght_mpdu_density=4

# Enable flow steering to enable multiple CEs for Rx flows.
# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs.
# Parallel Rx paths.
# 1 - enable 0 - disable(default)
gEnableFlowSteering=1

# Time in microseconds after which a NAPI poll must yield
ce_service_max_yield_time=500

#Maximum number of HTT messages to be processed per NAPI poll
ce_service_max_rx_ind_flush=1

# Maximum number of MSDUs the firmware will pack in one HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
maxMSDUsPerRxInd=8
################ Datapath feature set End ################

################ NAN feature set start ###################

# Enable NAN discovery (NAN 1.0)
# 1 - enable  0 - disable(default)
gEnableNanSupport=1
################ NAN feature set end #####################

hostscan_adaptive_dwell_mode=1

# Create another interface during driver load
gEnableConcurrentSTA=wlan1

#Enable/Disable dual MAC feature
# 0 - enable DBS
# 1 - disable DBS
# 2 - disable DBS for connection but keep DBS for scan
# 3 - disable DBS for connection but keep DBS scan with async
#     scan policy disabled
# 4 - enable DBS for connection as well as for scan with async
#     scan policy disabled
# 5 - enable DBS for connection but disable dbs for scan.
# 6 - enable DBS for connection but disable simultaneous scan from
#     upper layer (DBS scan remains enabled in FW).
gDualMacFeatureDisable=6

#Enable/Disable latency mode
# 0 disable
# 1 enable
wlm_latency_enable=1

# Enable/Disable NUD Tracking within driver
gEnableNUDTracking=0

# Configure hardware filter for DTIM mode
# The hardware filter is only effective in DTIM mode.
# Use this configuration to blanket drop broadcast/multicast packets at the hardware level
# without waking up the firmware
#
# Takes a bitmap of frame types to drop
#
# 0 = disable feature
# 1 = drop all broadcast frames, except ARP (default)
# 2 = drop all multicast frames, except ICMPv6
# 3 = drop all broadcast and multicast frames, except ARP and ICMPv6
gHwFilterMode=0

# Enables SNR Monitoring
# This ini is used to set default snr monitor
gEnableSNRMonitoring=1

# Control to enable TCP limit output byte
# This ini is used to enable dynamic configuration of TCP limit output bytes
# tcp_limit_output_bytes param.
# Enabling this will let driver post message to cnss-daemon,
# accordingly cnss-daemon will modify the tcp_limit_output_bytes.
gTcpLimitOutputEnable=0

# Enable Target Wake Time support.
# This ini is used to enable or disable TWT support.
enable_twt=0

# For NLO/PNO, enable MAWC based scan
# Enable/Disable the Motion Aided Wireless Connectivity based NLO using this parameter
mawc_nlo_enabled=0

# Force 1x1 when connecting to certain peer
# This INI when enabled will force 1x1 connection with certain peer.
gForce1x1Exception=0

# Enable/disable oce feature for STA
# This ini is used to enable/disable oce feature for STA
oce_sta_enable=1

# Enable/disable oce feature for SAP
# This ini is used to enable/disable oce feature for SAP
oce_sap_enable=0

#Enable/disable FILS discovery for SAP
oce_enable_fils_discovery_sap=0

# Set probe request rate
# This ini is used to set probe request rate to 5.5Mbps as per OCE requirement in 2.4G band
oce_enable_probe_req_rate=0

#Enable/disable probe request deferral as per OCE spec
oce_enable_probe_req_deferral=0

# HE caps Weightage to calculate best candidate
# This ini is used to increase/decrease HE caps weightage in best candidate selection.
# If AP supports HE caps, AP will get additional weightage with this param.
# Weightage will be given only if dot11mode is HE capable.
he_caps_weightage=0

# PCL Weightage to calculate best candidate
# This ini is used to increase/decrease PCL weightage in best candidate selection.
# If some APs are in PCL list, those AP will get addition weightage.
pcl_weightage=10

# Enable/disable esp feature
# This ini is used to enable/disable ESP(Estimated service parameters) IE parsing and decides
# whether firmware will include this in its scoring algo.
enable_esp_for_roam=0

# Bitmask to enable 11k offload to FW.
# This ini is used to set which of the 11k features is offloaded to FW
# Currently Neighbor Report Request is supported for offload and is enabled by default.
# B0: Offload 11k neighbor report requests
# B1-B31: Reserved
11k_offload_enable_bitmask=0

# Set channel selection logic for different concurrency combinations to DBS or inter band MCC.
# Default is DBS for STA+STA and STA+P2P.
#  0 - inter-band MCC
#  1 - DBS
#
# BIT 0: STA+STA
# BIT 1: STA+P2P
# BIT 2-31: Reserved
channel_select_logic_conc=0

# Configure BTM
# Bit 0: Enable/Disable the BTM offload. Set this to 1 will enable and 0 will disable BTM offload.
# BIT 2, 1: Action on non matching candidate with cache. If a BTM request is received from AP
#           then the candidate AP's may/may-not be present in the firmware scan cache.
#           Based on below config firmware will decide whether to forward BTM frame to host or
#           consume with firmware and proceed with Roaming to candidate AP.
#
#           00 scan and consume
#           01 no scan and forward to host
#           10, 11 reserved
# BIT 5, 4, 3: Roaming handoff decisions on multiple candidates match
#              000 match if exact BSSIDs are found
#              001 match if at least one top priority BSSID only
#              010, 011, 100, 101, 110, 111 reserved
# BIT 6: Set this to 1 will send BTM query frame and 0 not sent.
# BIT 7-31: Reserved
btm_offload_config=1473
btm_disassoc_timer_threshold=10000
minimum_btm_candidate_score=0
roam_candidate_validity_timer=0

#Timer waiting for interface up from the upper layer
gInterfaceChangeWait=2000

# Set external ACS Policy to Mandatory
acs_policy=1

# Set Modulated Dtim
gEnableModulatedDTIM=2

# Enable NAN datapath
genable_nan_datapath=1

# Set MaxLIModulate Dtim
gMaxLIModulatedDTIM=6

# Used for ignore peer infrormation
gIgnorePeerErpInfo=1

# DBS Scan Selection
gdbs_scan_selection=5,4,1,16,4,1

# 0 - Disallow STA+SAP SCC on LTE coex channel
# 1 - Allow STA+SAP SCC on LTE coex channel
g_sta_sap_scc_on_lte_coex_chan=1

# Tx Chain Mask for CCK
gCckChainMaskEnable=1

# Tx Chain Mask for 1SS
gTxChainMask1ss=0

# TPC power
gSelfGenFrmPwr=3

# Enable LFR3 subnet detection
gLFRSubnetDetectionEnable=0

#Enable APF in Active mode
gActiveUcBpfMode=2

# Control MC/BC active APF mode
gActiveMcBcBpfMode=1

# Enable or disable Probe Req Information Element whitelist. When enabled, IEs corresponding to bits
# set in bitmaps are allowed in probe request, all others removed while device is unassociated
# with an AP
# 1=Enable, 0=Disable (default)
g_enable_probereq_whitelist_ies=1

# ie bitmap examples: <bitmap_name>=<value> [<Allowed Information elements>]
#    g_probe_req_ie_bitmap_0=0x80000009 #[0, 3, 31]
#    g_probe_req_ie_bitmap_0=0x00000000 #[] (default)
#    g_probe_req_ie_bitmap_1=0x80000009 #[32, 35, 63]
g_probe_req_ie_bitmap_0=0x0000000B
g_probe_req_ie_bitmap_1=0x00040000
# g_probe_req_ie_bitmap_2=0x00000000
# g_probe_req_ie_bitmap_3=0x00000000
# g_probe_req_ie_bitmap_4=0x00000000
# g_probe_req_ie_bitmap_5=0x00000000
g_probe_req_ie_bitmap_6=0x20000000
# g_probe_req_ie_bitmap_7=0x00000000

# Used to specify vendor specific OUIs
gProbeReqOUIs=0050F208

# enable 11d in world mode
enable_11d_in_world_mode=1

# WLM flags setting for low level
wlm_latency_flags_low=0xc08

#Enable/Disable chain selection optimization for one chain dtim
#Min: 0
#MAX: 30
gEnableDTIMSelectionDiversity=3

# Enable/Disable rtt sta mac randomization
enable_rtt_mac_randomization=1

# Set max time for active 2G channel scan
active_max_channel_time_2g=40

# To config roaming scan policy
roaming_scan_policy=1

# Config DPTRACE
gDptraceConfig=1,6,2,126

# Enable/Disable peer unmap confirmation support in Host
gEnablePeerUnmapConfSupport=1

# Enable/Disable separate wifi aware interface
nan_separate_iface_support=1

# Config Thermal mitigation
gThrottleDutyCycleLevel0=0
gThrottleDutyCycleLevel1=0
gThrottleDutyCycleLevel2=10
gThrottleDutyCycleLevel3=30
gThrottleDutyCycleLevel4=50
gThrottleDutyCycleLevel5=70

# Enable/Disable conversion from SARV1 to SARV2
gEnableSARV1toSARV2=1

#This ini is used to enable/disable ESE feature
EseEnabled=1

# Configure max number of ndi host supports
ndi_max_support=2

# Use wake lock during user scan
wake_lock_in_user_scan=1

# To address an interop issue with a particular AP
# Used to specify action OUIs to reconnect when assoc timeout
gActionOUIReconnAssocTimeout=00E04C 00 01

# Limit to send request to the firmware at most once in a second
nb_commands_interval=1

END

# Note: Configuration parser would not read anything past the END marker

