|
@@ -2099,6 +2099,12 @@ QDF_STATUS wmi_unified_cmd_send_fl(wmi_unified_t wmi_handle, wmi_buf_t buf,
|
|
|
return QDF_STATUS_E_INVAL;
|
|
|
}
|
|
|
|
|
|
+ if (wmi_has_wow_enable_ack_failed(wmi_handle)) {
|
|
|
+ wmi_nofl_err("wow enable ack already failed(via %s:%u)",
|
|
|
+ func, line);
|
|
|
+ return QDF_STATUS_E_INVAL;
|
|
|
+ }
|
|
|
+
|
|
|
#ifndef WMI_NON_TLV_SUPPORT
|
|
|
/* Do sanity check on the TLV parameter structure */
|
|
|
if (wmi_handle->target_type == WMI_TLV_TARGET) {
|
|
@@ -3068,6 +3074,21 @@ static void wmi_runtime_pm_init(struct wmi_unified *wmi_handle)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+void wmi_set_wow_enable_ack_failed(wmi_unified_t wmi_handle)
|
|
|
+{
|
|
|
+ qdf_atomic_set(&wmi_handle->is_wow_enable_ack_failed, 1);
|
|
|
+}
|
|
|
+
|
|
|
+void wmi_clear_wow_enable_ack_failed(wmi_unified_t wmi_handle)
|
|
|
+{
|
|
|
+ qdf_atomic_set(&wmi_handle->is_wow_enable_ack_failed, 0);
|
|
|
+}
|
|
|
+
|
|
|
+bool wmi_has_wow_enable_ack_failed(wmi_unified_t wmi_handle)
|
|
|
+{
|
|
|
+ return qdf_atomic_read(&wmi_handle->is_wow_enable_ack_failed);
|
|
|
+}
|
|
|
+
|
|
|
void *wmi_unified_get_soc_handle(struct wmi_unified *wmi_handle)
|
|
|
{
|
|
|
return wmi_handle->soc;
|
|
@@ -3159,6 +3180,7 @@ void *wmi_unified_get_pdev_handle(struct wmi_soc *soc, uint32_t pdev_idx)
|
|
|
wmi_interface_logging_init(wmi_handle, pdev_idx);
|
|
|
qdf_atomic_init(&wmi_handle->pending_cmds);
|
|
|
qdf_atomic_init(&wmi_handle->is_target_suspended);
|
|
|
+ qdf_atomic_init(&wmi_handle->is_wow_enable_ack_failed);
|
|
|
wmi_handle->target_type = soc->target_type;
|
|
|
wmi_handle->wmi_max_cmds = soc->wmi_max_cmds;
|
|
|
|
|
@@ -3288,6 +3310,7 @@ void *wmi_unified_attach(void *scn_handle,
|
|
|
qdf_atomic_init(&wmi_handle->is_target_suspended);
|
|
|
qdf_atomic_init(&wmi_handle->is_target_suspend_acked);
|
|
|
qdf_atomic_init(&wmi_handle->num_stats_over_qmi);
|
|
|
+ qdf_atomic_init(&wmi_handle->is_wow_enable_ack_failed);
|
|
|
wmi_runtime_pm_init(wmi_handle);
|
|
|
wmi_interface_logging_init(wmi_handle, WMI_HOST_PDEV_ID_0);
|
|
|
|
|
@@ -3392,6 +3415,8 @@ void wmi_unified_detach(struct wmi_unified *wmi_handle)
|
|
|
soc->wmi_ext2_service_bitmap = NULL;
|
|
|
}
|
|
|
|
|
|
+ wmi_clear_wow_enable_ack_failed(wmi_handle);
|
|
|
+
|
|
|
/* Decrease the ref count once refcount infra is present */
|
|
|
soc->wmi_psoc = NULL;
|
|
|
qdf_mem_free(soc);
|