qcacld-3.0: Reduce Stack usage during IPA Setup
Reduce stack usage by allocating memory dynamically instead of static allocation during IPA setup. Change-Id: I438bd1e5b5ca1a467a1ab08d48fbe823190937e8 CRs-Fixed: 2611859
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user