Fix for the VOS_ASSERT in add station time.
Change the TDLS capability to eTDLS_CAP_SUPPORTED at the time of
sending discovery response or set_up response to the peer device.
Clean up some debug prints for easing the debugging.
CRs-Fixed: 462352
Change-Id: I668a51ebd00663dbd17fdacc4bc10050718701f0
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 2b3f31d..beeecdb 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -266,10 +266,9 @@
curr_peer = list_entry (pos, hddTdlsPeer_t, node);
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "hdd update cb - %d: " MAC_ADDRESS_STR " -> %d link_status -> %d"
- "tdls_support -> %d", i,
- MAC_ADDR_ARRAY(curr_peer->peerMac),
- curr_peer->tx_pkt, curr_peer->link_status, curr_peer->tdls_support);
+ "hdd update cb " MAC_ADDRESS_STR " link_status %d"
+ " tdls_support %d", MAC_ADDR_ARRAY(curr_peer->peerMac),
+ curr_peer->link_status, curr_peer->tdls_support);
if (eTDLS_CAP_SUPPORTED == curr_peer->tdls_support) {
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
@@ -286,7 +285,7 @@
if (HDD_MAX_NUM_TDLS_STA > wlan_hdd_tdlsConnectedPeers(pHddTdlsCtx->pAdapter))
{
- VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "-> Tput trigger TDLS SETUP");
+ VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "Tput trigger TDLS pre-setup");
#ifdef CONFIG_TDLS_IMPLICIT
wlan_hdd_tdls_pre_setup(pHddTdlsCtx, curr_peer);
#endif
@@ -299,11 +298,6 @@
}
goto next_peer;
}
-#ifdef WLAN_FEATURE_TDLS_DEBUG
- else {
- VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "-> ignored.");
- }
-#endif
if ((((tANI_S32)curr_peer->rssi >
(tANI_S32)(pHddTdlsCtx->threshold_config.rssi_hysteresis +
pHddTdlsCtx->ap_rssi)) ||
@@ -384,6 +378,7 @@
if (++curr_peer->discovery_attempt <
pHddTdlsCtx->threshold_config.discovery_tries_n) {
+ VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "TDLS UNKNOWN discover ");
wlan_hdd_tdls_pre_setup(pHddTdlsCtx, curr_peer);
}
else
@@ -391,10 +386,6 @@
curr_peer->tdls_support = eTDLS_CAP_NOT_SUPPORTED;
curr_peer->link_status = eTDLS_LINK_IDLE;
}
-
- VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "Tput triggering TDLS discovery: " MAC_ADDRESS_STR "!",
- MAC_ADDR_ARRAY(curr_peer->peerMac));
}
}
}
@@ -472,7 +463,7 @@
}
pHddTdlsCtx->discovery_sent_cnt = 0;
- wlan_hdd_tdls_set_power_save_prohibited(pHddTdlsCtx->pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pHddTdlsCtx->pAdapter);
mutex_unlock(&tdls_lock);
@@ -744,19 +735,19 @@
return peer;
}
-void wlan_hdd_tdls_set_cap(hdd_adapter_t *pAdapter,
+int wlan_hdd_tdls_set_cap(hdd_adapter_t *pAdapter,
u8* mac,
tTDLSCapType cap)
{
hddTdlsPeer_t *curr_peer;
- curr_peer = wlan_hdd_tdls_find_peer(pAdapter, mac);
+ curr_peer = wlan_hdd_tdls_get_peer(pAdapter, mac);
if (curr_peer == NULL)
- return;
+ return -1;
curr_peer->tdls_support = cap;
- return;
+ return 0;
}
void wlan_hdd_tdls_set_peer_link_status(hddTdlsPeer_t *curr_peer, tTDLSLinkStatus status)
@@ -799,7 +790,7 @@
if (pHddTdlsCtx->discovery_sent_cnt)
pHddTdlsCtx->discovery_sent_cnt--;
- wlan_hdd_tdls_set_power_save_prohibited(pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pAdapter);
if (0 == pHddTdlsCtx->discovery_sent_cnt)
{
vos_timer_stop(&pHddTdlsCtx->peerDiscoveryTimeoutTimer);
@@ -812,13 +803,14 @@
if (eTDLS_LINK_DISCOVERING == curr_peer->link_status)
{
+ curr_peer->link_status = eTDLS_LINK_DISCOVERED;
+
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
"Indicating Set-Up to supplicant");
cfg80211_tdls_oper_request(pAdapter->dev,
curr_peer->peerMac,
NL80211_TDLS_SETUP, FALSE,
GFP_KERNEL);
- curr_peer->link_status = eTDLS_LINK_DISCOVERED;
}
else
{
@@ -1281,7 +1273,7 @@
{
wlan_hdd_tdls_peer_reset_discovery_processed(pHddTdlsCtx);
pHddTdlsCtx->discovery_sent_cnt = 0;
- wlan_hdd_tdls_set_power_save_prohibited(pHddTdlsCtx->pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pHddTdlsCtx->pAdapter);
#ifdef FEATURE_WLAN_TDLS_INTERNAL
vos_timer_start(&pHddTdlsCtx->peerDiscoverTimer,
@@ -1311,7 +1303,7 @@
return;
}
pHddTdlsCtx->discovery_sent_cnt = 0;
- wlan_hdd_tdls_set_power_save_prohibited(pHddTdlsCtx->pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pHddTdlsCtx->pAdapter);
wlan_hdd_tdls_timers_stop(pHddTdlsCtx);
wlan_hdd_tdls_free_list(pHddTdlsCtx);
@@ -1334,7 +1326,7 @@
if (NULL == pHddCtx) return;
pHddCtx->connected_peer_count++;
- wlan_hdd_tdls_set_power_save_prohibited(pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pAdapter);
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "%s: %d",
__func__, pHddCtx->connected_peer_count);
@@ -1348,7 +1340,7 @@
if (pHddCtx->connected_peer_count)
pHddCtx->connected_peer_count--;
- wlan_hdd_tdls_set_power_save_prohibited(pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pAdapter);
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "%s: %d",
__func__, pHddCtx->connected_peer_count);
@@ -1385,6 +1377,17 @@
return;
}
+u8 wlan_hdd_tdls_is_peer_progress(hdd_adapter_t *pAdapter, u8 *mac)
+{
+ hddTdlsPeer_t *curr_peer;
+
+ curr_peer = wlan_hdd_tdls_find_peer(pAdapter, mac);
+ if (curr_peer == NULL)
+ return 0;
+
+ return (eTDLS_LINK_CONNECTING == curr_peer->link_status);
+}
+
/* return TRUE if TDLS is ongoing
* mac - if NULL check for all the peer list, otherwise, skip this mac when skip_self is TRUE
* skip_self - if TRUE, skip this mac. otherwise, check all the peer list. if
@@ -1423,7 +1426,7 @@
if (eTDLS_LINK_CONNECTING == curr_peer->link_status)
{
VOS_TRACE(VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL,
- "%s:" MAC_ADDRESS_STR "is in eTDLS_LINK_CONNECTING",
+ "%s:" MAC_ADDRESS_STR " eTDLS_LINK_CONNECTING",
__func__, MAC_ADDR_ARRAY(curr_peer->peerMac));
mutex_unlock(&tdls_lock);
return TRUE;
@@ -1455,7 +1458,7 @@
wlan_hdd_tdls_peer_reset_discovery_processed(pHddTdlsCtx);
pHddTdlsCtx->discovery_sent_cnt = 0;
wlan_tdd_tdls_reset_tx_rx(pHddTdlsCtx);
- wlan_hdd_tdls_set_power_save_prohibited(pHddTdlsCtx->pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pHddTdlsCtx->pAdapter);
#ifdef FEATURE_WLAN_TDLS_INTERNAL
@@ -1517,7 +1520,7 @@
WLAN_TDLS_DISCOVERY_REQUEST,
1, 0, NULL, 0, 0);
pHddTdlsCtx->discovery_sent_cnt++;
- wlan_hdd_tdls_set_power_save_prohibited(pHddTdlsCtx->pAdapter);
+ wlan_hdd_tdls_check_power_save_prohibited(pHddTdlsCtx->pAdapter);
VOS_TRACE( VOS_MODULE_ID_HDD, TDLS_LOG_LEVEL, "%s: discovery count %lu timeout %lu msec",
__func__, pHddTdlsCtx->discovery_sent_cnt,
pHddTdlsCtx->threshold_config.tx_period_t - TDLS_DISCOVERY_TIMEOUT_BEFORE_UPDATE);
@@ -1556,7 +1559,7 @@
return count;
}
-void wlan_hdd_tdls_set_power_save_prohibited(hdd_adapter_t *pAdapter)
+void wlan_hdd_tdls_check_power_save_prohibited(hdd_adapter_t *pAdapter)
{
tdlsCtx_t *pHddTdlsCtx = WLAN_HDD_GET_TDLS_CTX_PTR(pAdapter);
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);