# 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

# Maximum Tx power
# gTxPowerCap=30

# Fragmentation Threshold
# gFragmentationThreshold=2346

# RTS threshold
RTSThreshold=1048576

# 802.11d support
g11dSupportEnabled=0

# DFS Master Capability
gEnableDFSMasterCap=1

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
gChannelBondingMode5GHz=1

#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds).
#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link
#is idle for last 10 seconds.) For both active and power save clients.

#Power save clients: DUT set TIM bit from 10th second onwards and till client
#honors TIM bit. If doesn't honor for 5 seconds then DUT remove client.

#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not
#success still we try on 11th second if not tries on 12th and so on till 15th
#second. Hence before disconnection DUT will send 5 NULL frames. Hence in any
#case DUT will detect client got removed in (10+5) seconds.
#i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod)..

#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and
#it is period where we send NULL frame.
#gApLinkMonitorPeriod = 10
#gGoLinkMonitorPeriod = 10

# 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

# 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

# Maximum number of wow filters required
#gMaxWoWFilters=22

# WOW Enable/Disable.
# 0 - Disable both magic pattern match and pattern byte match.
# 1 - Enable magic pattern match on all interfaces.
# 2 - Enable pattern byte match on all interfaces.
# 3 - Enable both magic pattern and pattern byte match on all interfaces.
# Default value of gEnableWoW is 3.
# gEnableWoW=0

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

# Set Thermal Power limit
TxPower2g=10
TxPower5g=10

#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1

#############################################
# Offload related configurations
#############################################
#Maximum number of offload peers supported
# gMaxOffloadPeers=2

# 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

# RA filtering rate limit param, the current value would not
# help if the lifetime in RA is less than 3*60=3min. Then
# we need to change it, though it is uncommon.
# gRAFilterEnable=0
gRArateLimitInterval=600

# 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=1

# 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=0

# Enable/disable oce feature for SAP
# This ini is used to enable/disable oce feature for SAP
oce_sap_enable=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

# 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=0

# 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=0

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

END

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

