qcacld-3.0: Featurize MCL only WMI APIs

Featurize MCL only WMI APIs by compiling them as a separate source.
It enables profiles/configs to selectively compile the WMI APIs
based on whether the feature is required or not.
Featurize WMI APIs and TLVs that are specific to MCL -
- DSRC
- NAN
- P2P
- PMO
- roaming
- concurrency
- STA
- Generic MCL specific WMI (STA)

Change-Id: I3b005b8f60491c7d27cf221b7505116e1b9c1a38
CRs-Fixed: 2333916
diff --git a/Kbuild b/Kbuild
index 2ea9998..c09b1c9 100644
--- a/Kbuild
+++ b/Kbuild
@@ -14,6 +14,7 @@
 	WLAN_COMMON_ROOT := ../qca-wifi-host-cmn
 	WLAN_COMMON_INC := $(WLAN_ROOT)/$(WLAN_COMMON_ROOT)
 endif
+
 WLAN_COMMON_ROOT ?= ../qca-wifi-host-cmn
 WLAN_COMMON_INC ?= $(WLAN_ROOT)/$(WLAN_COMMON_ROOT)
 
@@ -1051,6 +1052,7 @@
 
 ifeq ($(CONFIG_POWER_MANAGEMENT_OFFLOAD), y)
 WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_pmo_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_pmo_tlv.o
 endif
 
 ifeq ($(CONFIG_QCACLD_FEATURE_APF), y)
@@ -1076,11 +1078,41 @@
 WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_twt_tlv.o
 endif
 
+ifeq ($(CONFIG_WLAN_FEATURE_DSRC), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_ocb_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_ocb_tlv.o
+endif
+
 ifeq ($(CONFIG_FEATURE_WLAN_EXTSCAN), y)
 WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_extscan_api.o
 WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_extscan_tlv.o
 endif
 
+ifeq ($(CONFIG_NAN_CONVERGENCE), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_nan_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_nan_tlv.o
+endif
+
+ifeq ($(CONFIG_CONVERGED_P2P_ENABLE), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_p2p_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_p2p_tlv.o
+endif
+
+ifeq ($(CONFIG_WMI_ROAM_SUPPORT), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_roam_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_roam_tlv.o
+endif
+
+ifeq ($(CONFIG_WMI_CONCURRENCY_SUPPORT), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_concurrency_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_concurrency_tlv.o
+endif
+
+ifeq ($(CONFIG_WMI_STA_SUPPORT), y)
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_sta_api.o
+WMI_OBJS += $(WMI_OBJ_DIR)/wmi_unified_sta_tlv.o
+endif
+
 ########### FWLOG ###########
 FWLOG_DIR := $(WLAN_COMMON_ROOT)/utils/fwlog
 
@@ -2313,6 +2345,11 @@
 cppflags-$(CONFIG_FEATURE_P2P_LISTEN_OFFLOAD) += -DFEATURE_P2P_LISTEN_OFFLOAD
 endif
 
+#Flags to enable/disable WMI APIs
+cppflags-$(CONFIG_WMI_ROAM_SUPPORT) += -DWMI_ROAM_SUPPORT
+cppflags-$(CONFIG_WMI_CONCURRENCY_SUPPORT) += -DWMI_CONCURRENCY_SUPPORT
+cppflags-$(CONFIG_WMI_STA_SUPPORT) += -DWMI_STA_SUPPORT
+
 # Dummy flag for WIN/MCL converged data path compilation
 cppflags-y += -DDP_PRINT_ENABLE=0
 cppflags-y += -DATH_SUPPORT_WRAP=0
diff --git a/configs/default_defconfig b/configs/default_defconfig
index 87793ee..eb0c4f0 100644
--- a/configs/default_defconfig
+++ b/configs/default_defconfig
@@ -625,6 +625,11 @@
 CONFIG_FEATURE_SAP_COND_CHAN_SWITCH := y
 CONFIG_FEATURE_P2P_LISTEN_OFFLOAD := y
 
+#Flags to enable/disable WMI APIs
+CONFIG_WMI_ROAM_SUPPORT := y
+CONFIG_WMI_CONCURRENCY_SUPPORT := y
+CONFIG_WMI_STA_SUPPORT := y
+
 ifeq ($(CONFIG_HELIUMPLUS), y)
 ifneq ($(CONFIG_FORCE_ALLOC_FROM_DMA_ZONE), y)
 CONFIG_ENABLE_DEBUG_ADDRESS_MARKING := y
diff --git a/configs/genoa.common b/configs/genoa.common
index fb1a63f..0e6e276 100644
--- a/configs/genoa.common
+++ b/configs/genoa.common
@@ -136,6 +136,11 @@
 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
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h
index a0e722c..91a4785 100644
--- a/core/wma/inc/wma.h
+++ b/core/wma/inc/wma.h
@@ -2554,6 +2554,7 @@
 QDF_STATUS wma_config_bmiss_bcnt_params(uint32_t vdev_id, uint32_t first_cnt,
 		uint32_t final_cnt);
 
+#ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
 /**
  * wma_check_and_set_wake_timer(): checks all interfaces and if any interface
  * has install_key pending, sets timer pattern in fw to wake up host after
@@ -2563,6 +2564,7 @@
  * Return: None
  */
 void wma_check_and_set_wake_timer(uint32_t time);
+#endif
 
 /**
  * wma_rx_invalid_peer_ind(): the callback for DP to notify WMA layer
diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c
index cc2649f..08311c0 100644
--- a/core/wma/src/wma_features.c
+++ b/core/wma/src/wma_features.c
@@ -1124,6 +1124,7 @@
 	return QDF_STATUS_SUCCESS;
 }
 
+#ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
 /**
  * wma_check_and_set_wake_timer(): checks all interfaces and if any interface
  * has install_key pending, sets timer pattern in fw to wake up host after
@@ -1187,6 +1188,7 @@
 
 	return 0;
 }
+#endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
 
 #ifdef WLAN_FEATURE_NAN
 /**