Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96d452b9 authored by Skylar Chang's avatar Skylar Chang
Browse files

msm: ipa: Add WAN Transport Driver support for Q6 SSR



As part of the modem SSR design, wan-transport driver needs
to add an optional TLV for the INIT_MODEM_DRIVER QMI message
to indicate whether Q6 IPA driver needs to load the uC or not.

Change-Id: I60c5c1b7648244243424389b23ab16dc2b3b5600
Signed-off-by: default avatarSkylar Chang <chiaweic@codeaurora.org>
parent a65a4f74
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -802,6 +802,26 @@ struct elem_info ipa_init_modem_driver_req_msg_data_v01_ei[] = {
			struct ipa_init_modem_driver_req_msg_v01,
			ctrl_comm_dest_end_pt),
	},
	{
		.data_type	= QMI_OPT_FLAG,
		.elem_len	= 1,
		.elem_size	= sizeof(uint8_t),
		.is_array	= NO_ARRAY,
		.tlv_type	= 0x18,
		.offset		= offsetof(
			struct ipa_init_modem_driver_req_msg_v01,
			is_ssr_bootup_valid),
	},
	{
		.data_type	= QMI_UNSIGNED_1_BYTE,
		.elem_len	= 1,
		.elem_size	= sizeof(uint8_t),
		.is_array	= NO_ARRAY,
		.tlv_type	= 0x18,
		.offset		= offsetof(
			struct ipa_init_modem_driver_req_msg_v01,
			is_ssr_bootup),
	},
	{
		.data_type	= QMI_EOTI,
		.is_array	= NO_ARRAY,
+191 −167
Original line number Diff line number Diff line
/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -100,28 +100,28 @@ enum ipa_platform_type_enum_v01 {
struct ipa_hdr_tbl_info_type_v01 {
	uint32_t modem_offset_start;
	/*	Offset from the start of IPA Shared memory from which
		modem driver may insert header table entries.
	 *	modem driver may insert header table entries.
	 */
	uint32_t modem_offset_end;
	/*	Offset from the start of IPA shared mem beyond which modem
		driver shall not insert header table entries. The space
		available for the modem driver shall include the
		modem_offset_start and modem_offset_end.
	 *	driver shall not insert header table entries. The space
	 *	available for the modem driver shall include the
	 *	modem_offset_start and modem_offset_end.
	 */
};  /* Type */

struct ipa_route_tbl_info_type_v01 {
	uint32_t route_tbl_start_addr;
	/*	Identifies the start of the routing table. Denotes the offset
		from the start of the IPA Shared Mem
	 *	from the start of the IPA Shared Mem
	 */

	uint32_t num_indices;
	/*	Number of indices (starting from 0) that is being allocated to
		the modem. The number indicated here is also included in the
		allocation. The value of num_indices shall not exceed 31
		(5 bits used to specify the routing table index), unless there
		is a change in the hardware.
	 *	the modem. The number indicated here is also included in the
	 *	allocation. The value of num_indices shall not exceed 31
	 *	(5 bits used to specify the routing table index), unless there
	 *	is a change in the hardware.
	 */
};  /* Type */

@@ -129,7 +129,7 @@ struct ipa_modem_mem_info_type_v01 {

	uint32_t block_start_addr;
	/*	Identifies the start of the memory block allocated for the
		modem. Denotes the offset from the start of the IPA Shared Mem
	 *	modem. Denotes the offset from the start of the IPA Shared Mem
	 */

	uint32_t size;
@@ -173,7 +173,7 @@ struct ipa_init_modem_driver_req_msg_v01 {
	if v4_filter_tbl_start_addr is being passed */
	uint32_t v4_filter_tbl_start_addr;
	/*	Provides information about the starting address of IPV4 filter
		tableDenotes the offset from the start of the IPA Shared Mem
	 *	tableDenotes the offset from the start of the IPA Shared Mem
	 */

	/* Optional */
@@ -182,7 +182,7 @@ struct ipa_init_modem_driver_req_msg_v01 {
	/* Must be set to true if v6_filter_tbl_start_addr is being passed */
	uint32_t v6_filter_tbl_start_addr;
	/*	Provides information about the starting address of IPV6 filter
		table Denotes the offset from the start of the IPA Shared Mem
	 *	table Denotes the offset from the start of the IPA Shared Mem
	 */

	/* Optional */
@@ -191,8 +191,8 @@ struct ipa_init_modem_driver_req_msg_v01 {
	/* Must be set to true if modem_mem_info is being passed */
	struct ipa_modem_mem_info_type_v01 modem_mem_info;
	/*  Provides information about the start address and the size of
		the memory block that is being allocated to the modem driver.
		Denotes the physical address
	 *	the memory block that is being allocated to the modem driver.
	 *	Denotes the physical address
	 */

	/* Optional */
@@ -201,9 +201,23 @@ struct ipa_init_modem_driver_req_msg_v01 {
	ctrl_comm_dest_end_pt is being passed */
	uint32_t ctrl_comm_dest_end_pt;
	/*  Provides information about the destination end point on the
		application processor to which the modem driver can send
		control commands. The value of this parameter cannot exceed
		19 since IPA only supports 20 end points. */
	 *	application processor to which the modem driver can send
	 *	control commands. The value of this parameter cannot exceed
	 *	19 since IPA only supports 20 end points.
	 */

	/* Optional */
	/*  Modem Bootup Information */
	uint8_t is_ssr_bootup_valid;  /**< Must be set to true if
	is_ssr_bootup is being passed */
	uint8_t is_ssr_bootup;
	/*	Specifies whether the modem is booting up after a modem only
	 *	sub-system restart or not. This will let the modem driver
	 *	know that it doesn't have to reinitialize some of the HW
	 *	blocks because IPA has not been reset since the previous
	 *	initialization.
	 */

};  /* Message */

/* Response Message; Requests the modem IPA driver about initializtion */
@@ -219,10 +233,10 @@ struct ipa_init_modem_driver_resp_msg_v01 {
	/* Must be set to true if ctrl_comm_dest_ep is being passed */
	uint32_t ctrl_comm_dest_end_pt;
	/*	Provides information about the destination end point on the
		modem processor to which the master driver can send control
		commands. The value of this parameter cannot exceed 19 since
		IPA only supports 20 end points. This field is looked at only
		if the result in TLV RESULT_CODE is	QMI_RESULT_SUCCESS
	 *	modem processor to which the master driver can send control
	 *	commands. The value of this parameter cannot exceed 19 since
	 *	IPA only supports 20 end points. This field is looked at only
	 *	if the result in TLV RESULT_CODE is	QMI_RESULT_SUCCESS
	 */

	/* Optional */
@@ -231,16 +245,17 @@ struct ipa_init_modem_driver_resp_msg_v01 {
	/* Must be set to true if default_end_pt is being passed */
	uint32_t default_end_pt;
	/*  Provides information about the default end point. The master
		driver may or may not set the register in the hardware with
		this value. The value of this parameter cannot exceed 19
		since IPA only supports 20 end points. This field is looked
		at only if the result in TLV RESULT_CODE is QMI_RESULT_SUCCESS
	 *	driver may or may not set the register in the hardware with
	 *	this value. The value of this parameter cannot exceed 19
	 *	since IPA only supports 20 end points. This field is looked
	 *	at only if the result in TLV RESULT_CODE is QMI_RESULT_SUCCESS
	 */
};  /* Message */


/*	Request Message; This is the message that is exchanged between the
	control point and the service in order to register for indications. */
 *	control point and the service in order to register for indications.
 */
struct ipa_indication_reg_req_msg_v01 {
	/* Optional */
	/*  Master driver initialization completion */
@@ -248,17 +263,18 @@ struct ipa_indication_reg_req_msg_v01 {
	/* Must be set to true if master_driver_init_complete is being passed */
	uint8_t master_driver_init_complete;
	/*  If set to TRUE, this field indicates that the client is
		interested in getting indications about the completion
		of the initialization sequence of the master driver.
		Setting this field in the request message makes sense
		only when the QMI_IPA_INDICATION_REGISTER_REQ is being
		originated from the modem driver
	 *	interested in getting indications about the completion
	 *	of the initialization sequence of the master driver.
	 *	Setting this field in the request message makes sense
	 *	only when the QMI_IPA_INDICATION_REGISTER_REQ is being
	 *	originated from the modem driver
	 */
};  /* Message */


/* Response Message; This is the message that is exchanged between the
	control point and the service in order to register for indications. */
 *	control point and the service in order to register for indications.
 */
struct ipa_indication_reg_resp_msg_v01 {
	/* Mandatory */
	/*  Result Code */
@@ -268,15 +284,16 @@ struct ipa_indication_reg_resp_msg_v01 {


/*	Indication Message; Indication sent to the Modem IPA driver from
	master IPA driver about initialization being complete. */
 *	master IPA driver about initialization being complete.
 */
struct ipa_master_driver_init_complt_ind_msg_v01 {
	/* Mandatory */
	/*  Master driver initialization completion status */
	struct ipa_qmi_response_type_v01 master_driver_init_status;
	/*	Indicates the status of initialization. If everything went
		as expected, this field is set to SUCCESS. ERROR is set
		otherwise. Extended error info may be used to convey
		additional information about the error
	 *	as expected, this field is set to SUCCESS. ERROR is set
	 *	otherwise. Extended error info may be used to convey
	 *	additional information about the error
	 */
};  /* Message */

@@ -294,13 +311,13 @@ struct ipa_ipfltr_range_eq_16_type_v01 {
struct ipa_ipfltr_mask_eq_32_type_v01 {
	uint8_t offset;
	/*	Specifies the offset either from IHL or from the start of
		the IP packet. This depends on the equation that this structure
		is used in.
	 *	the IP packet. This depends on the equation that this structure
	 *	is used in.
	 */

	uint32_t mask;
	/*	Specifies the mask that has to be used in the comparison.
		The field is ANDed with the mask and compared against the value.
	 *	The field is ANDed with the mask and compared against the value.
	 */

	uint32_t value;
@@ -329,7 +346,7 @@ struct ipa_ipfltr_mask_eq_128_type_v01 {

	uint8_t mask[16];
	/*  Specifies the mask that has to be used in the comparison.
		The field is ANDed with the mask and compared against the value.
	 *	The field is ANDed with the mask and compared against the value.
	 */

	uint8_t value[16];
@@ -355,26 +372,28 @@ struct ipa_filter_rule_type_v01 {

	uint8_t num_ihl_offset_range_16;
	/*  The number of 16 bit range check rules at the location
		determined by IP header length plus a given offset offset
		in this rule. See the definition of the ipa_filter_range_eq_16
		for better understanding. The value of this field cannot exceed
		IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS which is set as 2
	 *	determined by IP header length plus a given offset offset
	 *	in this rule. See the definition of the ipa_filter_range_eq_16
	 *	for better understanding. The value of this field cannot exceed
	 *	IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS which is set as 2
	 */

	struct ipa_ipfltr_range_eq_16_type_v01
		ihl_offset_range_16[QMI_IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS_V01];
	/*	Array of the registered IP header length offset 16 bit range
		check rules.
	 *	check rules.
	 */

	uint8_t num_offset_meq_32;
	/*  The number of 32 bit masked comparison rules present in this rule
	/*  The number of 32 bit masked comparison rules present
	 *  in this rule
	 */

	struct ipa_ipfltr_mask_eq_32_type_v01
		offset_meq_32[QMI_IPA_IPFLTR_NUM_MEQ_32_EQNS_V01];
	/*  An array of all the possible 32bit masked comparison rules
		in this rule */
	 *	in this rule
	 */

	uint8_t tc_eq_present;
	/*  Specifies if the traffic class rule is present in this rule */
@@ -391,8 +410,8 @@ struct ipa_filter_rule_type_v01 {

	uint8_t ihl_offset_eq_16_present;
	/*	Specifies if there is a 16 bit comparison required at the
		location in	the packet determined by "Intenet Header length
		+ specified offset"
	 *	location in	the packet determined by "Intenet Header length
	 *	+ specified offset"
	 */

	struct ipa_ipfltr_eq_16_type_v01 ihl_offset_eq_16;
@@ -400,8 +419,8 @@ struct ipa_filter_rule_type_v01 {

	uint8_t ihl_offset_eq_32_present;
	/*	Specifies if there is a 32 bit comparison required at the
		location in the packet determined by "Intenet Header length
		+ specified offset"
	 *	location in the packet determined by "Intenet Header length
	 *	+ specified offset"
	 */

	struct ipa_ipfltr_eq_32_type_v01 ihl_offset_eq_32;
@@ -409,8 +428,8 @@ struct ipa_filter_rule_type_v01 {

	uint8_t num_ihl_offset_meq_32;
	/*	The number of 32 bit masked comparison equations in this
		rule. The location of the packet to be compared is
		determined by the IP Header length + the give offset
	 *	rule. The location of the packet to be compared is
	 *	determined by the IP Header length + the give offset
	 */

	struct ipa_ipfltr_mask_eq_32_type_v01
@@ -424,13 +443,14 @@ struct ipa_filter_rule_type_v01 {
	struct ipa_ipfltr_mask_eq_128_type_v01
		offset_meq_128[QMI_IPA_IPFLTR_NUM_MEQ_128_EQNS_V01];
	/*	Array of 128 bit comparison equations. The location in the
		packet is determined by the specified offset */
	 *	packet is determined by the specified offset
	 */

	uint8_t metadata_meq32_present;
	/*  Boolean indicating if the 32 bit masked comparison equation
		is present or not. Comparison is done against the metadata
		in IPA. Metadata can either be extracted from the packet
		header or from the "metadata" register.
	 *	is present or not. Comparison is done against the metadata
	 *	in IPA. Metadata can either be extracted from the packet
	 *	header or from the "metadata" register.
	 */

	struct ipa_ipfltr_mask_eq_32_type_v01
@@ -478,36 +498,36 @@ enum ipa_filter_action_enum_v01 {
struct ipa_filter_spec_type_v01 {
	uint32_t filter_spec_identifier;
	/*	This field is used to identify a filter spec in the list
		of filter specs being sent from the client. This field
		is applicable only in the filter install request and response.
	 *	of filter specs being sent from the client. This field
	 *	is applicable only in the filter install request and response.
	 */

	enum ipa_ip_type_enum_v01 ip_type;
	/*	This field identifies the IP type for which this rule is
		applicable. The driver needs to identify the filter table
		(V6 or V4) and this field is essential for that
	 *	applicable. The driver needs to identify the filter table
	 *	(V6 or V4) and this field is essential for that
	 */

	struct ipa_filter_rule_type_v01 filter_rule;
	/*	This field specifies the rules in the filter spec. These rules
		are the ones that are matched against fields in the packet.
	 *	are the ones that are matched against fields in the packet.
	 */

	enum ipa_filter_action_enum_v01 filter_action;
	/*	This field specifies the action to be taken when a filter match
		occurs. The remote side should install this information into the
		hardware along with the filter equations.
	 *	occurs. The remote side should install this information into the
	 *	hardware along with the filter equations.
	 */

	uint8_t is_routing_table_index_valid;
	/*	Specifies whether the routing table index is present or not.
		If the action is "QMI_IPA_FILTER_ACTION_EXCEPTION", this
		parameter need not be provided.
	 *	If the action is "QMI_IPA_FILTER_ACTION_EXCEPTION", this
	 *	parameter need not be provided.
	 */

	uint32_t route_table_index;
	/*	This is the index in the routing table that should be used
		to route the packets if the filter rule is hit
	 *	to route the packets if the filter rule is hit
	 */

	uint8_t is_mux_id_valid;
@@ -515,17 +535,18 @@ struct ipa_filter_spec_type_v01 {

	uint32_t mux_id;
	/*	This field identifies the QMAP MUX ID. As a part of QMAP
		protocol, several data calls may be multiplexed over the
		same physical transport channel. This identifier is used to
		identify one such data call. The maximum value for this
		identifier is 255.
	 *	protocol, several data calls may be multiplexed over the
	 *	same physical transport channel. This identifier is used to
	 *	identify one such data call. The maximum value for this
	 *	identifier is 255.
	 */
};  /* Type */


/** Request Message; This is the message that is exchanged between the
		control point and the service in order to request the installation
		of filtering rules in the hardware block by the remote side. */
/*  Request Message; This is the message that is exchanged between the
 *	control point and the service in order to request the installation
 *	of filtering rules in the hardware block by the remote side.
 */
struct ipa_install_fltr_rule_req_msg_v01 {
	/* Optional */
	/*  IP type that this rule applies to
@@ -537,9 +558,9 @@ struct ipa_install_fltr_rule_req_msg_v01 {
	struct ipa_filter_spec_type_v01
		filter_spec_list[QMI_IPA_MAX_FILTERS_V01];
	/*	This structure defines the list of filters that have
			to be installed in the hardware. The driver installing
			these rules shall do so in the same order as specified
			in this list.
	 *		to be installed in the hardware. The driver installing
	 *		these rules shall do so in the same order as specified
	 *		in this list.
	 */

	/* Optional */
@@ -548,39 +569,40 @@ struct ipa_install_fltr_rule_req_msg_v01 {
	/* Must be set to true if source_pipe_index is being passed */
	uint32_t source_pipe_index;
	/*	This is the source pipe on which the filter rule is to be
		installed. The requestor may always not know the pipe
		indices. If not specified, the receiver shall install
		this rule on all the pipes that it controls through
		which data may be fed into IPA.
	 *	installed. The requestor may always not know the pipe
	 *	indices. If not specified, the receiver shall install
	 *	this rule on all the pipes that it controls through
	 *	which data may be fed into IPA.
	 */
};  /* Message */

struct ipa_filter_rule_identifier_to_handle_map_v01 {
	uint32_t filter_spec_identifier;
	/*	This field is used to identify a filter spec in the list of
		filter specs being sent from the client. This field is
		applicable only in the filter install request and response.
	 *	filter specs being sent from the client. This field is
	 *	applicable only in the filter install request and response.
	 */
	uint32_t filter_handle;
	/*  This field is used to identify a rule in any subsequent message.
		This is a value that is provided by the server to the control
		point
	 *	This is a value that is provided by the server to the control
	 *	point
	 */
};  /* Type */

/* Response Message; This is the message that is exchanged between the
		control point and the service in order to request the
		installation of filtering rules in the hardware block by
		the remote side. */
 * control point and the service in order to request the
 * installation of filtering rules in the hardware block by
 * the remote side.
 */
struct ipa_install_fltr_rule_resp_msg_v01 {
	/* Mandatory */
	/*  Result Code */
	struct ipa_qmi_response_type_v01 resp;
	/*	Standard response type.
		Standard response type. Contains the following data members:
		- qmi_result_type -- QMI_RESULT_SUCCESS or QMI_RESULT_FAILURE
		- qmi_error_type  -- Error code. Possible error code values are
		described in the error codes section of each message definition.
	 *	Standard response type. Contains the following data members:
	 *	- qmi_result_type -- QMI_RESULT_SUCCESS or QMI_RESULT_FAILURE
	 *	- qmi_error_type  -- Error code. Possible error code values are
	 *	described in the error codes section of each message definition.
	 */

	/* Optional */
@@ -592,42 +614,43 @@ struct ipa_install_fltr_rule_resp_msg_v01 {
	struct ipa_filter_rule_identifier_to_handle_map_v01
		filter_handle_list[QMI_IPA_MAX_FILTERS_V01];
	/*  This is a list of handles returned to the control point.
		Each handle is mapped to the rule identifier that was
		specified in the request message. Any further reference
		to the rule is done using the filter handle
	 *	Each handle is mapped to the rule identifier that was
	 *	specified in the request message. Any further reference
	 *	to the rule is done using the filter handle
	 */
};  /* Message */

struct ipa_filter_handle_to_index_map_v01 {
	uint32_t filter_handle;
	/*	This is a handle that was given to the remote client that
		requested the rule addition.
	 *	requested the rule addition.
	 */
	uint32_t filter_index;
	/*	This index denotes the location in a filter table, where the
		filter rule has been installed. The maximum value of this
		field is 64.
	 *	filter rule has been installed. The maximum value of this
	 *	field is 64.
	 */
};  /* Type */

/** Request Message; This is the message that is exchanged between the
		control point and the service in order to notify the remote driver
		about the installation of the filter rule supplied earlier by
		the remote driver */
/* Request Message; This is the message that is exchanged between the
 * control point and the service in order to notify the remote driver
 * about the installation of the filter rule supplied earlier by
 * the remote driver
 */
struct ipa_fltr_installed_notif_req_msg_v01 {
	/*	Mandatory	*/
	/*  Pipe index	*/
	uint32_t source_pipe_index;
	/*	This is the source pipe on which the filter rule has been
		installed or was attempted to be installed
	 *	installed or was attempted to be installed
	 */

	/* Mandatory */
	/*  Installation Status */
	enum ipa_qmi_result_type_v01 install_status;
	/*	This is the status of installation. If this indicates
		SUCCESS, other optional fields carry additional
		information
	 *	SUCCESS, other optional fields carry additional
	 *	information
	 */

	/* Mandatory */
@@ -637,9 +660,9 @@ struct ipa_fltr_installed_notif_req_msg_v01 {
	struct ipa_filter_handle_to_index_map_v01
		filter_index_list[QMI_IPA_MAX_FILTERS_V01];
	/*	This field provides the list of filter indices and the
		corresponding filter handle. If the installation_status
		indicates failure, then the filter indices shall be set
		to a reserve index (255)
	 *	corresponding filter handle. If the installation_status
	 *	indicates failure, then the filter indices shall be set
	 *	to a reserve index (255)
	 */

	/* Optional */
@@ -648,10 +671,10 @@ struct ipa_fltr_installed_notif_req_msg_v01 {
	/* Must be set to true if embedded_pipe_index is being passed */
	uint32_t embedded_pipe_index;
	/*	This index denotes the embedded pipe number on which a call to
		the same PDN has been made. If this field is set, it denotes
		that this is a use case where PDN sharing is happening. The
		embedded pipe is used to send data from the embedded client
		in the device
	 *	the same PDN has been made. If this field is set, it denotes
	 *	that this is a use case where PDN sharing is happening. The
	 *	embedded pipe is used to send data from the embedded client
	 *	in the device
	 */

	/* Optional */
@@ -660,9 +683,9 @@ struct ipa_fltr_installed_notif_req_msg_v01 {
	/* Must be set to true if retain_header is being passed */
	uint8_t retain_header;
	/*	This field indicates if the driver installing the rule has
		turned on the "retain header" bit. If this is true, the
		header that is removed by IPA is reinserted after the
		packet processing is completed.
	 *	turned on the "retain header" bit. If this is true, the
	 *	header that is removed by IPA is reinserted after the
	 *	packet processing is completed.
	 */

	/* Optional */
@@ -671,15 +694,16 @@ struct ipa_fltr_installed_notif_req_msg_v01 {
	/**< Must be set to true if embedded_call_mux_id is being passed */
	uint32_t embedded_call_mux_id;
	/*	This identifies one of the many calls that have been originated
		on the embedded pipe. This is how we identify the PDN gateway to
		which traffic from the source pipe has to flow.
	 *	on the embedded pipe. This is how we identify the PDN gateway to
	 *	which traffic from the source pipe has to flow.
	 */

};  /* Message */

/* Response Message; This is the message that is exchanged between the control
	point and the service in order to notify the remote driver about the
	installation of the filter rule supplied earlier by the remote driver */
 *	point and the service in order to notify the remote driver about the
 *	installation of the filter rule supplied earlier by the remote driver
 */
struct ipa_fltr_installed_notif_resp_msg_v01 {
	/* Mandatory */
	/*  Result Code */
@@ -698,8 +722,8 @@ struct ipa_fltr_installed_notif_resp_msg_v01 {
#define QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_V01 0x0024
#define QMI_IPA_FILTER_INSTALLED_NOTIF_RESP_V01 0x0024

/* skylar add for max length*/
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 72
/* add for max length*/
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 76
#define QMI_IPA_INIT_MODEM_DRIVER_RESP_MAX_MSG_LEN_V01 21
#define QMI_IPA_INDICATION_REGISTER_REQ_MAX_MSG_LEN_V01 4
#define QMI_IPA_INDICATION_REGISTER_RESP_MAX_MSG_LEN_V01 7