Преглед на файлове

qcacld-3.0: Reduce stack frame size while registering action frame

Reduce stack frame size of pmo_register_action_frame_patterns()
by allocating dynamic memory to struct pmo_action_wakeup_set_params.

Change-Id: I4beed12c18c4e213c76e35c7762e59fc7d2ab957
CRs-Fixed: 2865021
Dundi Raviteja преди 4 години
родител
ревизия
21b49b36be
променени са 1 файла, в които са добавени 27 реда и са изтрити 20 реда
  1. 27 20
      components/pmo/core/src/wlan_pmo_static_config.c

+ 27 - 20
components/pmo/core/src/wlan_pmo_static_config.c

@@ -388,51 +388,58 @@ QDF_STATUS
 pmo_register_action_frame_patterns(struct wlan_objmgr_vdev *vdev,
 				   enum qdf_suspend_type suspend_type)
 {
-
-	struct pmo_action_wakeup_set_params cmd = {0};
+	struct pmo_action_wakeup_set_params *cmd;
 	int i = 0;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
-	cmd.vdev_id = pmo_vdev_get_id(vdev);
-	cmd.operation = pmo_action_wakeup_set;
+	cmd = qdf_mem_malloc(sizeof(*cmd));
+	if (!cmd) {
+		pmo_err("memory allocation failed for wakeup set params");
+		return QDF_STATUS_E_NOMEM;
+	}
+
+	cmd->vdev_id = pmo_vdev_get_id(vdev);
+	cmd->operation = pmo_action_wakeup_set;
 
 	if (suspend_type == QDF_SYSTEM_SUSPEND)
-		cmd.action_category_map[i++] =
+		cmd->action_category_map[i++] =
 			SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0;
 	else
-		cmd.action_category_map[i++] =
+		cmd->action_category_map[i++] =
 				RUNTIME_PM_ALLOWED_ACTION_FRAMES_BITMAP0;
 
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP1;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP2;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP3;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP4;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP5;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP6;
-	cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP7;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP1;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP2;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP3;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP4;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP5;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP6;
+	cmd->action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP7;
 
-	set_action_id_drop_pattern_for_spec_mgmt(cmd.action_per_category);
-	set_action_id_drop_pattern_for_public_action(cmd.action_per_category);
+	set_action_id_drop_pattern_for_spec_mgmt(cmd->action_per_category);
+	set_action_id_drop_pattern_for_public_action(cmd->action_per_category);
 
 	for (i = 0; i < PMO_SUPPORTED_ACTION_CATE_ELE_LIST; i++) {
 		if (i < ALLOWED_ACTION_FRAME_MAP_WORDS)
 			pmo_debug("%d action Wakeup pattern 0x%x in fw",
-				  i, cmd.action_category_map[i]);
+				  i, cmd->action_category_map[i]);
 		else
-			cmd.action_category_map[i] = 0;
+			cmd->action_category_map[i] = 0;
 	}
 
 	pmo_debug("Spectrum mgmt action id drop bitmap: 0x%x",
-			cmd.action_per_category[PMO_MAC_ACTION_SPECTRUM_MGMT]);
+			cmd->action_per_category[PMO_MAC_ACTION_SPECTRUM_MGMT]);
 	pmo_debug("Public action id drop bitmap: 0x%x",
-			cmd.action_per_category[PMO_MAC_ACTION_PUBLIC_USAGE]);
+			cmd->action_per_category[PMO_MAC_ACTION_PUBLIC_USAGE]);
 
 	/*  config action frame patterns */
-	status = pmo_tgt_send_action_frame_pattern_req(vdev, &cmd);
+	status = pmo_tgt_send_action_frame_pattern_req(vdev, cmd);
 	if (status != QDF_STATUS_SUCCESS)
 		pmo_err("Failed to config wow action frame map, ret %d",
 			status);
 
+	qdf_mem_free(cmd);
+
 	return status;
 }