Parcourir la source

qcacld-3.0: Reduce stack frame size while extracting pdev stats

Reduce stack frame size of target_if_cp_stats_extract_pdev_stats()
by allocating dynamic memory to wmi_host_pdev_stats.

Change-Id: I83a73f2973b54fbc28399c106ea52a0b6c1988f3
CRs-Fixed: 2868500
Dundi Raviteja il y a 4 ans
Parent
commit
3b0a146c82
1 fichiers modifiés avec 14 ajouts et 5 suppressions
  1. 14 5
      components/target_if/cp_stats/src/target_if_mc_cp_stats.c

+ 14 - 5
components/target_if/cp_stats/src/target_if_mc_cp_stats.c

@@ -365,7 +365,7 @@ static QDF_STATUS target_if_cp_stats_extract_pdev_stats(
 {
 	uint32_t i;
 	QDF_STATUS status;
-	wmi_host_pdev_stats pdev_stats;
+	wmi_host_pdev_stats *pdev_stats;
 	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
 	cdp_config_param_type val;
 
@@ -382,20 +382,29 @@ static QDF_STATUS target_if_cp_stats_extract_pdev_stats(
 	if (!ev->pdev_stats)
 		return QDF_STATUS_E_NOMEM;
 
+	pdev_stats = qdf_mem_malloc(sizeof(*pdev_stats));
+
+	if (!pdev_stats) {
+		cp_stats_err("malloc failed for pdev_stats");
+		return QDF_STATUS_E_NOMEM;
+	}
+
 	for (i = 0; i < ev->num_pdev_stats; i++) {
-		status = wmi_extract_pdev_stats(wmi_hdl, data, i, &pdev_stats);
+		status = wmi_extract_pdev_stats(wmi_hdl, data, i, pdev_stats);
 		if (QDF_IS_STATUS_ERROR(status)) {
 			cp_stats_err("wmi_extract_pdev_stats failed");
+			qdf_mem_free(pdev_stats);
 			return status;
 		}
-		ev->pdev_stats[i].max_pwr = pdev_stats.chan_tx_pwr;
+		ev->pdev_stats[i].max_pwr = pdev_stats->chan_tx_pwr;
 
 		target_if_cp_stats_extract_congestion(&ev->pdev_stats[i],
-						      &pdev_stats);
+						      pdev_stats);
 
-		val.cdp_pdev_param_chn_noise_flr = pdev_stats.chan_nf;
+		val.cdp_pdev_param_chn_noise_flr = pdev_stats->chan_nf;
 		cdp_txrx_set_pdev_param(soc, 0, CDP_CHAN_NOISE_FLOOR, val);
 	}
+	qdf_mem_free(pdev_stats);
 
 	return QDF_STATUS_SUCCESS;
 }