diff options
| author | Kabilan Kannan <kabilank@codeaurora.org> | 2017-10-17 18:24:52 -0700 |
|---|---|---|
| committer | snandini <snandini@codeaurora.org> | 2017-10-25 02:05:21 -0700 |
| commit | a1f6f5ad4de3fdd5c3e445b8d69a04a4c8e45e06 (patch) | |
| tree | 630eb6f5bbc676ad3eb801c72f3b70242eec890d | |
| parent | fb8f6f2d036158161ea9990e7dbcde1576857f78 (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.c | 22 |
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: |
