wlan: Add diag event for TDLS enable link

Add diag event for EVENT_WLAN_TDLS_ENABLE_LINK.
This event contains below info:
- peer mac address
- Does peer supports off channel
- Is off channel configured
- Is off channel established

Change-Id: Ib491d8ac1d8a7850a050bf14a60b6eb08ab94078
CRs-Fixed: 934449
diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h
index 532b5ec..c2c5e05 100644
--- a/CORE/HDD/inc/wlan_hdd_tdls.h
+++ b/CORE/HDD/inc/wlan_hdd_tdls.h
@@ -418,6 +418,10 @@
 #ifdef FEATURE_WLAN_DIAG_SUPPORT
 void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
                                       uint8_t *peer_mac);
+void hdd_wlan_tdls_enable_link_event(const uint8_t *peer_mac,
+                           uint8_t is_off_chan_supported,
+                           uint8_t is_off_chan_configured,
+                           uint8_t is_off_chan_established);
 #else
 static inline
 void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
@@ -425,6 +429,14 @@
 {
     return;
 }
+static inline
+void hdd_wlan_tdls_enable_link_event(const uint8_t *peer_mac,
+                           uint8_t is_off_chan_supported,
+                           uint8_t is_off_chan_configured,
+                           uint8_t is_off_chan_established)
+{
+    return;
+}
 #endif /* FEATURE_WLAN_DIAG_SUPPORT */
 
 int wlan_hdd_tdls_set_force_peer(hdd_adapter_t *pAdapter,
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 99c7774..a5adaea 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -18178,6 +18178,10 @@
                 /* stop TCP delack timer if TDLS is enable  */
                 set_bit(WLAN_TDLS_MODE, &pHddCtx->mode);
                 hdd_manage_delack_timer(pHddCtx);
+                hdd_wlan_tdls_enable_link_event(peer,
+                           pTdlsPeer->isOffChannelSupported,
+                           pTdlsPeer->isOffChannelConfigured,
+                           pTdlsPeer->isOffChannelEstablished);
             }
             break;
         case NL80211_TDLS_DISABLE_LINK:
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index a6c3469..6e07a9c 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -92,8 +92,46 @@
    WLAN_VOS_DIAG_EVENT_REPORT(&tdls_tear_down,
        EVENT_WLAN_TDLS_TEARDOWN);
 }
+
+/**
+ * hdd_wlan_tdls_enable_link_event()- send TDLS enable link event
+ *
+ * @peer_mac: peer mac
+ * @is_off_chan_supported: Does peer supports off chan
+ * @is_off_chan_configured: If off channel is configured
+ * @is_off_chan_established: If off chan is established
+ *
+ * This Function send TDLS enable link diag event
+ *
+ * Return: void.
+ */
+
+void hdd_wlan_tdls_enable_link_event(const uint8_t *peer_mac,
+                           uint8_t is_off_chan_supported,
+                           uint8_t is_off_chan_configured,
+                           uint8_t is_off_chan_established)
+{
+   WLAN_VOS_DIAG_EVENT_DEF(tdls_event,
+                 struct vos_event_tdls_enable_link);
+   vos_mem_zero(&tdls_event,
+                          sizeof(tdls_event));
+
+   vos_mem_copy(tdls_event.peer_mac,
+                     peer_mac, HDD_MAC_ADDR_LEN);
+
+   tdls_event.is_off_chan_supported =
+                  is_off_chan_supported;
+   tdls_event.is_off_chan_configured =
+                  is_off_chan_configured;
+   tdls_event.is_off_chan_established =
+                  is_off_chan_established;
+
+   WLAN_VOS_DIAG_EVENT_REPORT(&tdls_event,
+       EVENT_WLAN_TDLS_ENABLE_LINK);
+}
 #endif
 
+
 /**
  * wlan_hdd_tdls_disable_offchan_and_teardown_links - Disable offchannel
  * and teardown TDLS links