firmware: arm_scmi: Introduce get_max_msg_size() helper/accessor
When the agent is sending data to the SCMI platform, the drivers in the agent could check the maximum message size supported to avoid potential protocol buffer overflow. Introduce the helper/accessor function get_max_msg_size() for the same. Reviewed-by: Cristian Marussi <cristian.marussi@arm.com> Reviewed-by: Dhruva Gole <d-gole@ti.com> Signed-off-by: Peng Fan <peng.fan@nxp.com> Link: https://lore.kernel.org/r/20240418-pinctrl-scmi-v11-1-499dca9864a7@nxp.com Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
fc110108b9
commit
4869b5cc96
@ -1662,6 +1662,20 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* scmi_common_get_max_msg_size - Get maximum message size
|
||||
* @ph: A protocol handle reference.
|
||||
*
|
||||
* Return: Maximum message size for the current protocol.
|
||||
*/
|
||||
static int scmi_common_get_max_msg_size(const struct scmi_protocol_handle *ph)
|
||||
{
|
||||
const struct scmi_protocol_instance *pi = ph_to_pi(ph);
|
||||
struct scmi_info *info = handle_to_scmi_info(pi->handle);
|
||||
|
||||
return info->desc->max_msg_size;
|
||||
}
|
||||
|
||||
/**
|
||||
* struct scmi_iterator - Iterator descriptor
|
||||
* @msg: A reference to the message TX buffer; filled by @prepare_message with
|
||||
@ -1973,6 +1987,7 @@ static int scmi_protocol_msg_check(const struct scmi_protocol_handle *ph,
|
||||
|
||||
static const struct scmi_proto_helpers_ops helpers_ops = {
|
||||
.extended_name_get = scmi_common_extended_name_get,
|
||||
.get_max_msg_size = scmi_common_get_max_msg_size,
|
||||
.iter_response_init = scmi_iterator_init,
|
||||
.iter_response_run = scmi_iterator_run,
|
||||
.protocol_msg_check = scmi_protocol_msg_check,
|
||||
|
@ -260,6 +260,7 @@ struct scmi_fc_info {
|
||||
* @fastchannel_init: A common helper used to initialize FC descriptors by
|
||||
* gathering FC descriptions from the SCMI platform server.
|
||||
* @fastchannel_db_ring: A common helper to ring a FC doorbell.
|
||||
* @get_max_msg_size: A common helper to get the maximum message size.
|
||||
*/
|
||||
struct scmi_proto_helpers_ops {
|
||||
int (*extended_name_get)(const struct scmi_protocol_handle *ph,
|
||||
@ -279,6 +280,7 @@ struct scmi_proto_helpers_ops {
|
||||
struct scmi_fc_db_info **p_db,
|
||||
u32 *rate_limit);
|
||||
void (*fastchannel_db_ring)(struct scmi_fc_db_info *db);
|
||||
int (*get_max_msg_size)(const struct scmi_protocol_handle *ph);
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user