Subject: Re: [PATCH net-next 2/3] net: ipa: fix another QMI message definition

From: Manivannan Sadhasivam <[email-masked]>
Date: Tue, 16 Mar 2021 09:12:08 +0530

On Mon, Mar 15, 2021 at 10:21:11AM -0500, Alex Elder wrote:
> The ipa_init_modem_driver_req_ei[] encoding array for the
> INIT_MODEM_DRIVER request message has some errors in it.
> 
> First, the tlv_type associated with the hw_stats_quota_size field is
> wrong; it duplicates the valiue used for the hw_stats_quota_base_addr
> field (0x1f) and should use 0x20 instead.  The tlv_type value for
> the hw_stats_drop_size field also uses the same duplicate value; it
> should use 0x22 instead.
> 
> Second, there is no definition for the hw_stats_drop_base_addr
> field.  It is an optional 32-bit enumerated type value.
> 
> Finally, the hw_stats_quota_base_addr, hw_stats_quota_size, and
> hw_stats_drop_size fields are defined as enumerated types; they
> should be unsigned 4-byte values.
> 
> Reported-by: Manivannan Sadhasivam <[email-masked]>
> Signed-off-by: Alex Elder <[email-masked]>

Acked-by: Manivannan Sadhasivam <[email-masked]>

Thanks,
Mani

> ---
>  drivers/net/ipa/ipa_qmi_msg.c | 34 +++++++++++++++++++++++++++-------
>  1 file changed, 27 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/net/ipa/ipa_qmi_msg.c b/drivers/net/ipa/ipa_qmi_msg.c
> index e00f829a783f6..e4a6efbe9bd00 100644
> --- a/drivers/net/ipa/ipa_qmi_msg.c
> +++ b/drivers/net/ipa/ipa_qmi_msg.c
> @@ -530,7 +530,7 @@ struct qmi_elem_info ipa_init_modem_driver_req_ei[] = {
>  					   hw_stats_quota_base_addr_valid),
>  	},
>  	{
> -		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
> +		.data_type	= QMI_UNSIGNED_4_BYTE,
>  		.elem_len	= 1,
>  		.elem_size	=
>  			sizeof_field(struct ipa_init_modem_driver_req,
> @@ -545,37 +545,57 @@ struct qmi_elem_info ipa_init_modem_driver_req_ei[] = {
>  		.elem_size	=
>  			sizeof_field(struct ipa_init_modem_driver_req,
>  				     hw_stats_quota_size_valid),
> -		.tlv_type	= 0x1f,
> +		.tlv_type	= 0x20,
>  		.offset		= offsetof(struct ipa_init_modem_driver_req,
>  					   hw_stats_quota_size_valid),
>  	},
>  	{
> -		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
> +		.data_type	= QMI_UNSIGNED_4_BYTE,
>  		.elem_len	= 1,
>  		.elem_size	=
>  			sizeof_field(struct ipa_init_modem_driver_req,
>  				     hw_stats_quota_size),
> -		.tlv_type	= 0x1f,
> +		.tlv_type	= 0x20,
>  		.offset		= offsetof(struct ipa_init_modem_driver_req,
>  					   hw_stats_quota_size),
>  	},
> +	{
> +		.data_type	= QMI_OPT_FLAG,
> +		.elem_len	= 1,
> +		.elem_size	=
> +			sizeof_field(struct ipa_init_modem_driver_req,
> +				     hw_stats_drop_base_addr_valid),
> +		.tlv_type	= 0x21,
> +		.offset		= offsetof(struct ipa_init_modem_driver_req,
> +					   hw_stats_drop_base_addr_valid),
> +	},
> +	{
> +		.data_type	= QMI_UNSIGNED_4_BYTE,
> +		.elem_len	= 1,
> +		.elem_size	=
> +			sizeof_field(struct ipa_init_modem_driver_req,
> +				     hw_stats_drop_base_addr),
> +		.tlv_type	= 0x21,
> +		.offset		= offsetof(struct ipa_init_modem_driver_req,
> +					   hw_stats_drop_base_addr),
> +	},
>  	{
>  		.data_type	= QMI_OPT_FLAG,
>  		.elem_len	= 1,
>  		.elem_size	=
>  			sizeof_field(struct ipa_init_modem_driver_req,
>  				     hw_stats_drop_size_valid),
> -		.tlv_type	= 0x1f,
> +		.tlv_type	= 0x22,
>  		.offset		= offsetof(struct ipa_init_modem_driver_req,
>  					   hw_stats_drop_size_valid),
>  	},
>  	{
> -		.data_type	= QMI_SIGNED_4_BYTE_ENUM,
> +		.data_type	= QMI_UNSIGNED_4_BYTE,
>  		.elem_len	= 1,
>  		.elem_size	=
>  			sizeof_field(struct ipa_init_modem_driver_req,
>  				     hw_stats_drop_size),
> -		.tlv_type	= 0x1f,
> +		.tlv_type	= 0x22,
>  		.offset		= offsetof(struct ipa_init_modem_driver_req,
>  					   hw_stats_drop_size),
>  	},
> -- 
> 2.27.0
>