Fix for the tdls mutiple peer instability issues

Send the correct staIdx as assigned during tdls add sta from
lim -> wdi -> firmware when tdls change sta is called to update
the capabilities.
Add a wait for tdls del sta to complete.
Don't deregister tdls station from TL if it's not registered.
Introduce a new state i.e. eTDLS_LINK_TEARING and change the
link state to tearing while sending teardown indication to
supplicant.

CRs-Fixed: 468574
Change-Id: I59d0d08a6362077f331f87240e8e1d7240e5b430
diff --git a/CORE/HDD/inc/wlan_hdd_tdls.h b/CORE/HDD/inc/wlan_hdd_tdls.h
index 04059cb..ac3ca96 100644
--- a/CORE/HDD/inc/wlan_hdd_tdls.h
+++ b/CORE/HDD/inc/wlan_hdd_tdls.h
@@ -53,6 +53,9 @@
 #define TDLS_MAX_SCAN_SCHEDULE          10
 #define TDLS_DELAY_SCAN_PER_CONNECTION 100
 
+#define TDLS_IS_CONNECTED(peer)  \
+        ((eTDLS_LINK_CONNECTED == (peer)->link_status) || \
+         (eTDLS_LINK_TEARING == (peer)->link_status))
 typedef struct
 {
     tANI_U32    tdls;
@@ -98,6 +101,7 @@
     eTDLS_LINK_DISCOVERED,
     eTDLS_LINK_CONNECTING,
     eTDLS_LINK_CONNECTED,
+    eTDLS_LINK_TEARING,
 } tTDLSLinkStatus;
 
 typedef struct {
@@ -243,5 +247,9 @@
 void wlan_hdd_tdls_timer_restart(hdd_adapter_t *pAdapter,
                                  vos_timer_t *timer,
                                  v_U32_t expirationTime);
+void wlan_hdd_tdls_indicate_teardown(hdd_adapter_t *pAdapter,
+                                           hddTdlsPeer_t *curr_peer,
+                                           tANI_U16 reason);
+
 
 #endif // __HDD_TDSL_H