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
このコミットが含まれているのは:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
新しいイシューから参照
ユーザーをブロックする