qcacmn: Restructure TDLS function to fix the compilation issue

When TDLS disabled at the build level, it triggers
build failures in some of the projects, which does
not support TDLS feature.
Restructure the TDLS function to avoid build
failures, when TDLS is not enabled.

Change-Id: I3b63546f22d0187fb42d400fd7e15ff7a3d64653
CRs-Fixed: 2056022
diff --git a/os_if/linux/tdls/inc/wlan_cfg80211_tdls.h b/os_if/linux/tdls/inc/wlan_cfg80211_tdls.h
index 812c8bc..9dc2da3 100644
--- a/os_if/linux/tdls/inc/wlan_cfg80211_tdls.h
+++ b/os_if/linux/tdls/inc/wlan_cfg80211_tdls.h
@@ -194,6 +194,16 @@
 	struct tdls_rx_mgmt_frame *rx_frame);
 
 /**
+ * hdd_notify_tdls_reset_adapter() - notify reset adapter to TDLS
+ * @vdev: vdev object manager
+ *
+ * Notify hdd reset adapter to TDLS component
+ *
+ * Return: None
+ */
+void hdd_notify_tdls_reset_adapter(struct wlan_objmgr_vdev *vdev);
+
+/**
  * hdd_notify_sta_connect() - notify sta connect to TDLS
  * @session_id: pointer to soc object
  * @tdls_chan_swit_prohibited: indicates channel switch capability
@@ -237,6 +247,11 @@
 
 #else
 static inline void
+hdd_notify_tdls_reset_adapter(struct wlan_objmgr_vdev *vdev)
+{
+}
+
+static inline void
 hdd_notify_sta_connect(uint8_t session_id,
 		       bool tdls_chan_swit_prohibited,
 		       bool tdls_prohibited,
diff --git a/os_if/linux/tdls/src/wlan_cfg80211_tdls.c b/os_if/linux/tdls/src/wlan_cfg80211_tdls.c
index 7aa155a..27803c7 100644
--- a/os_if/linux/tdls/src/wlan_cfg80211_tdls.c
+++ b/os_if/linux/tdls/src/wlan_cfg80211_tdls.c
@@ -104,6 +104,11 @@
 	cfg80211_info("TDLS teardown completion status %ld ", rc);
 }
 
+void hdd_notify_tdls_reset_adapter(struct wlan_objmgr_vdev *vdev)
+{
+	ucfg_tdls_notify_reset_adapter(vdev);
+}
+
 void
 hdd_notify_sta_connect(uint8_t session_id,
 		       bool tdls_chan_swit_prohibited,
diff --git a/umac/tdls/core/src/wlan_tdls_main.c b/umac/tdls/core/src/wlan_tdls_main.c
index 5ce0596..b894ba7 100644
--- a/umac/tdls/core/src/wlan_tdls_main.c
+++ b/umac/tdls/core/src/wlan_tdls_main.c
@@ -290,6 +290,9 @@
 	case TDLS_CMD_TEARDOWN_LINKS:
 		tdls_teardown_connections(msg->bodyptr);
 		break;
+	case TDLS_NOTIFY_RESET_ADAPTERS:
+		tdls_notify_reset_adapter(msg->bodyptr);
+		break;
 	default:
 		break;
 	}
@@ -982,6 +985,31 @@
 	return status;
 }
 
+static void tdls_process_reset_adapter(struct wlan_objmgr_vdev *vdev)
+{
+	struct tdls_vdev_priv_obj *tdls_vdev;
+
+	tdls_vdev = wlan_vdev_get_tdls_vdev_obj(vdev);
+	if (!tdls_vdev)
+		return;
+	tdls_timers_stop(tdls_vdev);
+}
+
+void tdls_notify_reset_adapter(struct wlan_objmgr_vdev *vdev)
+{
+	if (!vdev) {
+		QDF_ASSERT(0);
+		return;
+	}
+
+	if (QDF_STATUS_SUCCESS != wlan_objmgr_vdev_try_get_ref(vdev,
+						WLAN_TDLS_NB_ID))
+		return;
+
+	tdls_process_reset_adapter(vdev);
+	wlan_objmgr_vdev_release_ref(vdev, WLAN_TDLS_NB_ID);
+}
+
 void tdls_peers_deleted_notification(struct wlan_objmgr_vdev *vdev,
 					 uint32_t session_id)
 {
diff --git a/umac/tdls/core/src/wlan_tdls_main.h b/umac/tdls/core/src/wlan_tdls_main.h
index f9f657a..58aa9cd 100644
--- a/umac/tdls/core/src/wlan_tdls_main.h
+++ b/umac/tdls/core/src/wlan_tdls_main.h
@@ -576,6 +576,16 @@
 QDF_STATUS tdls_notify_sta_disconnect(struct tdls_sta_notify_params *notify);
 
 /**
+ * tdls_notify_reset_adapter() - notify reset adapter
+ * @vdev: vdev object manager
+ *
+ * Notify TDLS about the adapter reset
+ *
+ * Return: None
+ */
+void tdls_notify_reset_adapter(struct wlan_objmgr_vdev *vdev);
+
+/**
  * tdls_peers_deleted_notification() - peer delete notification
  * @vdev: vdev object
  * @session_id: session id
diff --git a/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h b/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h
index 974fca3..4691869 100644
--- a/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h
+++ b/umac/tdls/dispatcher/inc/wlan_tdls_public_structs.h
@@ -172,6 +172,15 @@
  * @TDLS_CMD_REMOVE_FORCE_PEER: remove external peer
  * @TDLS_CMD_STATS_UPDATE: update tdls stats
  * @TDLS_CMD_CONFIG_UPDATE: config tdls
+ * @TDLS_CMD_SCAN_DONE: scon done event
+ * @TDLS_CMD_SET_RESPONDER: responder event
+ * @TDLS_NOTIFY_STA_CONNECTION: notify sta connection
+ * @TDLS_NOTIFY_STA_DISCONNECTION: notify sta disconnection
+ * @TDLS_CMD_SET_TDLS_MODE: set the tdls mode
+ * @TDLS_CMD_SESSION_INCREMENT: notify session increment
+ * @TDLS_CMD_SESSION_DECREMENT: notify session decrement
+ * @TDLS_CMD_TEARDOWN_LINKS: notify teardown
+ * @TDLS_NOTIFY_RESET_ADAPTERS: notify adapater reset
  */
 enum tdls_command_type {
 	TDLS_CMD_TX_ACTION = 1,
@@ -191,6 +200,7 @@
 	TDLS_CMD_SESSION_INCREMENT,
 	TDLS_CMD_SESSION_DECREMENT,
 	TDLS_CMD_TEARDOWN_LINKS,
+	TDLS_NOTIFY_RESET_ADAPTERS,
 };
 
 /**
diff --git a/umac/tdls/dispatcher/inc/wlan_tdls_ucfg_api.h b/umac/tdls/dispatcher/inc/wlan_tdls_ucfg_api.h
index 5d99669..0a06658 100644
--- a/umac/tdls/dispatcher/inc/wlan_tdls_ucfg_api.h
+++ b/umac/tdls/dispatcher/inc/wlan_tdls_ucfg_api.h
@@ -147,6 +147,14 @@
 QDF_STATUS ucfg_tdls_teardown_links(struct wlan_objmgr_vdev *vdev);
 
 /**
+ * ucfg_tdls_notify_reset_adapter() - notify reset adapter
+ * @vdev: vdev object manager
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS ucfg_tdls_notify_reset_adapter(struct wlan_objmgr_vdev *vdev);
+
+/**
  * ucfg_tdls_notify_sta_connect() - notify sta connect
  * @notify_info: sta notification info
  *
diff --git a/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c b/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
index 9bb8535..67517aa 100644
--- a/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
+++ b/umac/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
@@ -569,6 +569,23 @@
 	return status;
 }
 
+QDF_STATUS ucfg_tdls_notify_reset_adapter(struct wlan_objmgr_vdev *vdev)
+{
+	QDF_STATUS status;
+	struct scheduler_msg msg = {0, };
+
+	if (!vdev) {
+		tdls_err("vdev is NULL ");
+		return QDF_STATUS_E_NULL_VALUE;
+	}
+	tdls_debug("Enter ");
+	msg.bodyptr = vdev;
+	msg.callback = tdls_process_cmd;
+	msg.type = TDLS_NOTIFY_RESET_ADAPTERS;
+	status = scheduler_post_msg(QDF_MODULE_ID_OS_IF, &msg);
+	return status;
+}
+
 QDF_STATUS ucfg_tdls_notify_sta_connect(
 			struct tdls_sta_notify_params *notify_info)
 {