wlan: Add diag event for scan blocked by TDLS.

Add diag event for EVENT_TDLS_SCAN_BLOCK. This event indicates if
scan is blocked because of TDLS.

Change-Id: I00dd9d2a54cbe054b400b2d1cb74c0e14b9a13d7
CRs-Fixed: 934456
diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h
index c2c5e05..e19f7f5 100644
--- a/CORE/HDD/inc/wlan_hdd_tdls.h
+++ b/CORE/HDD/inc/wlan_hdd_tdls.h
@@ -422,6 +422,8 @@
                            uint8_t is_off_chan_supported,
                            uint8_t is_off_chan_configured,
                            uint8_t is_off_chan_established);
+void hdd_wlan_block_scan_by_tdls(void);
+
 #else
 static inline
 void hdd_send_wlan_tdls_teardown_event(uint32_t reason,
@@ -437,6 +439,11 @@
 {
     return;
 }
+static inline
+void hdd_wlan_block_scan_by_tdls(void)
+{
+    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 a5adaea..a116087 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -13213,15 +13213,15 @@
                                           dev,
 #endif
                                           request);
-    if(status <= 0)
+    if (status <= 0)
     {
-       if(!status)
+       if (!status)
            hddLog(VOS_TRACE_LEVEL_ERROR, "%s: TDLS in progress."
                   "scan rejected  %d", __func__, status);
        else
            hddLog(VOS_TRACE_LEVEL_ERROR, "%s: TDLS teardown is ongoing %d",
                                           __func__, status);
-
+       hdd_wlan_block_scan_by_tdls();
        return status;
     }
 #endif
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 6e07a9c..32637ef 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -129,6 +129,30 @@
    WLAN_VOS_DIAG_EVENT_REPORT(&tdls_event,
        EVENT_WLAN_TDLS_ENABLE_LINK);
 }
+
+/**
+ * hdd_wlan_block_scan_by_tdls()- send event
+ * if scan is blocked by tdls
+ *
+ * This Function send send diag event if scan is
+ * blocked by tdls
+ *
+ * Return: void.
+ */
+
+void hdd_wlan_block_scan_by_tdls(void)
+{
+  WLAN_VOS_DIAG_EVENT_DEF(tdls_scan_block_status,
+                     struct vos_event_tdls_scan_rejected);
+
+  vos_mem_zero(&tdls_scan_block_status,
+               sizeof(tdls_scan_block_status));
+
+  tdls_scan_block_status.status = true;
+  WLAN_VOS_DIAG_EVENT_REPORT(&tdls_scan_block_status,
+                                 EVENT_TDLS_SCAN_BLOCK);
+}
+
 #endif
 
 
diff --git a/CORE/VOSS/inc/event_defs.h b/CORE/VOSS/inc/event_defs.h
index f55ec07..0b497b9 100644
--- a/CORE/VOSS/inc/event_defs.h
+++ b/CORE/VOSS/inc/event_defs.h
@@ -1908,6 +1908,7 @@
   EVENT_WLAN_TDLS_ENABLE_LINK = 0XAB6,
   EVENT_WLAN_SUSPEND_RESUME = 0xAB7,
   EVENT_OFFLOAD_REQ = 0xAB8,
+  EVENT_TDLS_SCAN_BLOCK = 0xAB9,
   EVENT_NEXT_UNUSED_EVENT,
   EVENT_RSVD_START = 0x0800,
   EVENT_RSVD_END   = 0x083F,
diff --git a/CORE/VOSS/inc/vos_diag_core_event.h b/CORE/VOSS/inc/vos_diag_core_event.h
index ceebb71..8632a66 100644
--- a/CORE/VOSS/inc/vos_diag_core_event.h
+++ b/CORE/VOSS/inc/vos_diag_core_event.h
@@ -335,6 +335,18 @@
    uint8_t state;
 };
 
+/**
+ * struct vos_event_tdls_scan_rejected - scan
+ * rejected due to tdls
+ * @status: rejected status
+ *
+ * This structure contains scan rejected due to
+ * tdls event info
+ */
+struct vos_event_tdls_scan_rejected {
+    uint8_t status;
+};
+
 /*-------------------------------------------------------------------------
   Event ID: EVENT_WLAN_LOG_COMPLETE
   ------------------------------------------------------------------------*/