Forráskód Böngészése

qcacld-3.0: Remove join_resp from roam sync structure

Remove join_resp from roam sync structure.

Change-Id: Ifabd9383954394f00afce635c90dc54cc6cb5aa3
CRs-Fixed: 2891728
gaurank kathpalia 4 éve
szülő
commit
fac5527d3f

+ 3 - 0
components/umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_roam_public_struct.h

@@ -112,6 +112,9 @@
 #define MAX_BSSID_AVOID_LIST     16
 #define MAX_BSSID_FAVORED      16
 
+#define MAX_FTIE_SIZE 384
+#define ESE_MAX_TSPEC_IES 4
+
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 #define ROAM_SCAN_PSK_SIZE    48
 #define ROAM_R0KH_ID_MAX_LEN  48

+ 10 - 7
core/mac/inc/sir_api.h

@@ -821,10 +821,9 @@ typedef struct sTspecInfo {
 	struct mac_tspec_ie tspec;
 } tTspecInfo;
 
-#define SIR_ESE_MAX_TSPEC_IES   4
 typedef struct sESETspecTspecInfo {
 	uint8_t numTspecs;
-	tTspecInfo tspec[SIR_ESE_MAX_TSPEC_IES];
+	tTspecInfo tspec[ESE_MAX_TSPEC_IES];
 } tESETspecInfo;
 
 struct tsm_ie {
@@ -957,6 +956,7 @@ struct join_req {
 	 */
 };
 
+#ifndef FEATURE_CM_ENABLE
 /* / Definition for response message to previously issued join request */
 /* / MAC ---> */
 struct join_rsp {
@@ -964,13 +964,11 @@ struct join_rsp {
 	uint16_t length;
 	uint8_t vdev_id;      /* Session ID */
 	tSirResultCodes status_code;
-	tAniAuthType authType;
 	uint32_t vht_channel_width;
 	/* It holds reasonCode when join fails due to deauth/disassoc frame.
 	 * Otherwise it holds status code.
 	 */
 	uint16_t protStatusCode;
-	uint16_t aid;
 	uint32_t beaconLength;
 	uint32_t assocReqLength;
 	uint32_t assocRspLength;
@@ -1008,6 +1006,7 @@ struct join_rsp {
 #endif
 	uint8_t frames[1];
 };
+#endif
 
 struct oem_channel_info {
 	uint32_t mhz;
@@ -2494,8 +2493,6 @@ typedef struct {
 #endif
 
 struct roam_offload_synch_ind {
-	uint16_t messageType;   /*eWNI_SME_ROAM_OFFLOAD_SYNCH_IND */
-	uint16_t length;
 	uint16_t beaconProbeRespOffset;
 	uint16_t beaconProbeRespLength;
 	uint16_t reassocRespOffset;
@@ -2522,7 +2519,13 @@ struct roam_offload_synch_ind {
 	uint16_t next_erp_seq_num;
 	uint8_t replay_ctr[REPLAY_CTR_LEN];
 	void *add_bss_params;
-	struct join_rsp *join_rsp;
+	enum phy_ch_width chan_width;
+	uint32_t max_rate_flags;
+	uint32_t ric_data_len;
+#ifdef FEATURE_WLAN_ESE
+	uint32_t tspec_len;
+#endif
+	uint8_t *ric_tspec_data;
 	uint16_t aid;
 	struct sir_hw_mode_trans_ind hw_mode_trans_ind;
 	uint8_t nss;

+ 1 - 1
core/mac/src/include/parser_api.h

@@ -436,7 +436,7 @@ typedef struct sSirAssocRsp {
 
 #ifdef FEATURE_WLAN_ESE
 	uint8_t num_tspecs;
-	tDot11fIEWMMTSPEC TSPECInfo[SIR_ESE_MAX_TSPEC_IES];
+	tDot11fIEWMMTSPEC TSPECInfo[ESE_MAX_TSPEC_IES];
 	struct ese_tsm_ie tsmIE;
 #endif
 

+ 0 - 19
core/mac/src/pe/include/lim_api.h

@@ -251,25 +251,6 @@ void lim_trigger_sta_deletion(struct mac_context *mac, tpDphHashNode sta,
 void lim_send_sme_tdls_del_sta_ind(struct mac_context *mac, tpDphHashNode sta,
 				   struct pe_session *pe_session,
 				   uint16_t reasonCode);
-
-/**
- * lim_set_tdls_flags() - update tdls flags based on newer STA connection
- * information
- * @roam_sync_ind_ptr: pointer to roam offload structure
- * @ft_session_ptr: pointer to PE session
- *
- * Set TDLS flags as per new STA connection capabilities.
- *
- * Return: None
- */
-void lim_set_tdls_flags(struct roam_offload_synch_ind *roam_sync_ind_ptr,
-			struct pe_session *ft_session_ptr);
-#else
-static inline
-void lim_set_tdls_flags(struct roam_offload_synch_ind *roam_sync_ind_ptr,
-			struct pe_session *ft_session_ptr)
-{
-}
 #endif
 
 /* / Function that checks for change in AP's capabilties on STA */

+ 1 - 3
core/mac/src/pe/include/lim_ft_defs.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -31,8 +31,6 @@
 /*--------------------------------------------------------------------------
    Preprocessor definitions and constants
    ------------------------------------------------------------------------*/
-#define MAX_FTIE_SIZE             384   /* Max size limited to 384, on acct. of IW custom events */
-
 /* Time to dwell on preauth channel during roaming, in milliseconds */
 #define LIM_FT_PREAUTH_SCAN_TIME 50
 

+ 33 - 41
core/mac/src/pe/lim/lim_api.c

@@ -2474,7 +2474,7 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
 	uint16_t aid;
 	struct bss_params *add_bss_params;
 	QDF_STATUS status = QDF_STATUS_E_FAILURE;
-	uint16_t join_rsp_len;
+	uint16_t ric_tspec_len;
 
 	if (!roam_sync_ind_ptr) {
 		pe_err("LFR3:roam_sync_ind_ptr is NULL");
@@ -2624,54 +2624,46 @@ pe_roam_synch_callback(struct mac_context *mac_ctx,
 	ft_session_ptr->limMlmState = eLIM_MLM_LINK_ESTABLISHED_STATE;
 	ft_session_ptr->limPrevMlmState = ft_session_ptr->limMlmState;
 	lim_init_tdls_data(mac_ctx, ft_session_ptr);
-	join_rsp_len = ft_session_ptr->RICDataLen +
-			sizeof(struct join_rsp) - sizeof(uint8_t);
-
+	ric_tspec_len = ft_session_ptr->RICDataLen;
+	pe_debug("LFR3: Session RicLength: %d", ft_session_ptr->RICDataLen);
 #ifdef FEATURE_WLAN_ESE
-	join_rsp_len += ft_session_ptr->tspecLen;
+	ric_tspec_len += ft_session_ptr->tspecLen;
 	pe_debug("LFR3: tspecLen: %d", ft_session_ptr->tspecLen);
 #endif
+	if (ric_tspec_len) {
+		roam_sync_ind_ptr->ric_tspec_data =
+				qdf_mem_malloc(ric_tspec_len);
+		if (!roam_sync_ind_ptr->ric_tspec_data) {
+			ft_session_ptr->bRoamSynchInProgress = false;
+			return QDF_STATUS_E_NOMEM;
+		}
 
-	roam_sync_ind_ptr->join_rsp = qdf_mem_malloc(join_rsp_len);
-	if (!roam_sync_ind_ptr->join_rsp) {
-		ft_session_ptr->bRoamSynchInProgress = false;
-		return QDF_STATUS_E_NOMEM;
-	}
-
-	pe_debug("LFR3: Session RicLength: %d", ft_session_ptr->RICDataLen);
-	if (ft_session_ptr->ricData) {
-		roam_sync_ind_ptr->join_rsp->parsedRicRspLen =
+		if (ft_session_ptr->ricData) {
+			roam_sync_ind_ptr->ric_data_len =
 					ft_session_ptr->RICDataLen;
-		qdf_mem_copy(roam_sync_ind_ptr->join_rsp->frames,
-			     ft_session_ptr->ricData,
-			     roam_sync_ind_ptr->join_rsp->parsedRicRspLen);
-		qdf_mem_free(ft_session_ptr->ricData);
-		ft_session_ptr->ricData = NULL;
-		ft_session_ptr->RICDataLen = 0;
-	}
-
+			qdf_mem_copy(roam_sync_ind_ptr->ric_tspec_data,
+				     ft_session_ptr->ricData,
+				     roam_sync_ind_ptr->ric_data_len);
+			qdf_mem_free(ft_session_ptr->ricData);
+			ft_session_ptr->ricData = NULL;
+			ft_session_ptr->RICDataLen = 0;
+		}
 #ifdef FEATURE_WLAN_ESE
-	if (ft_session_ptr->tspecIes) {
-		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;
-	}
+		if (ft_session_ptr->tspecIes) {
+			roam_sync_ind_ptr->tspec_len = ft_session_ptr->tspecLen;
+			qdf_mem_copy(roam_sync_ind_ptr->ric_tspec_data +
+				     roam_sync_ind_ptr->ric_data_len,
+				     ft_session_ptr->tspecIes,
+				     roam_sync_ind_ptr->tspec_len);
+			qdf_mem_free(ft_session_ptr->tspecIes);
+			ft_session_ptr->tspecIes = NULL;
+			ft_session_ptr->tspecLen = 0;
+		}
 #endif
-
-	roam_sync_ind_ptr->join_rsp->vht_channel_width =
-					ft_session_ptr->ch_width;
-	roam_sync_ind_ptr->join_rsp->timingMeasCap = curr_sta_ds->timingMeasCap;
-	roam_sync_ind_ptr->join_rsp->nss = curr_sta_ds->nss;
-	roam_sync_ind_ptr->join_rsp->max_rate_flags =
+	}
+	roam_sync_ind_ptr->chan_width = ft_session_ptr->ch_width;
+	roam_sync_ind_ptr->max_rate_flags =
 			lim_get_max_rate_flags(mac_ctx, curr_sta_ds);
-	lim_set_tdls_flags(roam_sync_ind_ptr, ft_session_ptr);
-	roam_sync_ind_ptr->join_rsp->aid = ft_session_ptr->limAID;
 	ft_session_ptr->limSmeState = eLIM_SME_LINK_EST_STATE;
 	ft_session_ptr->limPrevSmeState = ft_session_ptr->limSmeState;
 	ft_session_ptr->bRoamSynchInProgress = false;

+ 0 - 9
core/mac/src/pe/lim/lim_process_tdls.c

@@ -1381,15 +1381,6 @@ wma_tx_frame_with_tx_complete_send(struct mac_context *mac, void *pPacket,
 }
 #endif
 
-void lim_set_tdls_flags(struct roam_offload_synch_ind *roam_sync_ind_ptr,
-		   struct pe_session *ft_session_ptr)
-{
-	roam_sync_ind_ptr->join_rsp->tdls_prohibited =
-		mlme_get_tdls_prohibited(ft_session_ptr->vdev);
-	roam_sync_ind_ptr->join_rsp->tdls_chan_swit_prohibited =
-		mlme_get_tdls_chan_switch_prohibited(ft_session_ptr->vdev);
-}
-
 /*
  * TDLS setup Request frame on AP link
  */

+ 0 - 1
core/mac/src/pe/lim/lim_send_sme_rsp_messages.c

@@ -655,7 +655,6 @@ static void lim_handle_join_rsp_status(struct mac_context *mac_ctx,
 				sme_join_rsp->tspecIeLen);
 		}
 #endif
-		sme_join_rsp->aid = session_entry->limAID;
 		sme_join_rsp->vht_channel_width =
 			session_entry->ch_width;
 

+ 5 - 2
core/sme/inc/csr_api.h

@@ -1180,16 +1180,19 @@ typedef void (*csr_readyToSuspendCallback)(void *pContext, bool suspended);
 typedef void (*csr_readyToExtWoWCallback)(void *pContext, bool status);
 #endif
 typedef void (*csr_link_status_callback)(uint8_t status, void *context);
+
+#ifndef FEATURE_CM_ENABLE
 #ifdef FEATURE_WLAN_TDLS
 void csr_roam_fill_tdls_info(struct mac_context *mac_ctx,
 			     struct csr_roam_info *roam_info,
-			     struct join_rsp *join_rsp);
+			     struct wlan_objmgr_vdev *vdev);
 #else
 static inline void csr_roam_fill_tdls_info(struct mac_context *mac_ctx,
 					   struct csr_roam_info *roam_info,
-					   struct join_rsp *join_rsp)
+					   struct wlan_objmgr_vdev *vdev)
 {}
 #endif
+#endif
 
 typedef void (*sme_get_raom_scan_ch_callback)(
 				hdd_handle_t hdd_handle,

+ 28 - 23
core/sme/src/csr/csr_api_roam.c

@@ -16546,6 +16546,8 @@ fail:
 	msg_return.bodyval = 0;
 	sys_process_mmh_msg(mac, &msg_return);
 }
+
+#ifndef FEATURE_CM_ENABLE
 #ifdef FEATURE_WLAN_TDLS
 /**
  * csr_roam_fill_tdls_info() - Fill TDLS information
@@ -16556,11 +16558,11 @@ fail:
  */
 void csr_roam_fill_tdls_info(struct mac_context *mac_ctx,
 			     struct csr_roam_info *roam_info,
-			     struct join_rsp *join_rsp)
+			     struct wlan_objmgr_vdev *vdev)
 {
-	roam_info->tdls_prohibited = join_rsp->tdls_prohibited;
+	roam_info->tdls_prohibited = mlme_get_tdls_prohibited(vdev);
 	roam_info->tdls_chan_swit_prohibited =
-		join_rsp->tdls_chan_swit_prohibited;
+		mlme_get_tdls_chan_switch_prohibited(vdev);
 	sme_debug(
 		"tdls:prohibit: %d, chan_swit_prohibit: %d",
 		roam_info->tdls_prohibited,
@@ -16568,7 +16570,6 @@ void csr_roam_fill_tdls_info(struct mac_context *mac_ctx,
 }
 #endif
 
-#ifndef FEATURE_CM_ENABLE
 #if defined(WLAN_FEATURE_FILS_SK) && defined(WLAN_FEATURE_ROAM_OFFLOAD)
 static void csr_copy_fils_join_rsp_roam_info(struct csr_roam_info *roam_info,
 				      struct roam_offload_synch_ind *roam_synch_data)
@@ -16774,6 +16775,7 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
 	uint8_t mdie_present;
 	struct cm_roam_values_copy config;
 	struct wlan_mlme_psoc_ext_obj *mlme_obj;
+	struct mlme_legacy_priv *mlme_priv;
 
 	mlme_obj = mlme_get_psoc_ext_obj(mac_ctx->psoc);
 	if (!mlme_obj) {
@@ -16788,6 +16790,11 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
 		sme_err("vdev is NULL, aborting roam invoke");
 		return QDF_STATUS_E_NULL_VALUE;
 	}
+	mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
+	if (!mlme_priv) {
+		status = QDF_STATUS_E_NULL_VALUE;
+		goto end;
+	}
 
 	vdev_roam_params = mlme_get_roam_invoke_params(vdev);
 
@@ -17243,43 +17250,41 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
 
 	sme_debug("LFR3:Clear Connected info");
 	csr_roam_free_connected_info(mac_ctx, &session->connectedInfo);
-	len = roam_synch_data->join_rsp->parsedRicRspLen;
+	len = roam_synch_data->ric_data_len;
 
 #ifdef FEATURE_WLAN_ESE
-	len += roam_synch_data->join_rsp->tspecIeLen;
-	QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-		FL("LFR3: tspecLen %d"),
-		roam_synch_data->join_rsp->tspecIeLen);
+	len += roam_synch_data->tspec_len;
+	sme_debug("LFR3: tspecLen %d", roam_synch_data->tspec_len);
 #endif
 
-	sme_debug("LFR3: RIC length - %d",
-		  roam_synch_data->join_rsp->parsedRicRspLen);
+	sme_debug("LFR3: RIC length - %d", roam_synch_data->ric_data_len);
 	if (len) {
 		session->connectedInfo.pbFrames =
 			qdf_mem_malloc(len);
 		if (session->connectedInfo.pbFrames) {
 			qdf_mem_copy(session->connectedInfo.pbFrames,
-				roam_synch_data->join_rsp->frames, len);
+				     roam_synch_data->ric_tspec_data,
+				     len);
 			session->connectedInfo.nRICRspLength =
-				roam_synch_data->join_rsp->parsedRicRspLen;
+				roam_synch_data->ric_data_len;
 
 #ifdef FEATURE_WLAN_ESE
 			session->connectedInfo.nTspecIeLength =
-				roam_synch_data->join_rsp->tspecIeLen;
+				roam_synch_data->tspec_len;
 #endif
 		}
 	}
 	conn_profile->vht_channel_width =
-		roam_synch_data->join_rsp->vht_channel_width;
+		roam_synch_data->chan_width;
 	add_bss_params = (struct bss_params *)roam_synch_data->add_bss_params;
-	roam_info->timingMeasCap =
-		roam_synch_data->join_rsp->timingMeasCap;
-	roam_info->chan_info.nss = roam_synch_data->join_rsp->nss;
-	roam_info->chan_info.rate_flags =
-		roam_synch_data->join_rsp->max_rate_flags;
-	roam_info->chan_info.ch_width =
-		roam_synch_data->join_rsp->vht_channel_width;
-	csr_roam_fill_tdls_info(mac_ctx, roam_info, roam_synch_data->join_rsp);
+	roam_info->timingMeasCap = mlme_priv->connect_info.timing_meas_cap;
+	roam_info->chan_info.nss = roam_synch_data->nss;
+	roam_info->chan_info.rate_flags = roam_synch_data->max_rate_flags;
+	roam_info->chan_info.ch_width = roam_synch_data->chan_width;
+	/* This is temp ifdef will be removed in near future */
+#ifndef FEATURE_CM_ENABLE
+	csr_roam_fill_tdls_info(mac_ctx, roam_info, vdev);
+#endif
 	assoc_info.bss_desc = bss_desc;
 	roam_info->status_code = eSIR_SME_SUCCESS;
 	roam_info->reasonCode = eSIR_SME_SUCCESS;

+ 4 - 5
core/wma/src/wma_scan_roam.c

@@ -1186,9 +1186,8 @@ int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event,
 	/* update freq and channel width */
 	wma->interfaces[synch_event->vdev_id].ch_freq =
 		roam_synch_ind_ptr->chan_freq;
-	if (roam_synch_ind_ptr->join_rsp)
-		wma->interfaces[synch_event->vdev_id].chan_width =
-			roam_synch_ind_ptr->join_rsp->vht_channel_width;
+	wma->interfaces[synch_event->vdev_id].chan_width =
+		roam_synch_ind_ptr->chan_width;
 	/*
 	 * update phy_mode in wma to avoid mismatch in phymode between host and
 	 * firmware. The phymode stored in peer->peer_mlme.phymode is
@@ -1221,8 +1220,8 @@ cleanup_label:
 		if (synch_event)
 			wma_post_roam_sync_failure(wma, synch_event->vdev_id);
 	}
-	if (roam_synch_ind_ptr && roam_synch_ind_ptr->join_rsp)
-		qdf_mem_free(roam_synch_ind_ptr->join_rsp);
+	if (roam_synch_ind_ptr && roam_synch_ind_ptr->ric_tspec_data)
+		qdf_mem_free(roam_synch_ind_ptr->ric_tspec_data);
 	if (roam_synch_ind_ptr)
 		qdf_mem_free(roam_synch_ind_ptr);
 	if (bss_desc_ptr)