diff options
| author | yeshwanth sriram guntuka <ysriramg@codeaurora.org> | 2017-03-23 13:59:22 +0530 |
|---|---|---|
| committer | Sandeep Puligilla <spuligil@codeaurora.org> | 2017-03-28 05:47:43 -0700 |
| commit | 27637d2a388e017049280dd7a15255a62c8a2743 (patch) | |
| tree | 4220e53a7a8e476727d36439733b9f5fa3b8dc37 | |
| parent | cd44c9d7ed8b853ccc45f4e478cad24a9d06f15a (diff) | |
qcacld-3.0: Remove addts and delts command on roam sync ind
When DUT receives roam sync ind, addts and delts commands
needs to be removed as part of csr_roam_sync_callback,
Otherwise these commands will be active SME commands forever
as PE wont send resp as older PE session is deleted as part
of RSI indication.
Fix is to remove addts and delts command on roam sync ind.
Change-Id: I1df8416a76dff3899c146823bec04595877788f7
CRs-Fixed: 2023723
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_sme_req_messages.c | 3 | ||||
| -rw-r--r-- | core/sme/inc/sme_qos_internal.h | 13 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 1 | ||||
| -rw-r--r-- | core/sme/src/qos/sme_qos.c | 22 |
4 files changed, 38 insertions, 1 deletions
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 74ac22eb5d05..c6abbb36a154 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -3698,6 +3698,9 @@ static void __lim_process_sme_addts_req(tpAniSirGlobal pMac, uint32_t *pMsgBuf) &sessionId); if (psessionEntry == NULL) { lim_log(pMac, LOGE, "Session Does not exist for given bssId"); + lim_send_sme_addts_rsp(pMac, pSirAddts->rspReqd, eSIR_FAILURE, + NULL, pSirAddts->req.tspec, + smesessionId, smetransactionId); return; } #ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM /* FEATURE_WLAN_DIAG_SUPPORT */ diff --git a/core/sme/inc/sme_qos_internal.h b/core/sme/inc/sme_qos_internal.h index 8682eaa4719d..109fd50cfa67 100644 --- a/core/sme/inc/sme_qos_internal.h +++ b/core/sme/inc/sme_qos_internal.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016 The Linux Foundation. All rights reserved. + * Copyright (c) 2014-2017 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -123,6 +123,17 @@ QDF_STATUS sme_qos_msg_processor(tpAniSirGlobal pMac, uint16_t msg_type, ------------------------------------------------------------------------*/ QDF_STATUS sme_qos_validate_params(tpAniSirGlobal pMac, tSirBssDescription *pBssDesc); +/** + * sme_qos_remove_addts_delts_cmd - Remove addts/delts command + * @mac_ctx: Pointer to the global MAC structure. + * @session_id: Session id + * + * This function is used to remove addts/delts command + * during csr roam sync callback. + * + * Return: void + */ +void sme_qos_remove_addts_delts_cmd(tpAniSirGlobal mac_ctx, uint8_t session_id); QDF_STATUS sme_qos_csr_event_ind(tpAniSirGlobal pMac, uint8_t sessionId, sme_qos_csr_event_indType ind, void *pEvent_info); diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index a60f2ff03e03..57e4697cbb75 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -20116,6 +20116,7 @@ QDF_STATUS csr_roam_synch_callback(tpAniSirGlobal mac_ctx, eCSR_ASSOC_STATE_TYPE_INFRA_ASSOCIATED; sme_qos_csr_event_ind(mac_ctx, session_id, SME_QOS_CSR_REASSOC_COMPLETE, &assoc_info); + sme_qos_remove_addts_delts_cmd(mac_ctx, session_id); roam_info->pBssDesc = bss_desc; conn_profile->acm_mask = sme_qos_get_acm_mask(mac_ctx, bss_desc, NULL); diff --git a/core/sme/src/qos/sme_qos.c b/core/sme/src/qos/sme_qos.c index da9ee68ca809..a8b7ccf17db3 100644 --- a/core/sme/src/qos/sme_qos.c +++ b/core/sme/src/qos/sme_qos.c @@ -912,6 +912,28 @@ QDF_STATUS sme_qos_validate_params(tpAniSirGlobal pMac, return status; } +void sme_qos_remove_addts_delts_cmd(tpAniSirGlobal mac_ctx, uint8_t session_id) +{ + tListElem *entry; + tSmeCmd *command; + + entry = csr_ll_peek_head(&mac_ctx->sme.smeCmdActiveList, + LL_ACCESS_LOCK); + if (NULL == entry) + return; + command = GET_BASE_ADDR(entry, tSmeCmd, Link); + if ((eSmeCommandAddTs == command->command || + eSmeCommandDelTs == command->command) && + command->sessionId == session_id) { + if (csr_ll_remove_entry(&mac_ctx->sme.smeCmdActiveList, entry, + LL_ACCESS_LOCK)) { + QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO, + "%s: removed addts/delts command", __func__); + qos_release_command(mac_ctx, command); + } + } +} + /*-------------------------------------------------------------------------- \brief sme_qos_csr_event_ind() - The QoS sub-module in SME expects notifications from CSR when certain events occur as mentioned in sme_qos_csr_event_indType. |
