# Protocol specific features
CONFIG_QCACLD_WLAN_LFR2 := y
CONFIG_QCACLD_WLAN_LFR3 := y
CONFIG_QCOM_TDLS := y
CONFIG_QCACLD_FEATURE_GREEN_AP := y
CONFIG_QCOM_VOWIFI_11R := y
CONFIG_WLAN_FEATURE_FILS := y
CONFIG_WLAN_FEATURE_11W := y
CONFIG_QCOM_LTE_COEX := y
CONFIG_WLAN_FEATURE_LPSS := y
CONFIG_QCACLD_FEATURE_NAN := y
CONFIG_WLAN_FEATURE_NAN_DATAPATH := y
CONFIG_NAN_CONVERGENCE := y
CONFIG_POWER_MANAGEMENT_OFFLOAD := y
CONFIG_LFR_SUBNET_DETECTION := y
CONFIG_MCC_TO_SCC_SWITCH := y
CONFIG_QCOM_ESE := y
CONFIG_QCA_IBSS_SUPPORT := y
CONFIG_WLAN_OPEN_P2P_INTERFACE := y
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_LEGACY_CHAN_ENUM := y
CONFIG_WLAN_PMO_ENABLE := y
CONFIG_CONVERGED_P2P_ENABLE := y
CONFIG_WLAN_POLICY_MGR_ENABLE := y
CONFIG_SUPPORT_11AX := y
CONFIG_HDD_INIT_WITH_RTNL_LOCK := y
CONFIG_CONVERGED_TDLS_ENABLE := y
CONFIG_WLAN_CONV_SPECTRAL_ENABLE := y
CONFIG_WLAN_SPECTRAL_ENABLE := y
CONFIG_WMI_CMD_STRINGS := y
CONFIG_SOFTAP_CHANNEL_RANGE := y
CONFIG_FEATURE_WLAN_SCAN_PNO := y

# Interface specific features
CONFIG_ROME_IF = snoc
CONFIG_HELIUMPLUS := y
CONFIG_64BIT_PADDR := y
CONFIG_QMI_SUPPORT := y
CONFIG_WIFI_3_0_ADRASTEA := y
CONFIG_ADRASTEA_RRI_ON_DDR := y
CONFIG_ATH_PROCFS_DIAG_SUPPORT := y
CONFIG_ADRASTEA_SHADOW_REGISTERS := y
CONFIG_HTT_PADDR64 := y
CONFIG_AR900B := y
CONFIG_HIF_SNOC:= y

# Data Path specific features
CONFIG_WLAN_FASTPATH := y
CONFIG_FEATURE_TSO := y
CONFIG_WLAN_NAPI := y
CONFIG_WLAN_TX_FLOW_CONTROL_V2 := y
CONFIG_11AC_TXCOMPACT := y
CONFIG_TX_CREDIT_RECLAIM_SUPPORT := n
CONFIG_CHECKSUM_OFFLOAD := y
CONFIG_QCA_SUPPORT_TX_THROTTLE := y
CONFIG_RX_OL := y
CONFIG_FEATURE_MONITOR_MODE_SUPPORT := y

ifeq ($(CONFIG_INET_LRO), y)
CONFIG_WLAN_LRO := y
else
CONFIG_WLAN_LRO := n
endif

ifeq ($(CONFIG_IPA), y)
CONFIG_IPA_OFFLOAD := y
endif
ifeq ($(CONFIG_IPA3), y)
CONFIG_IPA_OFFLOAD := y
endif

ifneq ($(CONFIG_FORCE_ALLOC_FROM_DMA_ZONE), y)
CONFIG_ENABLE_DEBUG_ADDRESS_MARKING := y
endif

# Debug specific features
BUILD_DEBUG_VERSION := y
BUILD_DIAG_VERSION := y
CONFIG_FEATURE_TSO_DEBUG := y
CONFIG_MPC_UT_FRAMEWORK := y
CONFIG_FEATURE_EPPING := y
CONFIG_WLAN_NAPI_DEBUG := n
CONFIG_REMOVE_PKT_LOG := n
CONFIG_FEATURE_STATS_EXT := y
CONFIG_FEATURE_HTC_CREDIT_HISTORY := y
CONFIG_TRACE_RECORD_FEATURE := y
CONFIG_WLAN_FEATURE_P2P_DEBUG := y
CONFIG_WLAN_NUD_TRACKING := y
CONFIG_CP_STATS := y
CONFIG_FEATURE_FW_LOG_PARSING := y
CONFIG_PTT_SOCK_SVC_ENABLE := y
CONFIG_WMI_INTERFACE_EVENT_LOGGING := y
CONFIG_WLAN_FEATURE_LINK_LAYER_STATS := 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

# Features gets enabled on slub debug
CONFIG_WLAN_OBJMGR_DEBUG:= y
CONFIG_OL_RX_INDICATION_RECORD := y
CONFIG_TSOSEG_DEBUG := y
CONFIG_FEATURE_PKTLOG := y
CONFIG_WLAN_DEBUG_CRASH_INJECT := y
PANIC_ON_BUG := y
WLAN_WARN_ON_ASSERT := y
CONFIG_FEATURE_MEMDUMP_ENABLE := y
CONFIG_WLAN_LOGGING_SOCK_SVC := y
CONFIG_FEATURE_UNIT_TEST_SUSPEND := y
CONFIG_LEAK_DETECTION := y

ifeq ($(CONFIG_DEBUG_FS), y)
       CONFIG_WLAN_DEBUGFS := y
       CONFIG_WLAN_POWER_DEBUGFS := y
endif

# other features
WLAN_OPEN_SOURCE := y
CONFIG_ATH_PERF_PWR_OFFLOAD := y
CONFIG_ATH_BUS_PM := y
CONFIG_ATH_SUPPORT_FLOWMAC_MODULE := n
CONFIG_ATH_SUPPORT_SPECTRAL := n
CONFIG_LITTLE_ENDIAN := y
CONFIG_QCA_WIFI_FTM := 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 := y
CONFIG_160MHZ_SUPPORT := y
CONFIG_MCL := y
CONFIG_MCL_REGDB := y
CONFIG_WLAN_OFFLOAD_PACKETS := y
CONFIG_WLAN_SYNC_TSF := y
CONFIG_WLAN_FEATURE_DISA := y
CONFIG_WLAN_FEATURE_FIPS := y
CONFIG_WLAN_FEATURE_SAE := y

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

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

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

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