Эх сурвалжийг харах

qcacld-3.0: Update TSPEC IEs to CSR if TSPEC IE present in reassoc rsp

Currently TSPEC IEs are not updated to CSR when reassoc response included
TSPEC IEs. In LFR3 CCX roaming, CSR doesnt get TSPEC IE data as reassoc rsp
doesnt include RIC data.
Del TSPEC is not being processed properly at CSR level as it doesnt have
any TSPEC information.

Add changes to update TSPEC IEs and length to CSR after successful
CCX roaming.

Change-Id: I0e024c8264cb2e06042d517824245db1f1d09aea
CRs-Fixed: 1108440
Sreelakshmi Konamki 8 жил өмнө
parent
commit
0a942d4f66

+ 15 - 4
core/mac/src/pe/lim/lim_api.c

@@ -2088,8 +2088,8 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx,
 	curr_sta_ds->nss = local_nss;
 	ft_session_ptr->limMlmState = eLIM_MLM_LINK_ESTABLISHED_STATE;
 	lim_init_tdls_data(mac_ctx, ft_session_ptr);
-	join_rsp_len = ft_session_ptr->RICDataLen + sizeof(tSirSmeJoinRsp) -
-			sizeof(uint8_t);
+	join_rsp_len = ft_session_ptr->RICDataLen + ft_session_ptr->tspecLen +
+			sizeof(tSirSmeJoinRsp) - sizeof(uint8_t);
 	roam_sync_ind_ptr->join_rsp = qdf_mem_malloc(join_rsp_len);
 	if (NULL == roam_sync_ind_ptr->join_rsp) {
 		lim_log(mac_ctx, LOGE, FL("LFR3:mem alloc failed"));
@@ -2100,8 +2100,8 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx,
 		return QDF_STATUS_E_NOMEM;
 	}
 
-	lim_log(mac_ctx, LOG1, FL("Session RicLength = %d"),
-			ft_session_ptr->RICDataLen);
+	lim_log(mac_ctx, LOG1, FL("Session RicLength = %d tspecLen = %d"),
+			ft_session_ptr->RICDataLen, ft_session_ptr->tspecLen);
 	if (ft_session_ptr->ricData != NULL) {
 		roam_sync_ind_ptr->join_rsp->parsedRicRspLen =
 			ft_session_ptr->RICDataLen;
@@ -2112,6 +2112,17 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx,
 		ft_session_ptr->ricData = NULL;
 		ft_session_ptr->RICDataLen = 0;
 	}
+	if (ft_session_ptr->tspecIes != NULL) {
+		roam_sync_ind_ptr->join_rsp->tspecIeLen =
+			ft_session_ptr->tspecLen;
+		qdf_mem_copy(roam_sync_ind_ptr->join_rsp->frames +
+				roam_sync_ind_ptr->join_rsp->parsedRicRspLen,
+				ft_session_ptr->tspecIes,
+				roam_sync_ind_ptr->join_rsp->tspecIeLen);
+		qdf_mem_free(ft_session_ptr->tspecIes);
+		ft_session_ptr->tspecIes = NULL;
+		ft_session_ptr->tspecLen = 0;
+	}
 	roam_sync_ind_ptr->join_rsp->vht_channel_width =
 		ft_session_ptr->ch_width;
 	roam_sync_ind_ptr->join_rsp->staId = curr_sta_ds->staIndex;

+ 7 - 2
core/sme/src/csr/csr_api_roam.c

@@ -19838,9 +19838,12 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
 			FL("LFR3:Clear Connected info"));
 	csr_roam_free_connected_info(mac_ctx,
 			&session->connectedInfo);
-	len = roam_synch_data->join_rsp->parsedRicRspLen;
+	len = roam_synch_data->join_rsp->parsedRicRspLen +
+		roam_synch_data->join_rsp->tspecIeLen;
 	QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-			FL("LFR3: RIC length - %d"), len);
+		FL("LFR3: RIC length - %d tspecLen %d"),
+		roam_synch_data->join_rsp->parsedRicRspLen,
+		roam_synch_data->join_rsp->tspecIeLen);
 	if (len) {
 		session->connectedInfo.pbFrames =
 			qdf_mem_malloc(len);
@@ -19849,6 +19852,8 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
 				roam_synch_data->join_rsp->frames, len);
 			session->connectedInfo.nRICRspLength =
 				roam_synch_data->join_rsp->parsedRicRspLen;
+			session->connectedInfo.nTspecIeLength =
+				roam_synch_data->join_rsp->tspecIeLen;
 		}
 	}
 	conn_profile->vht_channel_width =