qcacld-3.0: Create new files for supporting NAN data path feature

Add new files for supporting NAN data path feature.

Propagation from qcacld-2.0 to qcacld-3.0

CRs-Fixed: 962367
Change-Id: If12d15789659d04559a9d65d6b7016d4cc595fcf
diff --git a/Kbuild b/Kbuild
old mode 100755
new mode 100644
index 74e828b..cf509b1
--- a/Kbuild
+++ b/Kbuild
@@ -110,24 +110,28 @@
 		endif
 	endif
 
-
-        #Flag to enable Protected Managment Frames (11w) feature
-        ifeq ($(CONFIG_ROME_IF),usb)
-                CONFIG_WLAN_FEATURE_11W := y
-        endif
-        ifeq ($(CONFIG_ROME_IF),sdio)
-                CONFIG_WLAN_FEATURE_11W := y
-        endif
+	#Flag to enable Protected Managment Frames (11w) feature
+	ifeq ($(CONFIG_ROME_IF),usb)
+		CONFIG_WLAN_FEATURE_11W := y
+	endif
+	ifeq ($(CONFIG_ROME_IF),sdio)
+		CONFIG_WLAN_FEATURE_11W := y
+	endif
 
 	ifneq ($(CONFIG_MOBILE_ROUTER), y)
 		#Flag to enable NAN
 		CONFIG_QCACLD_FEATURE_NAN := y
 	endif
 
-        #Flag to enable Linux QCMBR feature as default feature
-        ifeq ($(CONFIG_ROME_IF),usb)
-                CONFIG_LINUX_QCMBR :=y
-        endif
+	ifneq ($(CONFIG_MOBILE_ROUTER), y)
+		#Flag to enable NAN Data path
+		CONFIG_WLAN_FEATURE_NAN_DATAPATH := y
+	endif
+
+	#Flag to enable Linux QCMBR feature as default feature
+	ifeq ($(CONFIG_ROME_IF),usb)
+		CONFIG_LINUX_QCMBR :=y
+	endif
 
 	CONFIG_MPC_UT_FRAMEWORK := y
 
@@ -392,6 +396,10 @@
 HDD_OBJS +=	$(HDD_SRC_DIR)/wlan_hdd_subnet_detect.o
 endif
 
+ifeq ($(CONFIG_WLAN_FEATURE_NAN_DATAPATH), y)
+HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_nan_datapath.o
+endif
+
 ########### HOST DIAG LOG ###########
 HOST_DIAG_LOG_DIR :=	core/utils/host_diag_log
 
@@ -426,7 +434,8 @@
 		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/dph \
 		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/include \
 		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/pe/include \
-		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/pe/lim
+		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/pe/lim \
+		-I$(WLAN_ROOT)/$(MAC_SRC_DIR)/pe/nan
 
 MAC_CFG_OBJS := $(MAC_SRC_DIR)/cfg/cfg_api.o \
 		$(MAC_SRC_DIR)/cfg/cfg_debug.o \
@@ -478,6 +487,10 @@
 MAC_LIM_OBJS += $(MAC_SRC_DIR)/pe/lim/lim_process_tdls.o
 endif
 
+ifeq ($(CONFIG_WLAN_FEATURE_NAN_DATAPATH), y)
+MAC_NDP_OBJS += $(MAC_SRC_DIR)/pe/nan/nan_datapath.o
+endif
+
 ifeq ($(CONFIG_QCACLD_WLAN_LFR2),y)
 	MAC_LIM_OBJS += $(MAC_SRC_DIR)/pe/lim/lim_process_mlm_host_roam.o \
 		$(MAC_SRC_DIR)/pe/lim/lim_send_frames_host_roam.o \
@@ -498,7 +511,8 @@
 		$(MAC_DPH_OBJS) \
 		$(MAC_LIM_OBJS) \
 		$(MAC_SCH_OBJS) \
-		$(MAC_RRM_OBJS)
+		$(MAC_RRM_OBJS) \
+		$(MAC_NDP_OBJS)
 
 ############ SAP ############
 SAP_DIR :=	core/sap
@@ -576,13 +590,18 @@
 SME_NAN_OBJS = $(SME_SRC_DIR)/nan/nan_api.o
 endif
 
+ifeq ($(CONFIG_WLAN_FEATURE_NAN_DATAPATH), y)
+SME_NDP_OBJS += $(SME_SRC_DIR)/nan/nan_datapath_api.o
+endif
+
 SME_OBJS :=	$(SME_CMN_OBJS) \
 		$(SME_CSR_OBJS) \
 		$(SME_OEM_DATA_OBJS) \
 		$(SME_P2P_OBJS) \
 		$(SME_QOS_OBJS) \
 		$(SME_RRM_OBJS) \
-		$(SME_NAN_OBJS)
+		$(SME_NAN_OBJS) \
+		$(SME_NDP_OBJS)
 
 ############ NLINK ############
 NLINK_DIR     :=	core/utils/nlink
@@ -831,6 +850,10 @@
 WMA_INC :=	-I$(WLAN_ROOT)/$(WMA_INC_DIR) \
 		-I$(WLAN_ROOT)/$(WMA_SRC_DIR)
 
+ifeq ($(CONFIG_WLAN_FEATURE_NAN_DATAPATH), y)
+WMA_NDP_OBJS += $(WMA_SRC_DIR)/wma_nan_datapath.o
+endif
+
 WMA_OBJS :=	$(WMA_SRC_DIR)/wma_main.o \
 		$(WMA_SRC_DIR)/wma_scan_roam.o \
 		$(WMA_SRC_DIR)/wma_dev_if.o \
