wlan: check if tdls exists when tdls peer timer expires.
when wlan_hdd_tdls_initiator_wait_cb gets called, the tdls peer
might not exists as there is a chance that the peer may get deleted
as part of disconnection.
So check if tdls exists before accessing the peer in
wlan_hdd_tdls_initiator_wait_cb.
Change-Id: I90a7a765997bf3641bf2c8de2f3c9e5068e89122
CRs-Fixed: 906303
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index a0d6da2..cee77a3 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -8048,6 +8048,34 @@
}
+hdd_adapter_t *hdd_get_adapter_by_sme_session_id( hdd_context_t *pHddCtx,
+ tANI_U32 sme_session_id )
+{
+ hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL;
+ hdd_adapter_t *pAdapter;
+ VOS_STATUS vos_status;
+
+
+ vos_status = hdd_get_front_adapter( pHddCtx, &pAdapterNode);
+
+ while ((NULL != pAdapterNode) && (VOS_STATUS_SUCCESS == vos_status))
+ {
+ pAdapter = pAdapterNode->pAdapter;
+
+ if (pAdapter->sessionId == sme_session_id)
+ return pAdapter;
+
+ vos_status = hdd_get_next_adapter(pHddCtx, pAdapterNode, &pNext);
+ pAdapterNode = pNext;
+ }
+
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: sme_session_id %d does not exist with host",
+ __func__, sme_session_id);
+
+ return NULL;
+}
+
hdd_adapter_t * hdd_get_adapter( hdd_context_t *pHddCtx, device_mode_t mode )
{
hdd_adapter_list_node_t *pAdapterNode = NULL, *pNext = NULL;