summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKabilan Kannan <kabilank@codeaurora.org>2017-10-17 18:24:52 -0700
committersnandini <snandini@codeaurora.org>2017-10-25 02:05:21 -0700
commita1f6f5ad4de3fdd5c3e445b8d69a04a4c8e45e06 (patch)
tree630eb6f5bbc676ad3eb801c72f3b70242eec890d
parentfb8f6f2d036158161ea9990e7dbcde1576857f78 (diff)
qcacld-3.0: Restart the tdls timer, when external peer is configured
Sometimes TDLS timer is in stopped state, when external peer is configured and due to that connection takes longer duration. Restart the TDLS connection tracker timer explicitly when external peer is configured by user space. Change-Id: I0ab569eeb31d9d328847af8783b95200dbf055c9 CRs-Fixed: 2128568
-rw-r--r--core/hdd/src/wlan_hdd_tdls.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_tdls.c b/core/hdd/src/wlan_hdd_tdls.c
index 24f3c23598f3..29dd6fb7e381 100644
--- a/core/hdd/src/wlan_hdd_tdls.c
+++ b/core/hdd/src/wlan_hdd_tdls.c
@@ -4502,6 +4502,7 @@ int wlan_hdd_tdls_extctrl_config_peer(hdd_adapter_t *pAdapter,
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
int status = 0;
int ret;
+ tdlsCtx_t *tdls_ctx;
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
"%s : NL80211_TDLS_SETUP for " MAC_ADDRESS_STR,
@@ -4511,6 +4512,10 @@ int wlan_hdd_tdls_extctrl_config_peer(hdd_adapter_t *pAdapter,
if (ret)
return ret;
+ tdls_ctx = WLAN_HDD_GET_TDLS_CTX_PTR(pAdapter);
+ if (NULL == tdls_ctx)
+ return -EINVAL;
+
if ((false == pHddCtx->config->fTDLSExternalControl) ||
(false == pHddCtx->config->fEnableTDLSImplicitTrigger)) {
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
@@ -4588,6 +4593,12 @@ int wlan_hdd_tdls_extctrl_config_peer(hdd_adapter_t *pAdapter,
/* set tdls connection tracker state */
cds_set_tdls_ct_mode(pHddCtx);
+ mutex_lock(&pHddCtx->tdls_lock);
+ if (pHddCtx->enable_tdls_connection_tracker)
+ wlan_hdd_tdls_implicit_enable(tdls_ctx);
+ mutex_unlock(&pHddCtx->tdls_lock);
+
+
return status;
rel_lock:
mutex_unlock(&pHddCtx->tdls_lock);
@@ -4610,6 +4621,7 @@ int wlan_hdd_tdls_extctrl_deconfig_peer(hdd_adapter_t *pAdapter,
hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter);
int status = 0;
int ret;
+ tdlsCtx_t *tdls_ctx;
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
"%s : NL80211_TDLS_TEARDOWN for " MAC_ADDRESS_STR,
@@ -4619,6 +4631,10 @@ int wlan_hdd_tdls_extctrl_deconfig_peer(hdd_adapter_t *pAdapter,
if (ret)
return ret;
+ tdls_ctx = WLAN_HDD_GET_TDLS_CTX_PTR(pAdapter);
+ if (NULL == tdls_ctx)
+ return -EINVAL;
+
if ((false == pHddCtx->config->fTDLSExternalControl) ||
(false == pHddCtx->config->fEnableTDLSImplicitTrigger)) {
QDF_TRACE(QDF_MODULE_ID_HDD, QDF_TRACE_LEVEL_INFO,
@@ -4684,6 +4700,12 @@ int wlan_hdd_tdls_extctrl_deconfig_peer(hdd_adapter_t *pAdapter,
/* set tdls connection tracker state */
cds_set_tdls_ct_mode(pHddCtx);
+
+ mutex_lock(&pHddCtx->tdls_lock);
+ if (pHddCtx->enable_tdls_connection_tracker)
+ wlan_hdd_tdls_implicit_disable(tdls_ctx);
+ mutex_unlock(&pHddCtx->tdls_lock);
+
goto ret_status;
rel_lock: