msm: ipa: add new QMI support for ipa stats
In Android platform, apps-ipa needs to get ipa-stats from Q6-ipa via QMI-msg to update the iptable chains for CNE to know the tethering-pair stats, also set the APN network quota usage. Change-Id: I9b9222b4f8f8cf36c95b03b777fdd4aa7c007c21 Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This commit is contained in:
parent
fdb5d2ec7a
commit
6480dfd2e9
|
@ -72,6 +72,15 @@ extern struct elem_info ipa_disable_force_clear_datapath_req_msg_data_v01_ei[];
|
|||
extern struct elem_info ipa_disable_force_clear_datapath_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_config_req_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_config_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_get_data_stats_req_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_get_data_stats_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_get_apn_data_stats_req_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_get_apn_data_stats_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_set_data_usage_quota_req_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_set_data_usage_quota_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_data_usage_quota_reached_ind_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_stop_data_usage_quota_req_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa_stop_data_usage_quota_resp_msg_data_v01_ei[];
|
||||
|
||||
/**
|
||||
* struct ipa_rmnet_context - IPA rmnet context
|
||||
|
|
|
@ -634,8 +634,8 @@ static struct elem_info ipa_filter_spec_type_data_v01_ei[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct
|
||||
elem_info ipa_filter_rule_identifier_to_handle_map_data_v01_ei[] = {
|
||||
static struct elem_info
|
||||
ipa_filter_rule_identifier_to_handle_map_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
|
@ -1006,6 +1006,26 @@ struct elem_info ipa_indication_reg_req_msg_data_v01_ei[] = {
|
|||
struct ipa_indication_reg_req_msg_v01,
|
||||
master_driver_init_complete),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_indication_reg_req_msg_v01,
|
||||
data_usage_quota_reached_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_indication_reg_req_msg_v01,
|
||||
data_usage_quota_reached),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
|
@ -1811,3 +1831,536 @@ struct elem_info ipa_config_resp_msg_data_v01_ei[] = {
|
|||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_get_data_stats_req_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_SIGNED_4_BYTE_ENUM,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_req_msg_v01,
|
||||
ipa_stats_type),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_req_msg_v01,
|
||||
reset_stats_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_1_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_req_msg_v01,
|
||||
reset_stats),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info ipa_pipe_stats_info_type_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct ipa_pipe_stats_info_type_v01,
|
||||
pipe_index),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct ipa_pipe_stats_info_type_v01,
|
||||
num_ipv4_packets),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct ipa_pipe_stats_info_type_v01,
|
||||
num_ipv4_bytes),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct ipa_pipe_stats_info_type_v01,
|
||||
num_ipv6_packets),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct ipa_pipe_stats_info_type_v01,
|
||||
num_ipv6_bytes),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info ipa_stats_type_filter_rule_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_stats_type_filter_rule_v01,
|
||||
filter_rule_index),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_stats_type_filter_rule_v01,
|
||||
num_packets),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_get_data_stats_resp_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(struct qmi_response_type_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x02,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
resp),
|
||||
.ei_array = get_qmi_response_type_v01_ei(),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
ipa_stats_type_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_SIGNED_4_BYTE_ENUM,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
ipa_stats_type),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
ul_src_pipe_stats_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
ul_src_pipe_stats_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_PIPES_V01,
|
||||
.elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
ul_src_pipe_stats_list),
|
||||
.ei_array = ipa_pipe_stats_info_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_dst_pipe_stats_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_dst_pipe_stats_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_PIPES_V01,
|
||||
.elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_dst_pipe_stats_list),
|
||||
.ei_array = ipa_pipe_stats_info_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_filter_rule_stats_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_filter_rule_stats_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_FILTERS_V01,
|
||||
.elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_data_stats_resp_msg_v01,
|
||||
dl_filter_rule_stats_list),
|
||||
.ei_array = ipa_stats_type_filter_rule_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info ipa_apn_data_stats_info_type_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_apn_data_stats_info_type_v01,
|
||||
mux_id),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_apn_data_stats_info_type_v01,
|
||||
num_ul_packets),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_apn_data_stats_info_type_v01,
|
||||
num_ul_bytes),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_apn_data_stats_info_type_v01,
|
||||
num_dl_packets),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_apn_data_stats_info_type_v01,
|
||||
num_dl_bytes),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_get_apn_data_stats_req_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_req_msg_v01,
|
||||
mux_id_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_req_msg_v01,
|
||||
mux_id_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = QMI_IPA_MAX_APN_V01,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_req_msg_v01,
|
||||
mux_id_list),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_get_apn_data_stats_resp_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(struct qmi_response_type_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x02,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_resp_msg_v01,
|
||||
resp),
|
||||
.ei_array = get_qmi_response_type_v01_ei(),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_resp_msg_v01,
|
||||
apn_data_stats_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_resp_msg_v01,
|
||||
apn_data_stats_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_APN_V01,
|
||||
.elem_size = sizeof(struct
|
||||
ipa_apn_data_stats_info_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_get_apn_data_stats_resp_msg_v01,
|
||||
apn_data_stats_list),
|
||||
.ei_array = ipa_apn_data_stats_info_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
static struct elem_info ipa_data_usage_quota_info_type_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_data_usage_quota_info_type_v01,
|
||||
mux_id),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_8_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint64_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
.offset = offsetof(struct
|
||||
ipa_data_usage_quota_info_type_v01,
|
||||
num_Mbytes),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_set_data_usage_quota_req_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_set_data_usage_quota_req_msg_v01,
|
||||
apn_quota_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_set_data_usage_quota_req_msg_v01,
|
||||
apn_quota_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_APN_V01,
|
||||
.elem_size = sizeof(struct
|
||||
ipa_data_usage_quota_info_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_set_data_usage_quota_req_msg_v01,
|
||||
apn_quota_list),
|
||||
.ei_array = ipa_data_usage_quota_info_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_set_data_usage_quota_resp_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(struct qmi_response_type_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x02,
|
||||
.offset = offsetof(
|
||||
struct ipa_set_data_usage_quota_resp_msg_v01,
|
||||
resp),
|
||||
.ei_array = get_qmi_response_type_v01_ei(),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_data_usage_quota_reached_ind_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(struct
|
||||
ipa_data_usage_quota_info_type_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x01,
|
||||
.offset = offsetof(
|
||||
struct ipa_data_usage_quota_reached_ind_msg_v01,
|
||||
apn),
|
||||
.ei_array = ipa_data_usage_quota_info_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_stop_data_usage_quota_req_msg_data_v01_ei[] = {
|
||||
/* ipa_stop_data_usage_quota_req_msg is empty */
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa_stop_data_usage_quota_resp_msg_data_v01_ei[] = {
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(struct qmi_response_type_v01),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x02,
|
||||
.offset = offsetof(
|
||||
struct ipa_stop_data_usage_quota_resp_msg_v01,
|
||||
resp),
|
||||
.ei_array = get_qmi_response_type_v01_ei(),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
#define QMI_IPA_IPFLTR_NUM_IHL_MEQ_32_EQNS_V01 2
|
||||
#define QMI_IPA_IPFLTR_NUM_MEQ_128_EQNS_V01 2
|
||||
#define QMI_IPA_MAX_FILTERS_V01 64
|
||||
#define QMI_IPA_MAX_PIPES_V01 20
|
||||
#define QMI_IPA_MAX_APN_V01 8
|
||||
|
||||
#define IPA_INT_MAX ((int)(~0U>>1))
|
||||
#define IPA_INT_MIN (-IPA_INT_MAX - 1)
|
||||
|
@ -314,6 +316,19 @@ struct ipa_indication_reg_req_msg_v01 {
|
|||
* only when the QMI_IPA_INDICATION_REGISTER_REQ is being
|
||||
* originated from the modem driver
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* Data Usage Quota Reached */
|
||||
uint8_t data_usage_quota_reached_valid;
|
||||
/* Must be set to true if data_usage_quota_reached is being passed */
|
||||
uint8_t data_usage_quota_reached;
|
||||
/* If set to TRUE, this field indicates that the client wants to
|
||||
* receive indications about reaching the data usage quota that
|
||||
* previously set via QMI_IPA_SET_DATA_USAGE_QUOTA. Setting this field
|
||||
* in the request message makes sense only when the
|
||||
* QMI_IPA_INDICATION_REGISTER_REQ is being originated from the Master
|
||||
* driver
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
|
||||
|
@ -888,6 +903,8 @@ enum ipa_peripheral_speed_enum_v01 {
|
|||
/* High-speed USB connection */
|
||||
QMI_IPA_PER_USB_SS_V01 = 3,
|
||||
/* Super-speed USB connection */
|
||||
QMI_IPA_PER_WLAN_V01 = 4,
|
||||
/* WLAN connection */
|
||||
IPA_PERIPHERAL_SPEED_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
||||
/* To force a 32 bit signed enum. Do not change or use*/
|
||||
};
|
||||
|
@ -973,6 +990,7 @@ struct ipa_config_req_msg_v01 {
|
|||
* - QMI_IPA_PER_USB_FS (1) -- Full-speed USB connection
|
||||
* - QMI_IPA_PER_USB_HS (2) -- High-speed USB connection
|
||||
* - QMI_IPA_PER_USB_SS (3) -- Super-speed USB connection
|
||||
* - QMI_IPA_PER_WLAN (4) -- WLAN connection
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
|
@ -1080,6 +1098,244 @@ struct ipa_config_resp_msg_v01 {
|
|||
/**< Standard response type.*/
|
||||
}; /* Message */
|
||||
|
||||
enum ipa_stats_type_enum_v01 {
|
||||
IPA_STATS_TYPE_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
||||
/* To force a 32 bit signed enum. Do not change or use */
|
||||
QMI_IPA_STATS_TYPE_INVALID_V01 = 0,
|
||||
/* Invalid stats type identifier */
|
||||
QMI_IPA_STATS_TYPE_PIPE_V01 = 1,
|
||||
/* Pipe stats type */
|
||||
QMI_IPA_STATS_TYPE_FILTER_RULES_V01 = 2,
|
||||
/* Filter rule stats type */
|
||||
IPA_STATS_TYPE_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
||||
/* To force a 32 bit signed enum. Do not change or use */
|
||||
};
|
||||
|
||||
struct ipa_pipe_stats_info_type_v01 {
|
||||
uint32_t pipe_index;
|
||||
/* Pipe index for statistics to be retrieved. */
|
||||
|
||||
uint64_t num_ipv4_packets;
|
||||
/* Accumulated number of IPv4 packets over this pipe. */
|
||||
|
||||
uint64_t num_ipv4_bytes;
|
||||
/* Accumulated number of IPv4 bytes over this pipe. */
|
||||
|
||||
uint64_t num_ipv6_packets;
|
||||
/* Accumulated number of IPv6 packets over this pipe. */
|
||||
|
||||
uint64_t num_ipv6_bytes;
|
||||
/* Accumulated number of IPv6 bytes over this pipe. */
|
||||
};
|
||||
|
||||
struct ipa_stats_type_filter_rule_v01 {
|
||||
uint32_t filter_rule_index;
|
||||
/* Filter rule index for statistics to be retrieved. */
|
||||
|
||||
uint64_t num_packets;
|
||||
/* Accumulated number of packets over this filter rule. */
|
||||
};
|
||||
|
||||
/* Request Message; Retrieve the data statistics collected on modem
|
||||
* IPA driver.
|
||||
*/
|
||||
struct ipa_get_data_stats_req_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* Stats Type */
|
||||
enum ipa_stats_type_enum_v01 ipa_stats_type;
|
||||
/* Indicates the type of statistics to be retrieved. */
|
||||
|
||||
/* Optional */
|
||||
/* Reset Statistics */
|
||||
uint8_t reset_stats_valid;
|
||||
/* Must be set to true if reset_stats is being passed */
|
||||
uint8_t reset_stats;
|
||||
/* Option to reset the specific type of data statistics
|
||||
* currently collected.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/* Response Message; Retrieve the data statistics collected
|
||||
* on modem IPA driver.
|
||||
*/
|
||||
struct ipa_get_data_stats_resp_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* Result Code */
|
||||
struct ipa_qmi_response_type_v01 resp;
|
||||
/* Standard response type. */
|
||||
|
||||
/* Optional */
|
||||
/* Stats Type */
|
||||
uint8_t ipa_stats_type_valid;
|
||||
/* Must be set to true if ipa_stats_type is passed */
|
||||
enum ipa_stats_type_enum_v01 ipa_stats_type;
|
||||
/* Indicates the type of statistics that are retrieved. */
|
||||
|
||||
/* Optional */
|
||||
/* Uplink Source Pipe Statistics List */
|
||||
uint8_t ul_src_pipe_stats_list_valid;
|
||||
/* Must be set to true if ul_src_pipe_stats_list is being passed */
|
||||
uint32_t ul_src_pipe_stats_list_len;
|
||||
/* Must be set to # of elements in ul_src_pipe_stats_list */
|
||||
struct ipa_pipe_stats_info_type_v01
|
||||
ul_src_pipe_stats_list[QMI_IPA_MAX_PIPES_V01];
|
||||
/* List of all Uplink pipe statistics that are retrieved. */
|
||||
|
||||
/* Optional */
|
||||
/* Downlink Destination Pipe Statistics List */
|
||||
uint8_t dl_dst_pipe_stats_list_valid;
|
||||
/* Must be set to true if dl_dst_pipe_stats_list is being passed */
|
||||
uint32_t dl_dst_pipe_stats_list_len;
|
||||
/* Must be set to # of elements in dl_dst_pipe_stats_list */
|
||||
struct ipa_pipe_stats_info_type_v01
|
||||
dl_dst_pipe_stats_list[QMI_IPA_MAX_PIPES_V01];
|
||||
/* List of all Downlink pipe statistics that are retrieved. */
|
||||
|
||||
/* Optional */
|
||||
/* Downlink Filter Rule Stats List */
|
||||
uint8_t dl_filter_rule_stats_list_valid;
|
||||
/* Must be set to true if dl_filter_rule_stats_list is being passed */
|
||||
uint32_t dl_filter_rule_stats_list_len;
|
||||
/* Must be set to # of elements in dl_filter_rule_stats_list */
|
||||
struct ipa_stats_type_filter_rule_v01
|
||||
dl_filter_rule_stats_list[QMI_IPA_MAX_FILTERS_V01];
|
||||
/* List of all Downlink filter rule statistics retrieved. */
|
||||
}; /* Message */
|
||||
|
||||
struct ipa_apn_data_stats_info_type_v01 {
|
||||
uint32_t mux_id;
|
||||
/* Indicates the MUX ID associated with the APN for which the data
|
||||
* usage statistics is queried
|
||||
*/
|
||||
|
||||
uint64_t num_ul_packets;
|
||||
/* Accumulated number of uplink packets corresponding to
|
||||
* this Mux ID
|
||||
*/
|
||||
|
||||
uint64_t num_ul_bytes;
|
||||
/* Accumulated number of uplink bytes corresponding to
|
||||
* this Mux ID
|
||||
*/
|
||||
|
||||
uint64_t num_dl_packets;
|
||||
/* Accumulated number of downlink packets corresponding
|
||||
* to this Mux ID
|
||||
*/
|
||||
|
||||
uint64_t num_dl_bytes;
|
||||
/* Accumulated number of downlink bytes corresponding to
|
||||
* this Mux ID
|
||||
*/
|
||||
}; /* Type */
|
||||
|
||||
/* Request Message; Retrieve the APN data statistics collected from modem */
|
||||
struct ipa_get_apn_data_stats_req_msg_v01 {
|
||||
/* Optional */
|
||||
/* Mux ID List */
|
||||
uint8_t mux_id_list_valid;
|
||||
/* Must be set to true if mux_id_list is being passed */
|
||||
uint32_t mux_id_list_len;
|
||||
/* Must be set to # of elements in mux_id_list */
|
||||
uint32_t mux_id_list[QMI_IPA_MAX_APN_V01];
|
||||
/* The list of MUX IDs associated with APNs for which the data usage
|
||||
* statistics is being retrieved
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/* Response Message; Retrieve the APN data statistics collected from modem */
|
||||
struct ipa_get_apn_data_stats_resp_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* Result Code */
|
||||
struct ipa_qmi_response_type_v01 resp;
|
||||
/* Standard response type.*/
|
||||
|
||||
/* Optional */
|
||||
/* APN Data Statistics List */
|
||||
uint8_t apn_data_stats_list_valid;
|
||||
/* Must be set to true if apn_data_stats_list is being passed */
|
||||
uint32_t apn_data_stats_list_len;
|
||||
/* Must be set to # of elements in apn_data_stats_list */
|
||||
struct ipa_apn_data_stats_info_type_v01
|
||||
apn_data_stats_list[QMI_IPA_MAX_APN_V01];
|
||||
/* List of APN data retrieved as per request on mux_id.
|
||||
* For now, only one APN monitoring is supported on modem driver.
|
||||
* Making this as list for expandability to support more APNs in future.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
struct ipa_data_usage_quota_info_type_v01 {
|
||||
uint32_t mux_id;
|
||||
/* Indicates the MUX ID associated with the APN for which the data usage
|
||||
* quota needs to be set
|
||||
*/
|
||||
|
||||
uint64_t num_Mbytes;
|
||||
/* Number of Mega-bytes of quota value to be set on this APN associated
|
||||
* with this Mux ID.
|
||||
*/
|
||||
}; /* Type */
|
||||
|
||||
/* Request Message; Master driver sets a data usage quota value on
|
||||
* modem driver
|
||||
*/
|
||||
struct ipa_set_data_usage_quota_req_msg_v01 {
|
||||
/* Optional */
|
||||
/* APN Quota List */
|
||||
uint8_t apn_quota_list_valid;
|
||||
/* Must be set to true if apn_quota_list is being passed */
|
||||
uint32_t apn_quota_list_len;
|
||||
/* Must be set to # of elements in apn_quota_list */
|
||||
struct ipa_data_usage_quota_info_type_v01
|
||||
apn_quota_list[QMI_IPA_MAX_APN_V01];
|
||||
/* The list of APNs on which a data usage quota to be set on modem
|
||||
* driver. For now, only one APN monitoring is supported on modem
|
||||
* driver. Making this as list for expandability to support more
|
||||
* APNs in future.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/* Response Message; Master driver sets a data usage on modem driver. */
|
||||
struct ipa_set_data_usage_quota_resp_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* Result Code */
|
||||
struct ipa_qmi_response_type_v01 resp;
|
||||
/* Standard response type.*/
|
||||
}; /* Message */
|
||||
|
||||
/* Indication Message; Modem driver sends this indication to master
|
||||
* driver when the data usage quota is reached
|
||||
*/
|
||||
struct ipa_data_usage_quota_reached_ind_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* APN Quota List */
|
||||
struct ipa_data_usage_quota_info_type_v01 apn;
|
||||
/* This message indicates which APN has the previously set quota
|
||||
* reached. For now, only one APN monitoring is supported on modem
|
||||
* driver.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/* Request Message; Master driver request modem driver to terminate
|
||||
* the current data usage quota monitoring session.
|
||||
*/
|
||||
struct ipa_stop_data_usage_quota_req_msg_v01 {
|
||||
/* This element is a placeholder to prevent the declaration of
|
||||
* an empty struct. DO NOT USE THIS FIELD UNDER ANY CIRCUMSTANCE
|
||||
*/
|
||||
char __placeholder;
|
||||
}; /* Message */
|
||||
|
||||
/* Response Message; Master driver request modem driver to terminate
|
||||
* the current quota monitoring session.
|
||||
*/
|
||||
struct ipa_stop_data_usage_quota_resp_msg_v01 {
|
||||
/* Mandatory */
|
||||
/* Result Code */
|
||||
struct ipa_qmi_response_type_v01 resp;
|
||||
/**< Standard response type.*/
|
||||
}; /* Message */
|
||||
|
||||
/*Service Message Definition*/
|
||||
#define QMI_IPA_INDICATION_REGISTER_REQ_V01 0x0020
|
||||
#define QMI_IPA_INDICATION_REGISTER_RESP_V01 0x0020
|
||||
|
@ -1096,17 +1352,31 @@ struct ipa_config_resp_msg_v01 {
|
|||
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_RESP_V01 0x0026
|
||||
#define QMI_IPA_CONFIG_REQ_V01 0x0027
|
||||
#define QMI_IPA_CONFIG_RESP_V01 0x0027
|
||||
|
||||
#define QMI_IPA_DISABLE_LINK_LOW_PWR_STATE_REQ_V01 0x0028
|
||||
#define QMI_IPA_DISABLE_LINK_LOW_PWR_STATE_RESP_V01 0x0028
|
||||
#define QMI_IPA_ENABLE_LINK_LOW_PWR_STATE_REQ_V01 0x0029
|
||||
#define QMI_IPA_ENABLE_LINK_LOW_PWR_STATE_RESP_V01 0x0029
|
||||
#define QMI_IPA_GET_DATA_STATS_REQ_V01 0x0030
|
||||
#define QMI_IPA_GET_DATA_STATS_RESP_V01 0x0030
|
||||
#define QMI_IPA_GET_APN_DATA_STATS_REQ_V01 0x0031
|
||||
#define QMI_IPA_GET_APN_DATA_STATS_RESP_V01 0x0031
|
||||
#define QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_V01 0x0032
|
||||
#define QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_V01 0x0032
|
||||
#define QMI_IPA_DATA_USAGE_QUOTA_REACHED_IND_V01 0x0033
|
||||
#define QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_V01 0x0034
|
||||
#define QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01 0x0034
|
||||
/* add for max length*/
|
||||
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 98
|
||||
#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_REQ_MAX_MSG_LEN_V01 8
|
||||
#define QMI_IPA_INDICATION_REGISTER_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_INSTALL_FILTER_RULE_REQ_MAX_MSG_LEN_V01 11293
|
||||
#define QMI_IPA_INSTALL_FILTER_RULE_RESP_MAX_MSG_LEN_V01 523
|
||||
#define QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_MAX_MSG_LEN_V01 574
|
||||
#define QMI_IPA_FILTER_INSTALLED_NOTIF_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_MASTER_DRIVER_INIT_COMPLETE_IND_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_DATA_USAGE_QUOTA_REACHED_IND_MAX_MSG_LEN_V01 15
|
||||
|
||||
|
||||
#define QMI_IPA_ENABLE_FORCE_CLEAR_DATAPATH_REQ_MAX_MSG_LEN_V01 18
|
||||
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_REQ_MAX_MSG_LEN_V01 7
|
||||
|
@ -1116,6 +1386,19 @@ struct ipa_config_resp_msg_v01 {
|
|||
|
||||
#define QMI_IPA_CONFIG_REQ_MAX_MSG_LEN_V01 81
|
||||
#define QMI_IPA_CONFIG_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_DISABLE_LINK_LOW_PWR_STATE_REQ_MAX_MSG_LEN_V01 18
|
||||
#define QMI_IPA_DISABLE_LINK_LOW_PWR_STATE_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_ENABLE_LINK_LOW_PWR_STATE_REQ_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_ENABLE_LINK_LOW_PWR_STATE_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_GET_DATA_STATS_REQ_MAX_MSG_LEN_V01 11
|
||||
#define QMI_IPA_GET_DATA_STATS_RESP_MAX_MSG_LEN_V01 2234
|
||||
#define QMI_IPA_GET_APN_DATA_STATS_REQ_MAX_MSG_LEN_V01 36
|
||||
#define QMI_IPA_GET_APN_DATA_STATS_RESP_MAX_MSG_LEN_V01 299
|
||||
#define QMI_IPA_SET_DATA_USAGE_QUOTA_REQ_MAX_MSG_LEN_V01 100
|
||||
#define QMI_IPA_SET_DATA_USAGE_QUOTA_RESP_MAX_MSG_LEN_V01 7
|
||||
#define QMI_IPA_STOP_DATA_USAGE_QUOTA_REQ_MAX_MSG_LEN_V01 0
|
||||
#define QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_MAX_MSG_LEN_V01 7
|
||||
|
||||
/* Service Object Accessor */
|
||||
|
||||
#endif/* IPA_QMI_SERVICE_V01_H */
|
||||
|
|
Loading…
Reference in New Issue