diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 2b99eb3..36fae0a 100755
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -5240,6 +5240,7 @@
     int status = 0;
     hdd_station_ctx_t *pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
 #ifdef FEATURE_WLAN_TDLS
+    hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
     tANI_U8 staIdx;
 #endif
     
@@ -5292,19 +5293,20 @@
 
 #ifdef FEATURE_WLAN_TDLS
             /* First clean up the tdls peers if any */
-            for (staIdx = 1 ; staIdx <= HDD_MAX_NUM_TDLS_STA; staIdx++)
+            for (staIdx = 0 ; staIdx < HDD_MAX_NUM_TDLS_STA; staIdx++)
             {
-                if (pHddStaCtx->conn_info.staId[staIdx])
+                if ((pHddCtx->tdlsConnInfo[staIdx].sessionId == pAdapter->sessionId) &&
+                    (pHddCtx->tdlsConnInfo[staIdx].staId))
                 {
                     uint8 *mac;
-                    mac = pHddStaCtx->conn_info.peerMacAddress[staIdx].bytes;
+                    mac = pHddCtx->tdlsConnInfo[staIdx].peerMac.bytes;
                     VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
                             "%s: call sme_DeleteTdlsPeerSta staId %d sessionId %d %02x:%02x:%02x:%02x:%02x:%02x",
-                            __func__, pHddStaCtx->conn_info.staId[staIdx], pAdapter->sessionId,
+                            __func__, pHddCtx->tdlsConnInfo[staIdx].staId, pAdapter->sessionId,
                             mac[0], mac[1], mac[2], mac[3], mac[4], mac[5] );
                     sme_DeleteTdlsPeerSta(WLAN_HDD_GET_HAL_CTX(pAdapter),
-                              pAdapter->sessionId,
-                              pHddStaCtx->conn_info.peerMacAddress[staIdx].bytes);
+                                          pAdapter->sessionId,
+                                          mac);
                 }
             }
 #endif
@@ -6305,7 +6307,7 @@
         return -ENOTSUPP;
     }
 
-    if (wlan_hdd_tdls_is_progress(mac, TRUE))
+    if (wlan_hdd_tdls_is_progress(pAdapter, mac, TRUE))
     {
         VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
             "%s: TDLS setup is ongoing. Request declined.",__func__);
@@ -6315,7 +6317,7 @@
     /* first to check if we reached to maximum supported TDLS peer.
        TODO: for now, return -EPERM looks working fine,
        but need to check if any other errno fit into this category.*/
-    if (HDD_MAX_NUM_TDLS_STA <= wlan_hdd_tdlsConnectedPeers())
+    if (HDD_MAX_NUM_TDLS_STA <= wlan_hdd_tdlsConnectedPeers(pAdapter))
     {
         VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
                 "%s: TDLS Max peer already connected. Request declined. \n",
@@ -6325,7 +6327,7 @@
     else
     {
         hddTdlsPeer_t *pTdlsPeer;
-        pTdlsPeer = wlan_hdd_tdls_find_peer(mac);
+        pTdlsPeer = wlan_hdd_tdls_find_peer(pAdapter, mac);
         if (pTdlsPeer && (eTDLS_LINK_CONNECTED == pTdlsPeer->link_status))
         {
             VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
@@ -6335,7 +6337,7 @@
         }
     }
 
-    wlan_hdd_tdls_set_connection_progress(mac,TRUE);
+    wlan_hdd_tdls_set_connection_progress(pAdapter, mac, TRUE);
 
     INIT_COMPLETION(pAdapter->tdls_add_station_comp);
 
@@ -6350,14 +6352,14 @@
         VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
                 "%s: timeout waiting for tdls add station indication",
                 __func__);
-        wlan_hdd_tdls_set_connection_progress(mac, FALSE);
+        wlan_hdd_tdls_set_connection_progress(pAdapter, mac, FALSE);
         return -EPERM;
     }
     if ( eHAL_STATUS_SUCCESS != pAdapter->tdlsAddStaStatus)
     {
         VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
                 "%s: Add Station is unsucessful", __func__);
-        wlan_hdd_tdls_set_connection_progress(mac, FALSE);
+        wlan_hdd_tdls_set_connection_progress(pAdapter, mac, FALSE);
         return -EPERM;
     }
 
