# Protocol specific features

#features not required for GENOA IOT, compilation errors are there.
CONFIG_SUPPORT_11AX := y
CONFIG_160MHZ_SUPPORT := y
CONFIG_FEATURE_STATS_EXT := n
CONFIG_QCA_IBSS_SUPPORT := y
CONFIG_FEATURE_WLAN_FT_IEEE8021X := y
CONFIG_FEATURE_WLAN_FT_PSK := y

#required features
CONFIG_FEATURE_WLAN_RMC := n
CONFIG_QCACLD_WLAN_LFR2 := y
CONFIG_QCACLD_WLAN_LFR3 := n
CONFIG_QCOM_TDLS := y
CONFIG_QCACLD_FEATURE_GREEN_AP := n
CONFIG_QCOM_VOWIFI_11R := y
CONFIG_WLAN_FEATURE_FILS := y
CONFIG_WLAN_FEATURE_11W := y
CONFIG_QCOM_LTE_COEX := n
CONFIG_WLAN_FEATURE_LPSS := n
CONFIG_QCACLD_FEATURE_NAN := y
CONFIG_POWER_MANAGEMENT_OFFLOAD := y
CONFIG_LFR_SUBNET_DETECTION := y
CONFIG_MCC_TO_SCC_SWITCH := y
CONFIG_QCOM_ESE := n
CONFIG_WLAN_OPEN_P2P_INTERFACE := y
CONFIG_WLAN_CONV_SPECTRAL_ENABLE := n
CONFIG_WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY := y
CONFIG_WLAN_DFS_MASTER_ENABLE := y
CONFIG_WIFI_POS_CONVERGED := y
CONFIG_WIFI_POS_LEGACY := n
CONFIG_FEATURE_WLAN_WAPI := y
CONFIG_AGEIE_ON_SCAN_RESULTS := y
CONFIG_WLAN_PMO_ENABLE := y
CONFIG_CONVERGED_P2P_ENABLE := y
CONFIG_WLAN_POLICY_MGR_ENABLE := y
CONFIG_HDD_INIT_WITH_RTNL_LOCK := y
CONFIG_WLAN_FEATURE_TWT := n
CONFIG_WMI_CMD_STRINGS := y
CONFIG_SOFTAP_CHANNEL_RANGE := y
CONFIG_FEATURE_WLAN_SCAN_PNO := y
CONFIG_WLAN_FEATURE_DSRC := n
CONFIG_FEATURE_MONITOR_MODE_SUPPORT := n
CONFIG_DP_TRACE := y
CONFIG_QCACLD_FEATURE_METERING := n

#Flag to enable Dynamic Voltage WDCVS (Config Voltage Mode)
CONFIG_WLAN_DYNAMIC_CVM := n

#We might need to disable WEXT support in perf builds in future
CONFIG_WLAN_WEXT_SUPPORT_ENABLE := y
CONFIG_HOST_11D_SCAN := y

#Flag to enable/disable Avoid acs freq feature
CONFIG_SAP_AVOID_ACS_FREQ_LIST := n

ifeq ($(CONFIG_ARCH_MSM8996), y)
CONFIG_CHANNEL_HOPPING_ALL_BANDS := y
endif

# Debug specific features
CONFIG_WLAN_LOGGING_BUFFERS_DYNAMICALLY := y
BUILD_DEBUG_VERSION := y
BUILD_DIAG_VERSION := n

CONFIG_REMOVE_PKT_LOG := y
CONFIG_FEATURE_HTC_CREDIT_HISTORY := y
CONFIG_TRACE_RECORD_FEATURE := y
CONFIG_WLAN_NUD_TRACKING := n
CONFIG_CP_STATS := y
CONFIG_FEATURE_FW_LOG_PARSING := n
CONFIG_PTT_SOCK_SVC_ENABLE := y
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
CONFIG_WLAN_FEATURE_LINK_LAYER_STATS := n
CONFIG_FEATURE_ROAM_DEBUG := y

CONFIG_WLAN_LOG_FATAL := y
CONFIG_WLAN_LOG_ERROR := y
CONFIG_WLAN_LOG_WARN := y
CONFIG_WLAN_LOG_INFO := y
CONFIG_WLAN_LOG_DEBUG := y

ifeq ($(CONFIG_REMOVE_PKT_LOG), y)
CONFIG_WDI_EVENT_ENABLE := n
else
CONFIG_WDI_EVENT_ENABLE := y
endif

#Enable the type_specific_data in the ath_pktlog_arg
ifeq ($(CONFIG_REMOVE_PKT_LOG), n)
CONFIG_PKTLOG_HAS_SPECIFIC_DATA := y
endif

PANIC_ON_BUG := y
WLAN_WARN_ON_ASSERT := y
CONFIG_WLAN_LOGGING_SOCK_SVC := y

#Flag to enable wbuff feature
CONFIG_WLAN_WBUFF := n

