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;