diff options
| author | Sreelakshmi Konamki <skonam@codeaurora.org> | 2016-09-07 14:35:22 +0530 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2016-10-04 20:55:37 -0700 |
| commit | 336e16e392395884b640282d4a51c31ec0a5d0fc (patch) | |
| tree | 0154b9ee29cea3dfb94ba7d6ca21b4a2283fb873 | |
| parent | 2194de20cef945a2da49c688ebd1b2a66a8ae284 (diff) | |
qcacld-3.0: Fix to update proper session_entry in lim_process_messages()
qcacld-2.0 to qcacld-3.0 propagation
In lim_process_messages(), few SME messages updates 'session_entry'
using SME session id. Host driver should not use SME session id in PE.
Fix to update 'session_entry' using pe_find_session_by_bssid().
Change-Id: Icebf4604d5a3a825afc6b1d3540bd228488ce267
CRs-Fixed: 1020643
| -rw-r--r-- | core/mac/inc/sir_api.h | 1 | ||||
| -rw-r--r-- | core/mac/src/pe/lim/lim_process_message_queue.c | 8 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 5 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_neighbor_roam.c | 4 |
4 files changed, 14 insertions, 4 deletions
diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 0fdac5c0c888..362275c14bd3 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -3577,6 +3577,7 @@ typedef struct sSirActiveModeSetBcnFilterReq { uint16_t messageType; uint16_t length; uint8_t seesionId; + struct qdf_mac_addr bssid; } tSirSetActiveModeSetBncFilterReq, *tpSirSetActiveModeSetBncFilterReq; /* Reset AP Caps Changed */ diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index 4f69616afeee..37b326b6e863 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -1349,6 +1349,8 @@ void lim_process_messages(tpAniSirGlobal mac_ctx, tpSirMsgQ msg) tTdlsLinkEstablishParams *tdls_link_params = NULL; #endif tSirMbMsgP2p *p2p_msg = NULL; + tSirSetActiveModeSetBncFilterReq *bcn_filter_req = NULL; + if (ANI_DRIVER_TYPE(mac_ctx) == eDRIVER_TYPE_MFG) { qdf_mem_free(msg->bodyptr); msg->bodyptr = NULL; @@ -1857,8 +1859,10 @@ void lim_process_messages(tpAniSirGlobal mac_ctx, tpSirMsgQ msg) msg->bodyptr = NULL; break; case eWNI_SME_SET_BCN_FILTER_REQ: - session_id = (uint8_t) msg->bodyval; - session_entry = &mac_ctx->lim.gpSession[session_id]; + bcn_filter_req = + (tSirSetActiveModeSetBncFilterReq *) msg->bodyptr; + session_entry = pe_find_session_by_bssid(mac_ctx, + bcn_filter_req->bssid.bytes, &session_id); if ((session_entry != NULL) && (lim_send_beacon_filter_info(mac_ctx, session_entry) != eSIR_SUCCESS)) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 58d0c0812b9d..ad3768c3b13e 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -11183,8 +11183,11 @@ csr_roam_chk_lnk_set_ctx_rsp(tpAniSirGlobal mac_ctx, tSirSmeRsp *msg_ptr) pMsg = qdf_mem_malloc( sizeof(tSirSetActiveModeSetBncFilterReq)); pMsg->messageType = eWNI_SME_SET_BCN_FILTER_REQ; - pMsg->length = sizeof(uint8_t); + pMsg->length = sizeof(tSirSetActiveModeSetBncFilterReq); pMsg->seesionId = sessionId; + qdf_copy_macaddr(&pMsg->bssid, + &session->connectedProfile.bssid); + status = cds_send_mb_message_to_mac(pMsg); /* * OBSS SCAN Indication will be sent to Firmware diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index e2444c4c25b5..535171b7f3f6 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -1133,8 +1133,10 @@ QDF_STATUS csr_neighbor_roam_indicate_connect( return QDF_STATUS_E_NOMEM; } msg->messageType = eWNI_SME_SET_BCN_FILTER_REQ; - msg->length = sizeof(uint8_t); + msg->length = sizeof(tSirSetActiveModeSetBncFilterReq); msg->seesionId = session_id; + qdf_copy_macaddr(&msg->bssid, + &session->connectedProfile.bssid); status = cds_send_mb_message_to_mac(msg); qdf_copy_macaddr(&roamInfo.peerMac, &session->connectedProfile.bssid); |