@@ -6571,7 +6573,7 @@
 
     if (WLAN_IS_TDLS_SETUP_ACTION(action_code))
     {
-        if (wlan_hdd_tdls_is_progress(peer, TRUE))
+        if (wlan_hdd_tdls_is_progress(pAdapter, peer, TRUE))
         {
             VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                        "%s: TDLS setup is ongoing. Request declined.", __func__);
@@ -6582,7 +6584,7 @@
     if (SIR_MAC_TDLS_SETUP_REQ == action_code ||
         SIR_MAC_TDLS_SETUP_RSP == action_code )
     {
-        if (HDD_MAX_NUM_TDLS_STA <= wlan_hdd_tdlsConnectedPeers())
+        if (HDD_MAX_NUM_TDLS_STA <= wlan_hdd_tdlsConnectedPeers(pAdapter))
         {
             /* supplicant still sends tdls_mgmt(SETUP_REQ) even after
                we return error code at 'add_station()'. Hence we have this
@@ -6611,7 +6613,7 @@
         else
         {
             hddTdlsPeer_t *pTdlsPeer;
-            pTdlsPeer = wlan_hdd_tdls_find_peer(peer);
+            pTdlsPeer = wlan_hdd_tdls_find_peer(pAdapter, peer);
             if (pTdlsPeer && (eTDLS_LINK_CONNECTED == pTdlsPeer->link_status))
             {
                 VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
@@ -6634,8 +6636,8 @@
     responder = 0;
     if (SIR_MAC_TDLS_TEARDOWN == action_code)
     {
-       responder = wlan_hdd_tdls_get_responder(peerMac);
-       if (-1 == responder)
+       responder = wlan_hdd_tdls_get_responder(pAdapter, peerMac);
+       if(-1 == responder)
        {
             VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                      "%s: %02x:%02x:%02x:%02x:%02x:%02x) peer doesn't exist dialog_token %d status %d, len = %d",
@@ -6647,7 +6649,7 @@
 
     if (ret == 0 && /* if failure, don't need to set the progress bit */
        (WLAN_IS_TDLS_SETUP_ACTION(action_code)))
-        wlan_hdd_tdls_set_connection_progress(peer, TRUE);
+        wlan_hdd_tdls_set_connection_progress(pAdapter, peer, TRUE);
 
     INIT_COMPLETION(pAdapter->tdls_mgmt_comp);
 
@@ -6658,7 +6660,7 @@
     {
         if(ret == 0 && /* if failure, don't need to set the progress bit */
            (WLAN_IS_TDLS_SETUP_ACTION(action_code)))
-           wlan_hdd_tdls_set_connection_progress(peer, FALSE);
+           wlan_hdd_tdls_set_connection_progress(pAdapter, peer, FALSE);
 
         VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                 "%s: sme_SendTdlsMgmtFrame failed!", __func__);
@@ -6677,7 +6679,7 @@
         {
             if (ret == 0 && /* if failure, don't need to set the progress bit */
                (WLAN_IS_TDLS_SETUP_ACTION(action_code)))
-                wlan_hdd_tdls_set_connection_progress(peer, FALSE);
+                wlan_hdd_tdls_set_connection_progress(pAdapter, peer, FALSE);
 
             VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
                       "%s: Mgmt Tx Completion failed status %ld TxCompletion %lu",
@@ -6691,11 +6693,11 @@
 
     if (SIR_MAC_TDLS_SETUP_RSP == action_code)
     {
-        wlan_hdd_tdls_set_responder(peerMac, TRUE);
+        wlan_hdd_tdls_set_responder(pAdapter, peerMac, TRUE);
     }
     else if (SIR_MAC_TDLS_SETUP_CNF == action_code)
     {
-        wlan_hdd_tdls_set_responder(peerMac, FALSE);
+        wlan_hdd_tdls_set_responder(pAdapter, peerMac, FALSE);
     }
 
     return 0;
@@ -6756,7 +6758,7 @@
                 VOS_STATUS status;
 
                 if (peer) {
-                    pTdlsPeer = wlan_hdd_tdls_find_peer(peer);
+                    pTdlsPeer = wlan_hdd_tdls_find_peer(pAdapter, peer);
 
                     hddLog(VOS_TRACE_LEVEL_INFO_HIGH, 
                             "%s: TDLS_LINK_ENABLE %2x:%2x:%2x:%2x:%2x:%2x",
@@ -6776,10 +6778,10 @@
                     {
                         /* start TDLS client registration with TL */
                         status = hdd_roamRegisterTDLSSTA( pAdapter, peer, pTdlsPeer->staId, pTdlsPeer->signature);
-                        wlan_hdd_tdls_increment_peer_count();
+                        wlan_hdd_tdls_increment_peer_count(pAdapter);
                         wlan_hdd_tdls_set_link_status(pTdlsPeer, eTDLS_LINK_CONNECTED);
-                        wlan_hdd_tdls_check_bmps(pHddCtx);
-                        wlan_hdd_tdls_set_connection_progress(peer, FALSE);
+                        wlan_hdd_tdls_check_bmps(pAdapter);
+                        wlan_hdd_tdls_set_connection_progress(pAdapter, peer, FALSE);
                     }
 
                 } else {
@@ -6789,7 +6791,7 @@
             break;
         case NL80211_TDLS_DISABLE_LINK:
             {
-                hddTdlsPeer_t *curr_peer = wlan_hdd_tdls_find_peer(peer);
+                hddTdlsPeer_t *curr_peer = wlan_hdd_tdls_find_peer(pAdapter, peer);
 
                 if(NULL != curr_peer)
                 {
