|
@@ -5290,6 +5290,10 @@ int wlan_ipa_wdi_opt_dpath_flt_rsrv_cb(
|
|
|
pdev_id = ipa_obj->dp_pdev_id;
|
|
|
psoc = wlan_pdev_get_psoc(pdev);
|
|
|
wmi_handle = get_wmi_unified_hdl_from_psoc(psoc);
|
|
|
+ if (!wmi_handle) {
|
|
|
+ ipa_err("Unable to get wmi handle");
|
|
|
+ return QDF_STATUS_FILT_REQ_ERROR;
|
|
|
+ }
|
|
|
|
|
|
/* Hold wakelock */
|
|
|
qdf_wake_lock_acquire(&ipa_obj->opt_dp_wake_lock,
|
|
@@ -5297,7 +5301,14 @@ int wlan_ipa_wdi_opt_dpath_flt_rsrv_cb(
|
|
|
ipa_info("opt_dp: Wakelock acquired");
|
|
|
qdf_pm_system_wakeup();
|
|
|
|
|
|
- ipa_info("Target suspend state %d", qdf_atomic_read(&wmi_handle->is_target_suspended));
|
|
|
+ response = cdp_ipa_pcie_link_up(ipa_obj->dp_soc);
|
|
|
+ if (response) {
|
|
|
+ ipa_err("opt_dp: Pcie link up fail %d", response);
|
|
|
+ goto error_pcie_link_up;
|
|
|
+ }
|
|
|
+
|
|
|
+ ipa_info("opt_dp :Target suspend state %d",
|
|
|
+ qdf_atomic_read(&wmi_handle->is_target_suspended));
|
|
|
while (qdf_atomic_read(&wmi_handle->is_target_suspended) &&
|
|
|
wait_cnt < OPT_DP_TARGET_RESUME_WAIT_COUNT) {
|
|
|
qdf_sleep(OPT_DP_TARGET_RESUME_WAIT_TIMEOUT_MS);
|
|
@@ -5309,9 +5320,6 @@ int wlan_ipa_wdi_opt_dpath_flt_rsrv_cb(
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
- response = cdp_ipa_pcie_link_up(ipa_obj->dp_soc);
|
|
|
- ipa_info("opt_dp: Pcie link up status %d", response);
|
|
|
-
|
|
|
/* Disable Low power features before filter reservation */
|
|
|
ipa_info("opt_dp: Disable low power features to reserve filter");
|
|
|
param_val = 0;
|
|
@@ -5334,6 +5342,8 @@ int wlan_ipa_wdi_opt_dpath_flt_rsrv_cb(
|
|
|
return cdp_ipa_rx_cce_super_rule_setup(ipa_obj->dp_soc, dp_flt_params);
|
|
|
|
|
|
error:
|
|
|
+ cdp_ipa_pcie_link_down(ipa_obj->dp_soc);
|
|
|
+error_pcie_link_up:
|
|
|
qdf_wake_lock_release(&ipa_obj->opt_dp_wake_lock,
|
|
|
WIFI_POWER_EVENT_WAKELOCK_OPT_WIFI_DP);
|
|
|
return QDF_STATUS_FILT_REQ_ERROR;
|