ソースを参照

qcacld-3.0: Fix RSSI_CHANGE command values

Move the rssi change vdev params initialization to
csr_neighbor_roam_info_ctx_init() so that vdev priv object will
be created and per vdev parameters are saved and proper values
are sent to firmware.

Change-Id: I87c8272d89f431fa3db60beed4d1da6d9790ec28
CRs-Fixed: 2774826
Pragaspathi Thilagaraj 4 年 前
コミット
4bfed04ab4

+ 5 - 2
components/wmi/src/wmi_unified_roam_tlv.c

@@ -1946,7 +1946,7 @@ static uint8_t *wmi_add_fils_tlv(wmi_unified_t wmi_handle,
 		     erp_info->realm_len);
 
 	buf_ptr += sizeof(*fils_tlv);
-	wmi_debug("RSO_CONFIG: ERP: usrname_len:%d next_erp_seq_num:%d rRk_len:%d rIk_len:%d realm_len:%d",
+	wmi_debug("RSO_CFG: ERP: usrname_len:%d next_erp_seq_num:%d rRk_len:%d rIk_len:%d realm_len:%d",
 		  erp_info->username_length, erp_info->next_erp_seq_num,
 		  erp_info->rRk_length, erp_info->rIk_length,
 		  erp_info->realm_len);
@@ -3282,6 +3282,9 @@ static QDF_STATUS send_roam_scan_offload_chan_list_cmd_tlv(
 		     (i < WMI_ROAM_MAX_CHANNELS)); i++)
 		roam_chan_list_array[i] = chan_list[i];
 
+	wmi_debug("RSO_CFG: vdev:%d num_chan:%d cache_type:%d",
+		  chan_list_fp->vdev_id, chan_list_fp->num_chan,
+		  rso_ch_info->chan_cache_type);
 	wmi_mtrace(WMI_ROAM_CHAN_LIST, NO_SESSION, 0);
 	status = wmi_unified_cmd_send(wmi_handle, buf,
 				      len, WMI_ROAM_CHAN_LIST);
@@ -3417,7 +3420,7 @@ static QDF_STATUS send_roam_scan_offload_rssi_change_cmd_tlv(
 	if (QDF_IS_STATUS_ERROR(status))
 		goto error;
 
-	wmi_nofl_debug("RSO_PARAM: rssi_change_thresh:%d bcn_rssi_weight:%d hirssi_delay_btw_scans:%d",
+	wmi_nofl_debug("RSO_CFG: rssi_change_thresh:%d bcn_rssi_weight:%d hirssi_delay_btw_scans:%d",
 		       rssi_change_fp->roam_scan_rssi_change_thresh,
 		       rssi_change_fp->bcn_rssi_weight,
 		       rssi_change_fp->hirssi_delay_btw_scans);

+ 15 - 10
core/sme/src/csr/csr_neighbor_roam.c

@@ -799,6 +799,7 @@ static void csr_neighbor_roam_info_ctx_init(struct mac_context *mac,
 {
 	tpCsrNeighborRoamControlInfo ngbr_roam_info =
 		&mac->roam.neighborRoamInfo[session_id];
+	struct cm_roam_values_copy src_cfg;
 	struct csr_roam_session *session = &mac->roam.roamSession[session_id];
 	int init_ft_flag = false;
 
@@ -823,6 +824,20 @@ static void csr_neighbor_roam_info_ctx_init(struct mac_context *mac,
 	ngbr_roam_info->currentRoamBeaconRssiWeight =
 		ngbr_roam_info->cfgParams.nRoamBeaconRssiWeight;
 
+	/*
+	 * Update RSSI change params to vdev
+	 */
+	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_rescan_rssi_diff;
+	wlan_cm_roam_cfg_set_value(mac->psoc, session_id,
+				   RSSI_CHANGE_THRESHOLD, &src_cfg);
+
+	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_beacon_rssi_weight;
+	wlan_cm_roam_cfg_set_value(mac->psoc, session_id,
+				   BEACON_RSSI_WEIGHT, &src_cfg);
+
+	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_scan_hi_rssi_delay;
+	wlan_cm_roam_cfg_set_value(mac->psoc, session_id,
+				   HI_RSSI_DELAY_BTW_SCANS, &src_cfg);
 	/*
 	 * Now we can clear the preauthDone that
 	 * was saved as we are connected afresh
@@ -1037,7 +1052,6 @@ QDF_STATUS csr_neighbor_roam_init(struct mac_context *mac, uint8_t sessionId)
 {
 	QDF_STATUS status;
 	tCsrChannelInfo *specific_chan_info;
-	struct cm_roam_values_copy src_cfg;
 	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
 		&mac->roam.neighborRoamInfo[sessionId];
 
@@ -1058,9 +1072,6 @@ QDF_STATUS csr_neighbor_roam_init(struct mac_context *mac, uint8_t sessionId)
 		mac->mlme_cfg->lfr.opportunistic_scan_threshold_diff;
 	pNeighborRoamInfo->cfgParams.nRoamRescanRssiDiff =
 		mac->mlme_cfg->lfr.roam_rescan_rssi_diff;
-	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_rescan_rssi_diff;
-	wlan_cm_roam_cfg_set_value(mac->psoc, sessionId,
-				   RSSI_CHANGE_THRESHOLD, &src_cfg);
 
 	pNeighborRoamInfo->cfgParams.nRoamBmissFirstBcnt =
 		mac->mlme_cfg->lfr.roam_bmiss_first_bcnt;
@@ -1069,9 +1080,6 @@ QDF_STATUS csr_neighbor_roam_init(struct mac_context *mac, uint8_t sessionId)
 
 	pNeighborRoamInfo->cfgParams.nRoamBeaconRssiWeight =
 		mac->mlme_cfg->lfr.roam_beacon_rssi_weight;
-	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_beacon_rssi_weight;
-	wlan_cm_roam_cfg_set_value(mac->psoc, sessionId,
-				   BEACON_RSSI_WEIGHT, &src_cfg);
 
 	pNeighborRoamInfo->cfgParams.neighborScanPeriod =
 		mac->mlme_cfg->lfr.neighbor_scan_timer_period;
@@ -1127,9 +1135,6 @@ QDF_STATUS csr_neighbor_roam_init(struct mac_context *mac, uint8_t sessionId)
 
 	pNeighborRoamInfo->cfgParams.hi_rssi_scan_delay =
 		mac->mlme_cfg->lfr.roam_scan_hi_rssi_delay;
-	src_cfg.uint_value = mac->mlme_cfg->lfr.roam_scan_hi_rssi_delay;
-	wlan_cm_roam_cfg_set_value(mac->psoc, sessionId,
-				   HI_RSSI_DELAY_BTW_SCANS, &src_cfg);
 
 	pNeighborRoamInfo->cfgParams.hi_rssi_scan_rssi_ub =
 		mac->mlme_cfg->lfr.roam_scan_hi_rssi_ub;