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
2020-12-17 10:58:22 +05:30
committed by snandini
コミット 21b49b36be

ファイルの表示

@@ -388,51 +388,58 @@ QDF_STATUS
pmo_register_action_frame_patterns(struct wlan_objmgr_vdev *vdev, pmo_register_action_frame_patterns(struct wlan_objmgr_vdev *vdev,
enum qdf_suspend_type suspend_type) enum qdf_suspend_type suspend_type)
{ {
struct pmo_action_wakeup_set_params *cmd;
struct pmo_action_wakeup_set_params cmd = {0};
int i = 0; int i = 0;
QDF_STATUS status = QDF_STATUS_SUCCESS; QDF_STATUS status = QDF_STATUS_SUCCESS;
cmd.vdev_id = pmo_vdev_get_id(vdev); cmd = qdf_mem_malloc(sizeof(*cmd));
cmd.operation = pmo_action_wakeup_set; 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) if (suspend_type == QDF_SYSTEM_SUSPEND)
cmd.action_category_map[i++] = cmd->action_category_map[i++] =
SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0; SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0;
else else
cmd.action_category_map[i++] = cmd->action_category_map[i++] =
RUNTIME_PM_ALLOWED_ACTION_FRAMES_BITMAP0; RUNTIME_PM_ALLOWED_ACTION_FRAMES_BITMAP0;
cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP1; 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_BITMAP2;
cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP3; 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_BITMAP4;
cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP5; 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_BITMAP6;
cmd.action_category_map[i++] = ALLOWED_ACTION_FRAMES_BITMAP7; 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_spec_mgmt(cmd->action_per_category);
set_action_id_drop_pattern_for_public_action(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++) { for (i = 0; i < PMO_SUPPORTED_ACTION_CATE_ELE_LIST; i++) {
if (i < ALLOWED_ACTION_FRAME_MAP_WORDS) if (i < ALLOWED_ACTION_FRAME_MAP_WORDS)
pmo_debug("%d action Wakeup pattern 0x%x in fw", pmo_debug("%d action Wakeup pattern 0x%x in fw",
i, cmd.action_category_map[i]); i, cmd->action_category_map[i]);
else else
cmd.action_category_map[i] = 0; cmd->action_category_map[i] = 0;
} }
pmo_debug("Spectrum mgmt action id drop bitmap: 0x%x", 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", 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 */ /* 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) if (status != QDF_STATUS_SUCCESS)
pmo_err("Failed to config wow action frame map, ret %d", pmo_err("Failed to config wow action frame map, ret %d",
status); status);
qdf_mem_free(cmd);
return status; return status;
} }