# This file allows user to override the factory

#############################################
# STA related general configurations
#############################################
# Assigned MAC Addresses - This will be used until NV items are in place
# Each byte of MAC address is represented in Hex format as XX
Intf0MacAddress=000AF58989FF
Intf1MacAddress=000AF58989FE
Intf2MacAddress=000AF58989FD
Intf3MacAddress=000AF58989FC

#Channel Bonding
gChannelBondingMode5GHz=1
gChannelBondingMode24GHz=0

#Enable Keep alive with non-zero period value
gStaKeepAlivePeriod = 30

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

# 0 for OLPC 1 for CLPC and SCPC
gEnableCloseLoop=1

ImplicitQosIsEnabled=0

# 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

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

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

# 1=enable STBC; 0=disable STBC
gEnableRXSTBC=1

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

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

# RTS threshold
RTSThreshold=1048576

# 802.11d support
g11dSupportEnabled=0


# 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

# RX packet handling options
# 0: no rx thread, no RPS, for MDM
# 1: RX thread
# 2: RPS
rxhandle=2

#Enable VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1

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

# Enable/Disable RX full reorder offload
gReorderOffloadSupported=1

# userspace country code setting shld take priority
gCountryCodePriority=1

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

# Enable(1)/Disable(0) SIFS burst
gEnableSifsBurst=1

# Tx Chain Mask for CCK
gCckChainMaskEnable=1

# Tx Chain Mask for 1SS
gTxChainMask1ss=0

# TPC power
gSelfGenFrmPwr=3

# Enable or Disable NAN
# 1=Enable (default), 0=Disable
gEnableNanSupport=1

gIgnorePeerHTopMode=1
gIgnorePeerErpInfo=1

# 802.11n Protection flag
gEnableApProt=1

# Fixed Rate
gFixedRate=0

# Intra-BSS forward
gDisableIntraBssFwd=0

# WMM Enable/Disable
WmmIsEnabled=0

# 802.11h support
g11hSupportEnabled=1

#Short Guard Interval Enable/disable
gShortGI20Mhz=1
gShortGI40Mhz=1

#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec
gWlanAutoShutdown=0

#Preferred band (both or 2.4 only or 5 only)
BandCapability=0

gVhtChannelWidth=2

# Enable Tx beamforming
gTxBFEnable=1

# 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

#If set to 0, MCC is not allowed.
gEnableMCCMode=1

# MCC to SCC Switch mode: 0-Disable 1-Enable 2-Force SCC if same band
gWlanMccToSccSwitchMode = 0

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

# Bus bandwidth threshold values in terms of number of packets
gBusBandwidthHighThreshold=2000
gBusBandwidthMediumThreshold=500
gBusBandwidthLowThreshold=150

# Bus bandwidth compute timeout value in ms
gBusBandwidthComputeInterval=100

# Maximum number of concurrent connections
gMaxConcurrentActiveSessions=2

# Radar PRI multiplier
gDFSradarMappingPriMultiplier=4

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

# Enable to check FW hash if secure FW feature is enabled. It's for defconfig
# builds only since it will be ignored in performance/release builds.
gEnableFWHashCheck=1

# Enable or Disable MCC Adaptive Scheduler at the FW
# 1=Enable (default), 0=Disable
gEnableMCCAdaptiveScheduler=1

#############################################
# SCAN related configurations
#############################################
# Enable/Disable Idle Scan
gEnableIdleScan=0

#Enable Scan Results Aging based on timer
#Timer value is in seconds
#If Set to 0 it will not enable the feature
gScanAgingTime=0

#Enable Scan Results Aging based on number of scans
gScanResultAgeCount=1

#Enable thermal mitigation
gThermalMitigationEnable=0

#List of Country codes for which 11ac needs to be disabled
#Each country code must be delimited by comma(,)
gListOfNon11acCountryCode=RU,UA,ZA

#Maximum Channel time in msec
gMaxMediumTime=6000

