summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSreelakshmi Konamki <skonam@codeaurora.org>2016-09-07 14:35:22 +0530
committerqcabuildsw <qcabuildsw@localhost>2016-10-04 20:55:37 -0700
commit336e16e392395884b640282d4a51c31ec0a5d0fc (patch)
tree0154b9ee29cea3dfb94ba7d6ca21b4a2283fb873
parent2194de20cef945a2da49c688ebd1b2a66a8ae284 (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.h1
-rw-r--r--core/mac/src/pe/lim/lim_process_message_queue.c8
-rw-r--r--core/sme/src/csr/csr_api_roam.c5
-rw-r--r--core/sme/src/csr/csr_neighbor_roam.c4
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);