qcacld-3.0: Resolve assert when sending D0WOW disable command

Currently while sending wmi command when target is suspend, it will
check whether command is WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID/
WMI_PDEV_RESUME_CMDID, but D0WOW command is an exception, to keep align
with legacy code so don't set wmi_handle->is_target_suspended if it is
D0WOW enable command.

Move out logic of checking D0WOW status from PMO tgt to core layer.

Change-Id: I164f24ea733e54e5e0dbdb77344917df5d039e53
CRs-Fixed: 2254047
This commit is contained in:
Will Huang
2018-06-04 14:24:33 +08:00
committed by nshrivas
父節點 0092b6736f
當前提交 c312328512
共有 2 個文件被更改,包括 13 次插入7 次删除

查看文件

@@ -609,13 +609,24 @@ pmo_core_enable_wow_in_fw(struct wlan_objmgr_psoc *psoc,
break;
}
if (psoc_ctx->psoc_cfg.d0_wow_supported &&
!psoc_ctx->caps.unified_wow &&
!param.can_suspend_link) {
psoc_ctx->wow.wow_state = pmo_wow_state_legacy_d0;
} else if (param.can_suspend_link) {
psoc_ctx->wow.wow_state = pmo_wow_state_unified_d3;
} else {
psoc_ctx->wow.wow_state = pmo_wow_state_unified_d0;
}
status = pmo_tgt_psoc_send_wow_enable_req(psoc, &param);
if (status != QDF_STATUS_SUCCESS) {
pmo_err("Failed to enable wow in fw");
goto out;
}
pmo_tgt_update_target_suspend_flag(psoc, true);
if (psoc_ctx->wow.wow_state != pmo_wow_state_legacy_d0)
pmo_tgt_update_target_suspend_flag(psoc, true);
status = qdf_wait_for_event_completion(&psoc_ctx->wow.target_suspend,
PMO_TARGET_SUSPEND_TIMEOUT);

查看文件

@@ -140,14 +140,11 @@ QDF_STATUS pmo_tgt_psoc_send_wow_enable_req(struct wlan_objmgr_psoc *psoc,
psoc_ctx = pmo_psoc_get_priv(psoc);
pmo_tx_ops = GET_PMO_TX_OPS_FROM_PSOC(psoc);
if (psoc_ctx->psoc_cfg.d0_wow_supported &&
!psoc_ctx->caps.unified_wow &&
!param->can_suspend_link) {
if (psoc_ctx->wow.wow_state == pmo_wow_state_legacy_d0) {
if (!pmo_tx_ops.psoc_send_d0wow_enable_req) {
pmo_err("psoc_send_d0wow_enable_req is null");
return QDF_STATUS_E_NULL_VALUE;
}
psoc_ctx->wow.wow_state = pmo_wow_state_legacy_d0;
pmo_debug("Sending D0WOW enable command...");
return pmo_tx_ops.psoc_send_d0wow_enable_req(psoc);
}
@@ -156,8 +153,6 @@ QDF_STATUS pmo_tgt_psoc_send_wow_enable_req(struct wlan_objmgr_psoc *psoc,
pmo_err("psoc_send_wow_enable_req is null");
return QDF_STATUS_E_NULL_VALUE;
}
psoc_ctx->wow.wow_state = param->can_suspend_link ?
pmo_wow_state_unified_d3 : pmo_wow_state_unified_d0;
return pmo_tx_ops.psoc_send_wow_enable_req(psoc, param);
}