@@ -841,7 +864,8 @@
 		$(WMA_SRC_DIR)/wma_features.o \
 		$(WMA_SRC_DIR)/wma_dfs_interface.o \
 		$(WMA_SRC_DIR)/wma_ocb.o \
-		$(WMA_SRC_DIR)/wlan_qct_wma_legacy.o
+		$(WMA_SRC_DIR)/wlan_qct_wma_legacy.o\
+		$(WMA_NDP_OBJS)
 
 ifeq ($(CONFIG_MPC_UT_FRAMEWORK),y)
 WMA_OBJS +=	$(WMA_SRC_DIR)/wma_utils_ut.o
@@ -1451,6 +1475,10 @@
 CDEFINES += -DFEATURE_WLAN_MCC_TO_SCC_SWITCH
 endif
 
+ifeq ($(CONFIG_WLAN_FEATURE_NAN_DATAPATH), y)
+CDEFINES += -DWLAN_FEATURE_NAN_DATAPATH
+endif
+
 KBUILD_CPPFLAGS += $(CDEFINES)
 
 # Currently, for versions of gcc which support it, the kernel Makefile
diff --git a/Kconfig b/Kconfig
index 4ba9570..bac7403 100644
--- a/Kconfig
+++ b/Kconfig
@@ -37,6 +37,11 @@
 	bool "Enable NAN feature"
 	default n
 
+config WLAN_FEATURE_NAN_DATAPATH
+	bool "Enable NaN Data Path feature"
+	depends on QCACLD_FEATURE_NAN
+	default n
+
 config QCACLD_FEATURE_GREEN_AP
 	bool "Enable Green AP feature"
 	default n
diff --git a/core/hdd/src/wlan_hdd_nan_datapath.c b/core/hdd/src/wlan_hdd_nan_datapath.c
new file mode 100644
index 0000000..3c955f3
--- /dev/null
+++ b/core/hdd/src/wlan_hdd_nan_datapath.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: wlan_hdd_nan_datapath.c
+ *
+ * WLAN Host Device Driver nan datapath API implementation
+ */
+#include "wlan_hdd_nan_datapath.h"
diff --git a/core/hdd/src/wlan_hdd_nan_datapath.h b/core/hdd/src/wlan_hdd_nan_datapath.h
new file mode 100644
index 0000000..c9295cb
--- /dev/null
+++ b/core/hdd/src/wlan_hdd_nan_datapath.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: wlan_hdd_nan_datapath.h
+ *
+ * WLAN Host Device Driver nan datapath API specification
+ */
+
+#ifndef __WLAN_HDD_NAN_DATAPATH_H
+#define __WLAN_HDD_NAN_DATAPATH_H
+
+#endif /* __WLAN_HDD_NAN_DATAPATH_H */
+
diff --git a/core/mac/src/pe/nan/nan_datapath.c b/core/mac/src/pe/nan/nan_datapath.c
new file mode 100644
index 0000000..d9f6a5f
--- /dev/null
+++ b/core/mac/src/pe/nan/nan_datapath.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: nan_datapath.c
+ *
+ * MAC NAN Data path API implementation
+ */
+
+#include "nan_datapath.h"
+
diff --git a/core/mac/src/pe/nan/nan_datapath.h b/core/mac/src/pe/nan/nan_datapath.h
new file mode 100644
index 0000000..d4f2398
--- /dev/null
+++ b/core/mac/src/pe/nan/nan_datapath.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: nan_datapath.h
+ *
+ * MAC NAN Data path API specification
+ */
+
+#ifndef __MAC_NAN_DATAPATH_H
+#define __MAC_NAN_DATAPATH_H
+
+#endif /* __MAC_NAN_DATAPATH_H */
+
diff --git a/core/sme/inc/sme_nan_datapath.h b/core/sme/inc/sme_nan_datapath.h
new file mode 100644
index 0000000..9b91f0a
--- /dev/null
+++ b/core/sme/inc/sme_nan_datapath.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: sme_nan_datapath.h
+ *
+ * SME NAN Data path API specification
+ */
+
+#ifndef __SME_NAN_DATAPATH_H
+#define __SME_NAN_DATAPATH_H
+
+#endif /* __SME_NAN_DATAPATH_H */
+
+
diff --git a/core/sme/src/nan/nan_datapath_api.c b/core/sme/src/nan/nan_datapath_api.c
new file mode 100644
index 0000000..56a8a99
--- /dev/null
+++ b/core/sme/src/nan/nan_datapath_api.c
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: nan_datapath_api.c
+ *
+ * SME NAN Data path API implementation
+ */
+#include "sme_nan_datapath.h"
diff --git a/core/wma/src/wma_nan_datapath.c b/core/wma/src/wma_nan_datapath.c
new file mode 100644
index 0000000..6deebb2
--- /dev/null
+++ b/core/wma/src/wma_nan_datapath.c
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: wma_nan_datapath.c
+ *
+ * WMA NAN Data path API implementation
+ */
+
+#include "wma_nan_datapath.h"
+
diff --git a/core/wma/src/wma_nan_datapath.h b/core/wma/src/wma_nan_datapath.h
new file mode 100644
index 0000000..b07810b
--- /dev/null
+++ b/core/wma/src/wma_nan_datapath.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016 The Linux Foundation. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: wma_nan_datapath.h
+ *
+ * WMA NAN Data path API specification
+ */
+
+#ifndef __WMA_NAN_DATAPATH_H
+#define __WMA_NAN_DATAPATH_H
+
+#endif /* __WMA_NAN_DATAPATH_H */