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

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

# 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

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

#Enable/Disable SU Tx beamformer support.
gEnableTxSUBeamformer=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

# 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 VHT on 2.4Ghz
gEnableVhtFor24GHzBand=1

# Regulatory Setting; 0=STRICT; 1=CUSTOM
gRegulatoryChangeCountry=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

gReportMaxLinkSpeed=0

enable_mac_provision=1

################ NAN feature set start ###################
# Enable or Disable NAN
# 1=Enable (default), 0=Disable
gEnableNanSupport=1
genable_nan_datapath=1
gnan_datapath_ndi_channel=6
################ NAN feature set end #####################

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

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

#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, 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

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

# Maximum number of concurrent connections
gMaxConcurrentActiveSessions=3

# 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

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

################ Datapath feature set Begin ################
# 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

# 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/Disable RX full reorder offload
gReorderOffloadSupported=1

# Enable CE classification
# 1 - enable(default)  0 - disable
gCEClassifyEnable=1

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

# This flag enables IP, TCP and UDP checksum offload
# 1 - enable(default)  0 - disable
gEnableIpTcpUdpChecksumOffload=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
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

ce_service_max_yield_time=500
ce_service_max_rx_ind_flush=1
maxMSDUsPerRxInd=8

gEnableDataStallDetection=0

gTcpLimitOutputEnable=0

################ Datapath feature set End ################

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

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

#Enable thermal mitigation
gThermalMitigationEnable=0

#Maximum Channel time in msec
gMaxMediumTime=6000

gPNOScanSupport=1

# 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

#Maxium Channel time in msec
gMaxMediumTime = 6000

adaptive_dwell_mode_enabled=1

hostscan_adaptive_dwell_mode=1

adapt_dwell_lpf_weight=80

adapt_dwell_wifi_act_threshold=10

# 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

gProbeReqOUIs=0050F208

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

#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

beaconEarlyTerminationWakeInterval=3

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

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

gAllowDFSChannelRoam=1

gLFRSubnetDetectionEnable=0

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

# Enable WAPI or not
# WAPIIsEnabled=0

#Flag to enable HostARPOffload feature or not
hostArpOffload=1

#Flag to enable HostNSOffload feature or not
hostNSOffload=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

#Enable APF in Active mode
gActiveUcBpfMode=2
gActiveMcBcBpfMode=1

#HW CCE Filter mode
gHwFilterMode=0

# 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

11k_offload_enable_bitmask=0


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

gEnableSelfRecovery=1

#Enable firmware log
gEnablefwlog=1
# Additional firmware log levels
gFwDebugLogLevel=3
gFwDebugModuleLoglevel=2,1,3,1,5,1,9,1,13,1,14,1,18,1,19,1,26,1,28,1,29,1,31,1,36,1,38,1,46,1,47,1,50,1,52,1,53,1,56,1,60,1,61,1,4,1

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

gEnableTDLSScan=1
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.

# 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

# Following parameters are for test purpose only and when set will
# configure tx and rx per band chain mask. These parameters will
# take effect only when:
# gEnable2x2=0
# gDualMacFeatureDisable=1
# gSetTxChainmask1x1=0
# gSetRxChainmask1x1=0
# These are defaulted to 0 with following definitions:
# 0: don't care
# 1: use chain 0
# 2: use chain 1
# 3: can use either chain
tx_chain_mask_2g=0
rx_chain_mask_2g=0
tx_chain_mask_5g=0
rx_chain_mask_5g=0

gForce1x1Exception=0

#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
#bit7 IPA Real Time Debugging
gIPAConfig=0x7d
gIPADescSize=800

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

#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

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



#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

# Turn on STA + AP/STA
gEnableConcurrentSTA=wlan1

# 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

#Set priority for connection with bssid_hint
g_is_bssid_hint_priority=0

gdbs_scan_selection=5,4,1,16,4,1

enable_11d_in_world_mode=1

gDptraceConfig=1,4,1,126

#############################################
# MAWC related configurations
#############################################

# MAWCEnabled - Enable/Disable Motion Aided Wireless Connectivity Global
MAWCEnabled=0

# mawc_roam_enabled - Enable/Disable MAWC during roaming
mawc_roam_enabled=0

# Enable/Disable the Motion Aided Wireless Connectivity
# based NLO using this parameter
mawc_nlo_enabled=0

#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

gAP11ACOverride=0

channel_select_logic_conc=0x0

gConfigVCmode=0

wlm_latency_flags_moderate=0
wlm_latency_flags_low=0
wlm_latency_flags_ultralow=0

oce_sta_enable=0
oce_sap_enable=0
num_oce_wan_slots=0
oce_wan_score_idx7_to_4=0
oce_wan_score_idx11_to_8=0
oce_enable_rssi_assoc_reject=0

# Enable/Disable rtt sta mac randomization
enable_rtt_mac_randomization=1

#Enable/Disable Secondary Retry Rate feature subset
gEnableSecondaryRate=0x17

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

#Enable Bmps(power save in connected state) based on timer
#Timer value is in seconds
gAutoBmpsTimerValue=90

#Enable/Disable 802.11ai FILS support
g_is_fils_enabled=0

END

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