Merge "msm: ipa: Add support for per client statistics and UL firewall"

This commit is contained in:
Linux Build Service Account 2017-08-03 20:51:02 -07:00 committed by Gerrit - the friendly Code Review server
commit 66bb3e3558
4 changed files with 852 additions and 4 deletions

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2017, 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
@ -1435,6 +1435,66 @@ struct elem_info ipa_fltr_installed_notif_req_msg_data_v01_ei[] = {
struct ipa_fltr_installed_notif_req_msg_v01,
start_ipv6_filter_idx),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x17,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
rule_id_valid),
},
{
.data_type = QMI_DATA_LEN,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x17,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
rule_id_len),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = QMI_IPA_MAX_FILTERS_V01,
.elem_size = sizeof(uint32_t),
.is_array = VAR_LEN_ARRAY,
.tlv_type = 0x17,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
rule_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id_valid),
},
{
.data_type = QMI_DATA_LEN,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id_len),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = QMI_IPA_MAX_CLIENT_DST_PIPES_V01,
.elem_size = sizeof(uint32_t),
.is_array = VAR_LEN_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,

View file

@ -121,6 +121,31 @@ extern struct elem_info ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[];
extern struct elem_info ipa3_install_fltr_rule_req_ex_msg_data_v01_ei[];
extern struct elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[];
extern struct elem_info
ipa3_install_fltr_rule_req_ex_msg_data_v01_ei[];
extern struct elem_info
ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[];
extern struct elem_info
ipa3_ul_firewall_rule_type_data_v01_ei[];
extern struct elem_info
ipa3_ul_firewall_config_result_type_data_v01_ei[];
extern struct elem_info
ipa3_per_client_stats_info_type_data_v01_ei[];
extern struct elem_info
ipa3_enable_per_client_stats_req_msg_data_v01_ei[];
extern struct elem_info
ipa3_enable_per_client_stats_resp_msg_data_v01_ei[];
extern struct elem_info
ipa3_get_stats_per_client_req_msg_data_v01_ei[];
extern struct elem_info
ipa3_get_stats_per_client_resp_msg_data_v01_ei[];
extern struct elem_info
ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[];
extern struct elem_info
ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[];
extern struct elem_info
ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[];
/**
* struct ipa3_rmnet_context - IPA rmnet context
* @ipa_rmnet_ssr: support modem SSR

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2017, 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
@ -16,6 +16,8 @@
#include <soc/qcom/msm_qmi_interface.h>
#include "ipa_qmi_service.h"
/* Type Definitions */
static struct elem_info ipa3_hdr_tbl_info_type_data_v01_ei[] = {
{
@ -1755,6 +1757,36 @@ struct elem_info ipa3_fltr_installed_notif_req_msg_data_v01_ei[] = {
struct ipa_fltr_installed_notif_req_msg_v01,
rule_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id_valid),
},
{
.data_type = QMI_DATA_LEN,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id_len),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = QMI_IPA_MAX_CLIENT_DST_PIPES_V01,
.elem_size = sizeof(uint32_t),
.is_array = VAR_LEN_ARRAY,
.tlv_type = 0x18,
.offset = offsetof(
struct ipa_fltr_installed_notif_req_msg_v01,
dst_pipe_id),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
@ -2923,3 +2955,435 @@ struct elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = {
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_per_client_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_per_client_stats_info_type_v01,
client_id),
},
{
.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_per_client_stats_info_type_v01,
src_pipe_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_per_client_stats_info_type_v01,
num_ul_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_per_client_stats_info_type_v01,
num_ul_ipv6_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_per_client_stats_info_type_v01,
num_dl_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_per_client_stats_info_type_v01,
num_dl_ipv6_bytes),
},
{
.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_per_client_stats_info_type_v01,
num_ul_ipv4_pkts),
},
{
.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_per_client_stats_info_type_v01,
num_ul_ipv6_pkts),
},
{
.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_per_client_stats_info_type_v01,
num_dl_ipv4_pkts),
},
{
.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_per_client_stats_info_type_v01,
num_dl_ipv6_pkts),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_ul_firewall_rule_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_ul_firewall_rule_type_v01,
ip_type),
},
{
.data_type = QMI_STRUCT,
.elem_len = 1,
.elem_size = sizeof(struct ipa_filter_rule_type_v01),
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
.offset = offsetof(struct ipa_ul_firewall_rule_type_v01,
filter_rule),
.ei_array = ipa3_filter_rule_type_data_v01_ei,
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_ul_firewall_config_result_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_ul_firewall_config_result_type_v01,
is_success),
},
{
.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_ul_firewall_config_result_type_v01,
mux_id),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = {
{
.data_type = QMI_UNSIGNED_1_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(struct
ipa_enable_per_client_stats_req_msg_v01,
enable_per_client_stats),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_enable_per_client_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_enable_per_client_stats_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 ipa3_get_stats_per_client_req_msg_data_v01_ei[] = {
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(
struct ipa_get_stats_per_client_req_msg_v01,
client_id),
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x02,
.offset = offsetof(
struct ipa_get_stats_per_client_req_msg_v01,
src_pipe_id),
},
{
.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_stats_per_client_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_stats_per_client_req_msg_v01,
reset_stats),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info ipa3_get_stats_per_client_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_stats_per_client_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_stats_per_client_resp_msg_v01,
per_client_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_stats_per_client_resp_msg_v01,
per_client_stats_list_len),
},
{
.data_type = QMI_STRUCT,
.elem_len = QMI_IPA_MAX_PER_CLIENTS_V01,
.elem_size =
sizeof(struct ipa_per_client_stats_info_type_v01),
.is_array = VAR_LEN_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct ipa_get_stats_per_client_resp_msg_v01,
per_client_stats_list),
.ei_array =
ipa3_per_client_stats_info_type_data_v01_ei,
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info
ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = {
{
.data_type = QMI_DATA_LEN,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x1,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_req_msg_v01,
firewall_rules_list_len),
},
{
.data_type = QMI_STRUCT,
.elem_len = QMI_IPA_MAX_UL_FIREWALL_RULES_V01,
.elem_size = sizeof(struct ipa_ul_firewall_rule_type_v01),
.is_array = VAR_LEN_ARRAY,
.tlv_type = 0x1,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_req_msg_v01,
firewall_rules_list),
.ei_array =
ipa3_ul_firewall_rule_type_data_v01_ei,
},
{
.data_type = QMI_UNSIGNED_4_BYTE,
.elem_len = 1,
.elem_size = sizeof(uint32_t),
.is_array = NO_ARRAY,
.tlv_type = 0x2,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_req_msg_v01,
mux_id),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x10,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_req_msg_v01,
disable_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_configure_ul_firewall_rules_req_msg_v01,
disable),
},
{
.data_type = QMI_OPT_FLAG,
.elem_len = 1,
.elem_size = sizeof(uint8_t),
.is_array = NO_ARRAY,
.tlv_type = 0x11,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_req_msg_v01,
are_blacklist_filters_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_configure_ul_firewall_rules_req_msg_v01,
are_blacklist_filters),
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};
struct elem_info
ipa3_configure_ul_firewall_rules_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_configure_ul_firewall_rules_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
ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = {
{
.data_type = QMI_STRUCT,
.elem_len = 1,
.elem_size = sizeof(
struct ipa_ul_firewall_config_result_type_v01),
.is_array = NO_ARRAY,
.tlv_type = 0x01,
.offset = offsetof(
struct ipa_configure_ul_firewall_rules_ind_msg_v01,
result),
.ei_array =
ipa3_ul_firewall_config_result_type_data_v01_ei,
},
{
.data_type = QMI_EOTI,
.is_array = NO_ARRAY,
.tlv_type = QMI_COMMON_TLV_TYPE,
},
};

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2017, 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
@ -47,6 +47,12 @@
#define QMI_IPA_MAX_FILTERS_EX_V01 128
#define QMI_IPA_MAX_PIPES_V01 20
#define QMI_IPA_MAX_APN_V01 8
#define QMI_IPA_MAX_PER_CLIENTS_V01 64
/* Currently max we can use is only 1. But for scalability purpose
* we are having max value as 8.
*/
#define QMI_IPA_MAX_CLIENT_DST_PIPES_V01 8
#define QMI_IPA_MAX_UL_FIREWALL_RULES_V01 64
#define IPA_INT_MAX ((int)(~0U>>1))
#define IPA_INT_MIN (-IPA_INT_MAX - 1)
@ -984,6 +990,16 @@ struct ipa_fltr_installed_notif_req_msg_v01 {
* failure, the Rule Ids in this list must be set to a reserved
* index (255).
*/
/* Optional */
/* List of destination pipe IDs. */
uint8_t dst_pipe_id_valid;
/* Must be set to true if dst_pipe_id is being passed. */
uint32_t dst_pipe_id_len;
/* Must be set to # of elements in dst_pipe_id. */
uint32_t dst_pipe_id[QMI_IPA_MAX_CLIENT_DST_PIPES_V01];
/* Provides the list of destination pipe IDs for a source pipe. */
}; /* Message */
/* Response Message; This is the message that is exchanged between the
@ -1622,6 +1638,273 @@ struct ipa_install_fltr_rule_resp_ex_msg_v01 {
*/
}; /* Message */
/*
* Request Message; Requests the modem IPA driver to enable or
* disable collection of per client statistics.
*/
struct ipa_enable_per_client_stats_req_msg_v01 {
/* Mandatory */
/* Collect statistics per client; */
uint8_t enable_per_client_stats;
/*
* Indicates whether to start or stop collecting
* per client statistics.
*/
}; /* Message */
/*
* Response Message; Requests the modem IPA driver to enable or disable
* collection of per client statistics.
*/
struct ipa_enable_per_client_stats_resp_msg_v01 {
/* Mandatory */
/* Result Code */
struct ipa_qmi_response_type_v01 resp;
/* Standard response type. */
}; /* Message */
struct ipa_per_client_stats_info_type_v01 {
uint32_t client_id;
/*
* Id of the client on APPS processor side for which Modem processor
* needs to send uplink/downlink statistics.
*/
uint32_t src_pipe_id;
/*
* IPA consumer pipe on which client on APPS side sent uplink
* data to modem.
*/
uint64_t num_ul_ipv4_bytes;
/*
* Accumulated number of uplink IPv4 bytes for a client.
*/
uint64_t num_ul_ipv6_bytes;
/*
* Accumulated number of uplink IPv6 bytes for a client.
*/
uint64_t num_dl_ipv4_bytes;
/*
* Accumulated number of downlink IPv4 bytes for a client.
*/
uint64_t num_dl_ipv6_bytes;
/*
* Accumulated number of downlink IPv6 byes for a client.
*/
uint32_t num_ul_ipv4_pkts;
/*
* Accumulated number of uplink IPv4 packets for a client.
*/
uint32_t num_ul_ipv6_pkts;
/*
* Accumulated number of uplink IPv6 packets for a client.
*/
uint32_t num_dl_ipv4_pkts;
/*
* Accumulated number of downlink IPv4 packets for a client.
*/
uint32_t num_dl_ipv6_pkts;
/*
* Accumulated number of downlink IPv6 packets for a client.
*/
}; /* Type */
/*
* Request Message; Requests the modem IPA driver to provide statistics
* for a givenclient.
*/
struct ipa_get_stats_per_client_req_msg_v01 {
/* Mandatory */
/* Client id */
uint32_t client_id;
/*
* Id of the client on APPS processor side for which Modem processor
* needs to send uplink/downlink statistics. if client id is specified
* as 0xffffffff, then Q6 will send the stats for all the clients of
* the specified source pipe.
*/
/* Mandatory */
/* Source pipe id */
uint32_t src_pipe_id;
/*
* IPA consumer pipe on which client on APPS side sent uplink
* data to modem. In future, this implementation can be extended
* to provide 0xffffffff as the source pipe id, where Q6 will send
* the stats of all the clients across all different tethered-pipes.
*/
/* Optional */
/* Reset client 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 statistics currently collected by modem for this
* particular client.
*/
}; /* Message */
/*
* Response Message; Requests the modem IPA driver to provide statistics
* for a given client.
*/
struct ipa_get_stats_per_client_resp_msg_v01 {
/* Mandatory */
/* Result Code */
struct ipa_qmi_response_type_v01 resp;
/* Standard response type. */
/* Optional */
/* Per clients Statistics List */
uint8_t per_client_stats_list_valid;
/* Must be set to true if per_client_stats_list is being passed. */
uint32_t per_client_stats_list_len;
/* Must be set to # of elements in per_client_stats_list. */
struct ipa_per_client_stats_info_type_v01
per_client_stats_list[QMI_IPA_MAX_PER_CLIENTS_V01];
/*
* List of all per client statistics that are retrieved.
*/
}; /* Message */
struct ipa_ul_firewall_rule_type_v01 {
enum ipa_ip_type_enum_v01 ip_type;
/*
* IP type for which this rule is applicable.
* The driver must identify the filter table (v6 or v4), and this
* field is essential for that. Values:
* - QMI_IPA_IP_TYPE_INVALID (0) -- Invalid IP type identifier
* - QMI_IPA_IP_TYPE_V4 (1) -- IPv4 type
* - QMI_IPA_IP_TYPE_V6 (2) -- IPv6 type
*/
struct ipa_filter_rule_type_v01 filter_rule;
/*
* Rules in the filter specification. These rules are the
* ones that are matched against fields in the packet.
* Currently we only send IPv6 whitelist rules to Q6.
*/
}; /* Type */
/*
* Request Message; Requestes remote IPA driver to install uplink
* firewall rules.
*/
struct ipa_configure_ul_firewall_rules_req_msg_v01 {
/* Optional */
/* Uplink Firewall Specification */
uint32_t firewall_rules_list_len;
/* Must be set to # of elements in firewall_rules_list. */
struct ipa_ul_firewall_rule_type_v01
firewall_rules_list[QMI_IPA_MAX_UL_FIREWALL_RULES_V01];
/*
* List of uplink firewall specifications of filters that must be
* installed.
*/
uint32_t mux_id;
/*
* QMAP Mux ID. As a part of the 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.
*/
/* Optional */
uint8_t disable_valid;
/* Must be set to true if enable is being passed. */
uint8_t disable;
/*
* Indicates whether uplink firewall needs to be enabled or disabled.
*/
/* Optional */
uint8_t are_blacklist_filters_valid;
/* Must be set to true if are_blacklist_filters is being passed. */
uint8_t are_blacklist_filters;
/*
* Indicates whether the filters received as part of this message are
* blacklist filters. i.e. drop uplink packets matching these rules.
*/
}; /* Message */
/*
* Response Message; Requestes remote IPA driver to install
* uplink firewall rules.
*/
struct ipa_configure_ul_firewall_rules_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.
*/
}; /* Message */
enum ipa_ul_firewall_status_enum_v01 {
IPA_UL_FIREWALL_STATUS_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
/* To force a 32 bit signed enum. Do not change or use*/
QMI_IPA_UL_FIREWALL_STATUS_SUCCESS_V01 = 0,
/* Indicates that the uplink firewall rules
* are configured successfully.
*/
QMI_IPA_UL_FIREWALL_STATUS_FAILURE_V01 = 1,
/* Indicates that the uplink firewall rules
* are not configured successfully.
*/
IPA_UL_FIREWALL_STATUS_ENUM_MAX_ENUM_VAL_V01 = 2147483647
/* To force a 32 bit signed enum. Do not change or use*/
};
struct ipa_ul_firewall_config_result_type_v01 {
enum ipa_ul_firewall_status_enum_v01 is_success;
/*
* Indicates whether the uplink firewall rules are configured
* successfully.
*/
uint32_t mux_id;
/*
* QMAP Mux ID. As a part of the 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.
*/
};
/*
* Indication Message; Requestes remote IPA driver to install
* uplink firewall rules.
*/
struct ipa_configure_ul_firewall_rules_ind_msg_v01 {
struct ipa_ul_firewall_config_result_type_v01 result;
}; /* Message */
/*Service Message Definition*/
#define QMI_IPA_INDICATION_REGISTER_REQ_V01 0x0020
#define QMI_IPA_INDICATION_REGISTER_RESP_V01 0x0020
@ -1655,6 +1938,13 @@ struct ipa_install_fltr_rule_resp_ex_msg_v01 {
#define QMI_IPA_INIT_MODEM_DRIVER_CMPLT_RESP_V01 0x0035
#define QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01 0x0037
#define QMI_IPA_INSTALL_FILTER_RULE_EX_RESP_V01 0x0037
#define QMI_IPA_ENABLE_PER_CLIENT_STATS_REQ_V01 0x0038
#define QMI_IPA_ENABLE_PER_CLIENT_STATS_RESP_V01 0x0038
#define QMI_IPA_GET_STATS_PER_CLIENT_REQ_V01 0x0039
#define QMI_IPA_GET_STATS_PER_CLIENT_RESP_V01 0x0039
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_REQ_V01 0x003A
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_RESP_V01 0x003A
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_IND_V01 0x003A
/* add for max length*/
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 134
@ -1663,7 +1953,7 @@ struct ipa_install_fltr_rule_resp_ex_msg_v01 {
#define QMI_IPA_INDICATION_REGISTER_RESP_MAX_MSG_LEN_V01 7
#define QMI_IPA_INSTALL_FILTER_RULE_REQ_MAX_MSG_LEN_V01 22369
#define QMI_IPA_INSTALL_FILTER_RULE_RESP_MAX_MSG_LEN_V01 783
#define QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_MAX_MSG_LEN_V01 834
#define QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_MAX_MSG_LEN_V01 870
#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
@ -1696,6 +1986,15 @@ struct ipa_install_fltr_rule_resp_ex_msg_v01 {
#define QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_MAX_MSG_LEN_V01 22685
#define QMI_IPA_INSTALL_FILTER_RULE_EX_RESP_MAX_MSG_LEN_V01 523
#define QMI_IPA_ENABLE_PER_CLIENT_STATS_REQ_MAX_MSG_LEN_V01 4
#define QMI_IPA_ENABLE_PER_CLIENT_STATS_RESP_MAX_MSG_LEN_V01 7
#define QMI_IPA_GET_STATS_PER_CLIENT_REQ_MAX_MSG_LEN_V01 18
#define QMI_IPA_GET_STATS_PER_CLIENT_RESP_MAX_MSG_LEN_V01 3595
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_REQ_MAX_MSG_LEN_V01 9875
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_RESP_MAX_MSG_LEN_V01 7
#define QMI_IPA_INSTALL_UL_FIREWALL_RULES_IND_MAX_MSG_LEN_V01 11
/* Service Object Accessor */
#endif/* IPA_QMI_SERVICE_V01_H */