Просмотр исходного кода

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
Sreelakshmi Konamki 8 лет назад
Родитель
Сommit
336e16e392

+ 1 - 0
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 */

+ 6 - 2
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))

+ 4 - 1
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

+ 3 - 1
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);