# Scan Timing Parameters
# gPassiveMaxChannelTime=110
# gPassiveMinChannelTime=60
gActiveMaxChannelTime=40
gActiveMinChannelTime=20

gPNOScanSupport=1

# Perform PNO fast scan this many number of times
gPNOScanTimerRepeatValue=6

# PNO slow scan period = gPNOSlowScanMultiplier times PNO fast scan period
# Example: fast scan period is passed from framework (default = 10 sec), then
# PNO slow scan period = 60 sec.
gPNOSlowScanMultiplier=6

# Enable or Disable Extended Scan (GScan)
# 1=Enable (default), 0=Disable
gExtScanEnable=1

#If set will start with active scan after driver load, otherwise will start with
#passive scan to find out the domain
gEnableBypass11d=1

#If set to 0, will not scan DFS channels
gEnableDFSChnlScan=1

#############################################
# Power related configurations
#############################################
# Enable IMPS or not
gEnableImps=1

# Enable BMPS or not
gEnableBmps=1

# Increase sleep duration (seconds) during IMPS
# 0 implies no periodic wake up from IMPS. Periodic wakeup is
# unnecessary if Idle Scan is disabled.
gImpsModSleepTime=0

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

# Enable suspend or not
# 1: Enable standby, 2: Enable Deep sleep, 3: Enable Mcast/Bcast Filter
gEnableSuspend=3

#Enable Power Save offload
gEnablePowerSaveOffload=5

# Enable Runtime PM Feature.
# Enabling this feature will put target wow and shutdown pcie link
# when inactivity is detected in WLAN Driver.
# This feature is inactive when beaconing interfaces are active with
# clients associated.
# 0 - disable
# 1 - enable
gRuntimePM=1

# When gRuntimePM is disabled gRuntimeAutoTime won't take effect.
# The Time is in msec.
# 100 is min, 10000 is max, 500 is default.
gRuntimePMDelay=500

#Enable Power saving mechanism Based on Android Framework
#If set to 0 Driver internally control the Power saving mechanism
#If set to 1 Android Framwrok control the Power saving mechanism
isAndroidPsEn=0

#Beacon Early Termination (1 = enable the BET feature, 0 = disable)
enableBeaconEarlyTermination=1

beaconEarlyTerminationWakeInterval=3

#Data Inactivity Timeout when in powersave (in ms)
gDataInactivityTimeout=200

#Enable or Disable 5G early beacon termination
gEnable5gEBT=1

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

gEnableModulatedDTIM=2
gMaxLIModulatedDTIM=6

#############################################
# Roaming related configurations
#############################################
# CSR Roaming Enable(1) Disable(0)
gRoamingTime=0

# ESE Support and fast transition
EseEnabled=1

gNeighborLookupThreshold=76
gNeighborReassocThreshold=81
gNeighborScanTimerPeriod=200
gNeighborScanChannelMinTime=20
gNeighborScanChannelMaxTime=30
gMaxNeighborReqTries=3

# To enable, set gRoamIntraBand=1 (Roaming within band)
# To disable, set gRoamIntraBand=0 (Roaming across band)
gRoamIntraBand=0

# 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

# If the RSSI of any available candidate is better than currently associated
# AP by at least gImmediateRoamRssiDiff, then being to roam immediately (without
# registering for reassoc threshold).
# NOTE: Value of 0 means that we would register for reassoc threshold.
gImmediateRoamRssiDiff=10

# 802.11K support
gRrmEnable=1
gRrmOperChanMax=8
gRrmNonOperChanMax=8

gEnableFastRoamInConcurrency=1

# Enable/Disable Roaming Offload Support (a.k.a Key Management Offload)
# 0 to disable, 1 to enable
gRoamOffloadEnabled=0

gAllowDFSChannelRoam=1

#############################################
# Offload related configurations
#############################################
# Beacon filtering frequency (unit in beacon intervals)
gNthBeaconFilter=50

