diff --git a/drivers/platform/msm/ipa_fmwk/ipa_fmwk.c b/drivers/platform/msm/ipa_fmwk/ipa_fmwk.c index ddc17c3049ce..c64edf86b2cd 100644 --- a/drivers/platform/msm/ipa_fmwk/ipa_fmwk.c +++ b/drivers/platform/msm/ipa_fmwk/ipa_fmwk.c @@ -386,6 +386,8 @@ struct ipa_fmwk_contex { int (*ipa_eth_client_conn_evt)(struct ipa_ecm_msg *msg); int (*ipa_eth_client_disconn_evt)(struct ipa_ecm_msg *msg); + int (*ipa_get_default_aggr_time_limit)(enum ipa_client_type client, + u32 *default_aggr_time_limit); }; static struct ipa_fmwk_contex *ipa_fmwk_ctx; @@ -486,6 +488,7 @@ int ipa_fmwk_register_ipa(const struct ipa_core_data *in) ipa_fmwk_ctx->ipa_register_rmnet_ctl_cb = in->ipa_register_rmnet_ctl_cb; ipa_fmwk_ctx->ipa_unregister_rmnet_ctl_cb = in->ipa_unregister_rmnet_ctl_cb; + ipa_fmwk_ctx->ipa_get_default_aggr_time_limit = in->ipa_get_default_aggr_time_limit; ipa_fmwk_ctx->ipa_ready = true; ipa_trigger_ipa_ready_cbs(); @@ -2043,6 +2046,18 @@ int ipa_eth_client_disconn_evt(struct ipa_ecm_msg *msg) } EXPORT_SYMBOL(ipa_eth_client_disconn_evt); +int ipa_get_default_aggr_time_limit(enum ipa_client_type client, + u32 *default_aggr_time_limit) +{ + int ret; + + IPA_FMWK_DISPATCH_RETURN(ipa_get_default_aggr_time_limit, + client, default_aggr_time_limit); + + return ret; +} +EXPORT_SYMBOL(ipa_get_default_aggr_time_limit); + /* module functions */ static int __init ipa_fmwk_init(void) { diff --git a/include/linux/ipa.h b/include/linux/ipa.h index f9025afc77af..042bc5569dd8 100644 --- a/include/linux/ipa.h +++ b/include/linux/ipa.h @@ -1714,6 +1714,9 @@ typedef void (*ipa_rmnet_ctl_stop_cb)(void *user_data); typedef void (*ipa_rmnet_ctl_rx_notify_cb)(void *user_data, void *rx_data); +int ipa_get_default_aggr_time_limit(enum ipa_client_type client, + u32 *default_aggr_time_limit); + /** * ipa_register_ipa_ready_cb() - register a callback to be invoked * when IPA core driver initialization is complete. @@ -2100,6 +2103,12 @@ static inline int ipa_uc_reg_rdyCB( return -EPERM; } +static inline int ipa_get_default_aggr_time_limit(enum ipa_client_type client, + u32 *default_aggr_time_limit) +{ + return -EPERM; +} + #endif /* IS_ENABLED(CONFIG_IPA3) */ /* stubs - to be removed once dependent drivers remove references */ diff --git a/include/linux/ipa_fmwk.h b/include/linux/ipa_fmwk.h index 194e334e986a..bc987d1144c6 100644 --- a/include/linux/ipa_fmwk.h +++ b/include/linux/ipa_fmwk.h @@ -106,6 +106,8 @@ struct ipa_core_data { void *user_data3); int (*ipa_unregister_rmnet_ctl_cb)(void); + int (*ipa_get_default_aggr_time_limit)(enum ipa_client_type client, + u32 *default_aggr_time_limit); }; struct ipa_usb_data { @@ -320,6 +322,9 @@ int ipa_fmwk_register_ipa_eth(const struct ipa_eth_data *in); int ipa_fmwk_register_ipa_qdss(const struct ipa_qdss_data *in); +int ipa_get_default_aggr_time_limit(enum ipa_client_type client, + u32 *default_aggr_time_limit); + #else /* IS_ENABLED(CONFIG_IPA3) */ int ipa_fmwk_register_ipa(const struct ipa_core_data *in) @@ -367,6 +372,12 @@ int ipa_fmwk_register_ipa_eth(const struct ipa_eth_data *in) return -EPERM; } +static inline int ipa_get_default_aggr_time_limit(enum ipa_client_type client, + u32 *default_aggr_time_limit) +{ + return -EPERM; +} + #endif /* IS_ENABLED(CONFIG_IPA3) */ #endif /* _IPA_FMWK_H_ */