qcacld-3.0: Handle NUD events within driver

Currently NUD events are used by Framework to detect
the Network Reachability. Framework issues disconnection
for NUD_FAILED event.

Now, NUD events are tracked within driver to detect the
reachability and based on TxRx traffic, driver takes decision
to issue disconnection.

Change-Id: I461610c220288ff1fd718bb7bc2dd8375588505c
CRs-Fixed: 2195796
diff --git a/Kbuild b/Kbuild
index 72236e0..d6a9805 100644
--- a/Kbuild
+++ b/Kbuild
@@ -421,6 +421,10 @@
 #Flag to enable p2p debug feature
 CONFIG_WLAN_FEATURE_P2P_DEBUG := 1
 
+#Flag to enable nud tracking feature
+CONFIG_WLAN_NUD_TRACKING := 1
+
+
 ifeq ($(CONFIG_CFG80211),y)
 HAVE_CFG80211 := 1
 else
@@ -558,6 +562,10 @@
 HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_rx_monitor.o
 endif
 
+ifeq ($(CONFIG_WLAN_NUD_TRACKING), 1)
+HDD_OBJS += $(HDD_SRC_DIR)/wlan_hdd_nud_tracking.o
+endif
+
 ########### HOST DIAG LOG ###########
 HOST_DIAG_LOG_DIR :=	$(WLAN_COMMON_ROOT)/utils/host_diag_log
 
@@ -1876,6 +1884,7 @@
 endif
 ####################################
 
+
 ifeq ($(CONFIG_FEATURE_HTC_CREDIT_HISTORY), 1)
 CDEFINES += -DFEATURE_HTC_CREDIT_HISTORY
 endif
@@ -2552,6 +2561,11 @@
 CDEFINES += -DENABLE_SMMU_S1_TRANSLATION
 endif
 
+#Flag to enable NUD tracking
+ifeq ($(CONFIG_WLAN_NUD_TRACKING), 1)
+CDEFINES += -DWLAN_NUD_TRACKING
+endif
+
 KBUILD_CPPFLAGS += $(CDEFINES)
 
 # Currently, for versions of gcc which support it, the kernel Makefile