# Enable WAPI or not
# WAPIIsEnabled=0
# Flags to filter Mcast abd Bcast RX packets.
# Value 0: No filtering, 1: Filter all Multicast.
# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast
McastBcastFilter=3

#Flag to enable HostARPOffload feature or not
hostArpOffload=1

#Flag to enable TCPChkSumOffld feature or not
gEnableTCPChkSumOffld=1

#Flag to enable HostNSOffload feature or not
hostNSOffload=1

#Flag to enable IPChkSumOffld feature or not
gEnableIPChecksumOffload=1

# 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

#Enable MC address filtering offload
gMCAddrListEnable=1

# Enable Active mode offload
gActiveModeOffload=1

# Enable Active mode offload
gEnableActiveModeOffload=1

#Maximum number of offload peers supported
# gMaxOffloadPeers=2

# 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 patter and pattern byte match on all interfaces.
# Default value of gEnableWoW is 3.
# gEnableWoW=0

#IPA config
gIPAEnable=0x00
gIPADescSize=800
gIPAPreFilterEnable=1
gIPARMEnable=1
gIPAIPv6Enable=1


#############################################
# Logging related configurations
#############################################
gEnableLogp=1

gEnableSelfRecovery=1

#Enable firmware log
gEnablefwlog=1
# Additional firmware log levels
gFwDebugLogLevel=4
gFwDebugModuleLoglevel=1,0,2,0,4,0,5,0,6,0,7,4,8,0,9,0,11,0,13,0,17,0,18,0,19,0,27,0,29,0,31,0,35,0,36,0,38,0

#Enable firmware uart print
gEnablefwprint=0

#############################################
# 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 TDLS External Control. That is, user space application has to
# first configure a peer MAC in wlan driver towards which TDLS is desired.
# Device will establish TDLS only towards those configured peers whenever
# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS
# when teardown criteria (idle packet count and RSSI) is met. However,
# device will accept TDLS connection if it is initiated from any other peer,
# even if that peer is not configured.
#  0 - disable
#  1 - enable
# For TDLS External Control, Implicit Trigger must also be enabled.
gTDLSExternalControl=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

gEnableTDLSScan=1
gTDLSTxStatsPeriod=500
gTDLSTxPacketThreshold=10
gTDLSIdlePacketThreshold=1

#############################################
# P2P related configurations
#############################################
#P2P Listen offload
gEnableP2pListenOffload=1

#Enable or Disable p2p device address administered
isP2pDeviceAddrAdministrated=0

#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

#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame are succeed to send or not.
#Hence total effective detection time is gGoLinkMonitorPeriod+ gGoKeepAlivePeriod/gApLinkMonitorPeriod+ gApKeepAlivePeriod.
gGoKeepAlivePeriod = 20
gApKeepAlivePeriod = 20

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

#Enable/Disable UAPSD for SoftAP
gEnableApUapsd=1

# SAP auto channel selection configuration
# 0 = disable auto channel selection
# 1 = enable auto channel selection, channel provided by supplicant will be ignored
gApAutoChannelSelection=0

#SOFTAP Channel Range selection
gAPChannelSelectStartChannel=1
gAPChannelSelectEndChannel=11

# SAP Country code
# Default Country Code is 2 bytes, 3rd byte is optional indoor or out door.
# Example
#   US Indoor, USI
#   Korea Outdoor, KRO
#   Japan without optional byte, JP
#   France without optional byte, FR
#gAPCntryCode=USI

# DFS Master Capability
gEnableDFSMasterCap=1

# Disable 11AC for hotspot
gSapForce11NFor11AC=1

#Auto Shutdown  Value in seconds. A value of 0 means Auto shutoff is disabled
gAPAutoShutOff=0

# Remove Overlap channel restriction
gEnableOverLapCh=0

# Enable/Disable channel avoidance for SAP in SCC scenario
# 0 - disable
# 1 - enable
gSapSccChanAvoidance=0


END

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