|
@@ -489,26 +489,39 @@ static inline bool wlan_ipa_wdi_is_smmu_enabled(struct wlan_ipa_priv *ipa_ctx,
|
|
|
return ipa_ctx->is_smmu_enabled && qdf_mem_smmu_s1_enabled(osdev);
|
|
|
}
|
|
|
|
|
|
-static inline QDF_STATUS wlan_ipa_wdi_setup(struct wlan_ipa_priv *ipa_ctx,
|
|
|
- qdf_device_t osdev)
|
|
|
+static inline QDF_STATUS
|
|
|
+wlan_ipa_wdi_setup(struct wlan_ipa_priv *ipa_ctx,
|
|
|
+ qdf_device_t osdev)
|
|
|
{
|
|
|
- qdf_ipa_sys_connect_params_t sys_in[WLAN_IPA_MAX_IFACE];
|
|
|
+ qdf_ipa_sys_connect_params_t *sys_in = NULL;
|
|
|
int i;
|
|
|
+ QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
|
|
|
+
|
|
|
+ sys_in = qdf_mem_malloc(sizeof(*sys_in) * WLAN_IPA_MAX_IFACE);
|
|
|
+ if (!sys_in) {
|
|
|
+ ipa_err("sys_in allocation failed");
|
|
|
+ return QDF_STATUS_E_NOMEM;
|
|
|
+ }
|
|
|
|
|
|
for (i = 0; i < WLAN_IPA_MAX_IFACE; i++)
|
|
|
- qdf_mem_copy(&sys_in[i],
|
|
|
+ qdf_mem_copy(sys_in + i,
|
|
|
&ipa_ctx->sys_pipe[i].ipa_sys_params,
|
|
|
sizeof(qdf_ipa_sys_connect_params_t));
|
|
|
|
|
|
- return cdp_ipa_setup(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id,
|
|
|
- wlan_ipa_i2w_cb, wlan_ipa_w2i_cb,
|
|
|
- wlan_ipa_wdi_meter_notifier_cb,
|
|
|
- ipa_ctx->config->desc_size,
|
|
|
- ipa_ctx, wlan_ipa_is_rm_enabled(ipa_ctx->config),
|
|
|
- &ipa_ctx->tx_pipe_handle,
|
|
|
- &ipa_ctx->rx_pipe_handle,
|
|
|
- wlan_ipa_wdi_is_smmu_enabled(ipa_ctx, osdev),
|
|
|
- sys_in, ipa_ctx->over_gsi);
|
|
|
+ qdf_status = cdp_ipa_setup(ipa_ctx->dp_soc, ipa_ctx->dp_pdev_id,
|
|
|
+ wlan_ipa_i2w_cb, wlan_ipa_w2i_cb,
|
|
|
+ wlan_ipa_wdi_meter_notifier_cb,
|
|
|
+ ipa_ctx->config->desc_size,
|
|
|
+ ipa_ctx,
|
|
|
+ wlan_ipa_is_rm_enabled(ipa_ctx->config),
|
|
|
+ &ipa_ctx->tx_pipe_handle,
|
|
|
+ &ipa_ctx->rx_pipe_handle,
|
|
|
+ wlan_ipa_wdi_is_smmu_enabled(ipa_ctx, osdev),
|
|
|
+ sys_in, ipa_ctx->over_gsi);
|
|
|
+
|
|
|
+ qdf_mem_free(sys_in);
|
|
|
+
|
|
|
+ return qdf_status;
|
|
|
}
|
|
|
|
|
|
#ifdef FEATURE_METERING
|