# other features
WLAN_OPEN_SOURCE := y
CONFIG_ATH_PERF_PWR_OFFLOAD := y
CONFIG_ATH_BUS_PM := n
CONFIG_ATH_SUPPORT_FLOWMAC_MODULE := n
CONFIG_ATH_SUPPORT_SPECTRAL := n
CONFIG_LITTLE_ENDIAN := y
CONFIG_ATH_PCIE_ACCESS_DEBUG := n
CONFIG_QCA_SIGNED_SPLIT_BINARY_SUPPORT := n
CONFIG_QCA_SINGLE_BINARY_SUPPORT := n
CONFIG_TARGET_RAMDUMP_AFTER_KERNEL_PANIC := y
CONFIG_FEATURE_SECURE_FIRMWARE := n
CONFIG_WLAN_FEATURE_PACKET_FILTERING := y
CONFIG_WLAN_NS_OFFLOAD := y
CONFIG_FEATURE_WLAN_RA_FILTERING:= y
ifeq ($(CONFIG_POWER_MANAGEMENT_OFFLOAD), y)
CONFIG_FEATURE_WLAN_LPHB := y
endif
CONFIG_FEATURE_WLAN_EXTSCAN := n
CONFIG_MCL := y
CONFIG_REG_CLIENT := y
CONFIG_WLAN_OFFLOAD_PACKETS := y
CONFIG_WLAN_SYNC_TSF := y
CONFIG_WLAN_FEATURE_DISA := n
CONFIG_WLAN_FEATURE_FIPS := y
CONFIG_WLAN_FEATURE_SAE := y
CONFIG_CHNL_MATRIX_RESTRICTION := n
CONFIG_WLAN_ALLOCATE_GLOBAL_BUFFERS_DYNAMICALLY := y
CONFIG_WLAN_FEATURE_BMI := n
# Enable FW stats version 2
CONFIG_AR900B := y

#Flags to enable/disable vendor commands
CONFIG_FEATURE_RSSI_MONITOR := n
CONFIG_FEATURE_BSS_TRANSITION := n
CONFIG_FEATURE_STATION_INFO := n
CONFIG_FEATURE_TX_POWER := n
CONFIG_FEATURE_OTA_TEST := n
CONFIG_FEATURE_ACTIVE_TOS := n
CONFIG_FEATURE_SAR_LIMITS := y
CONFIG_FEATURE_CONCURRENCY_MATRIX := n
CONFIG_FEATURE_SAP_COND_CHAN_SWITCH := n
CONFIG_FEATURE_P2P_LISTEN_OFFLOAD := n

#Flags to enable/disable WMI APIs
CONFIG_WMI_ROAM_SUPPORT := y
CONFIG_WMI_CONCURRENCY_SUPPORT := y
CONFIG_WMI_STA_SUPPORT := y

ifeq ($(CONFIG_ARCH_SDM845), y)
ifeq ($(CONFIG_IPA_OFFLOAD), y)
CONFIG_ENABLE_SMMU_S1_TRANSLATION := y
endif
endif

#Data Path specific features
CONFIG_TX_CREDIT_RECLAIM_SUPPORT := n
CONFIG_CHECKSUM_OFFLOAD := y
CONFIG_QCA_SUPPORT_TX_THROTTLE := y

ifeq ($(CONFIG_POWER_MANAGEMENT_OFFLOAD), y)
CONFIG_GTK_OFFLOAD := y
endif
CONFIG_QCACLD_FEATURE_APF := y

#Flag to enable SARv1 -> SARv2 conversion
CONFIG_WLAN_FEATURE_SARV1_TO_SARV2 := n

ifneq ($(DEVELOPER_DISABLE_BUILD_TIMESTAMP), y)
ifneq ($(WLAN_DISABLE_BUILD_TAG), y)
CONFIG_BUILD_TAG := y
endif
endif

#Buffer allocations dynamically
ifeq ($(CONFIG_WLAN_ALLOCATE_GLOBAL_BUFFERS_DYNAMICALLY), y)
CONFIG_WLAN_DFS_STATIC_MEM_ALLOC := n
endif

# WoW filer configs
CONFIG_CFG_PMO_WOW_FILTERS_MAX := 16

# Offload configs
CONFIG_CFG_GTK_OFFLOAD_MAX_VDEV := 2
CONFIG_CFG_ROAM_OFFLOAD_MAX_VDEV := 1

# Max Periodic Tx Pattern Config
CONFIG_CFG_MAX_PERIODIC_TX_PTRNS := 2

# Max Sta Vdev Config
CONFIG_CFG_MAX_STA_VDEVS := 2

# Additional peers sent to firmware
CONFIG_CFG_NUM_OF_ADDITIONAL_FW_PEERS := 0

# Number of TDLS peers that each Tdls vdev can track
CONFIG_CFG_NUM_OF_TDLS_CONN_TABLE_ENTRIES := 4

# Number of vdevs supported at one time, used for allocating memory
CONFIG_WLAN_MAX_VDEVS := 3

#Number of STA sessions max connected to our SAP, used for allocating memory
#should never be less then number of max peers - INI
CONFIG_SIR_SAP_MAX_NUM_PEERS := 10

#Max no of offloaded beaconing entities supported
CONFIG_BEACON_TX_OFFLOAD_MAX_VDEV := 3

#Beacon offload config
CONFIG_WMI_BCN_OFFLOAD := y

#Flag to enable Supported Operating class
CONFIG_HOST_OPCLASS := y

#Enable STATE MACHINE HISTORY
CONFIG_SM_ENG_HIST := n

ifeq (y,$(findstring y,$(CONFIG_ARCH_MSM) $(CONFIG_ARCH_QCOM) $(CONFIG_QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK)))
CONFIG_WLAN_FEATURE_DP_BUS_BANDWIDTH := y
endif

CONFIG_SAP_DHCP_FW_IND := n

#Enable FW Offload
CONFIG_WLAN_FW_OFFLOAD := y

###################################
