TDLS: Fixed problem of TDLS teardown

Set idle timer correctly based on tx/rx stats and initiate teardown.

CRs-Fixed: 445065
Change-Id: Iec18488e0feb859a4a7a9b882937ea563585ffb3
diff --git a/CORE/HDD/src/wlan_hdd_tx_rx.c b/CORE/HDD/src/wlan_hdd_tx_rx.c
index 65787cd..b083820 100644
--- a/CORE/HDD/src/wlan_hdd_tx_rx.c
+++ b/CORE/HDD/src/wlan_hdd_tx_rx.c
@@ -1080,7 +1080,7 @@
                       "extract mac:%x %x %x %x %x %x",
                       mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] );
 
-            wlan_hdd_tdls_add_peer_to_list(key, mac);
+            wlan_hdd_tdls_add_peer_to_list(key, mac, 1);
         } else {
             VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
                        "packet da is bssid, not adding to peer list");
@@ -1383,6 +1383,31 @@
          return eHAL_STATUS_FAILURE;
       }
 
+#ifdef FEATURE_WLAN_TDLS
+    {
+        hdd_station_ctx_t *pHddStaCtx = &pAdapter->sessionCtx.station;
+        u8 key;
+        u8 mac[6];
+
+        key = wlan_hdd_tdls_extract_sa(skb, mac);
+
+        if (vos_is_macaddr_broadcast((v_MACADDR_t *)mac)) {
+            VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
+                      "rx broadcast packet, not adding to peer list");
+        } else if (memcmp(pHddStaCtx->conn_info.bssId,
+                            mac, 6) != 0) {
+            VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
+                      "rx extract mac:%x %x %x %x %x %x",
+                      mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] );
+
+            wlan_hdd_tdls_add_peer_to_list(key, mac, 0);
+        } else {
+            VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_MED,
+                       "rx packet sa is bssid, not adding to peer list");
+        }
+    }
+#endif
+
       skb->dev = pAdapter->dev;
       skb->protocol = eth_type_trans(skb, skb->dev);
       skb->ip_summed = CHECKSUM_NONE;