msm: ipa: add support for new QMI IDL
Add support for new QMI IDL in IPA driver for new message QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01 which allows to send at most 128 rules. Change-Id: I886e40f597169939ce4598863fd80145743d8db7 Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This commit is contained in:
parent
8a8abceb69
commit
a1d527f88f
6 changed files with 363 additions and 3 deletions
|
@ -111,6 +111,12 @@ static struct msg_desc ipa3_init_modem_driver_cmplt_resp_desc = {
|
|||
.ei_array = ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei,
|
||||
};
|
||||
|
||||
static struct msg_desc ipa3_install_fltr_rule_req_ex_desc = {
|
||||
.max_msg_len = QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_MAX_MSG_LEN_V01,
|
||||
.msg_id = QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01,
|
||||
.ei_array = ipa3_install_fltr_rule_req_ex_msg_data_v01_ei,
|
||||
};
|
||||
|
||||
static int ipa3_handle_indication_req(void *req_h, void *req)
|
||||
{
|
||||
struct ipa_indication_reg_req_msg_v01 *indication_req;
|
||||
|
@ -299,6 +305,10 @@ static int ipa3_a5_svc_req_desc_cb(unsigned int msg_id,
|
|||
*req_desc = &ipa3_install_fltr_rule_req_desc;
|
||||
rc = sizeof(struct ipa_install_fltr_rule_req_msg_v01);
|
||||
break;
|
||||
case QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01:
|
||||
*req_desc = &ipa3_install_fltr_rule_req_ex_desc;
|
||||
rc = sizeof(struct ipa_install_fltr_rule_req_ex_msg_v01);
|
||||
break;
|
||||
case QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_V01:
|
||||
*req_desc = &ipa3_filter_installed_notif_req_desc;
|
||||
rc = sizeof(struct ipa_fltr_installed_notif_req_msg_v01);
|
||||
|
@ -623,6 +633,49 @@ int ipa3_qmi_filter_request_send(struct ipa_install_fltr_rule_req_msg_v01 *req)
|
|||
resp.resp.error, "ipa_install_filter");
|
||||
}
|
||||
|
||||
/* sending filter-install-request to modem*/
|
||||
int ipa3_qmi_filter_request_ex_send(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01 *req)
|
||||
{
|
||||
struct ipa_install_fltr_rule_resp_ex_msg_v01 resp;
|
||||
struct msg_desc req_desc, resp_desc;
|
||||
int rc;
|
||||
|
||||
/* check if the filter rules from IPACM is valid */
|
||||
if (req->filter_spec_ex_list_len == 0) {
|
||||
IPAWANDBG("IPACM pass zero rules to Q6\n");
|
||||
} else {
|
||||
IPAWANDBG("IPACM pass %u rules to Q6\n",
|
||||
req->filter_spec_ex_list_len);
|
||||
}
|
||||
|
||||
/* cache the qmi_filter_request */
|
||||
memcpy(&(ipa3_qmi_ctx->ipa_install_fltr_rule_req_ex_msg_cache[
|
||||
ipa3_qmi_ctx->num_ipa_install_fltr_rule_req_ex_msg]),
|
||||
req, sizeof(struct ipa_install_fltr_rule_req_ex_msg_v01));
|
||||
ipa3_qmi_ctx->num_ipa_install_fltr_rule_req_ex_msg++;
|
||||
ipa3_qmi_ctx->num_ipa_install_fltr_rule_req_ex_msg %= 10;
|
||||
|
||||
req_desc.max_msg_len =
|
||||
QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_MAX_MSG_LEN_V01;
|
||||
req_desc.msg_id = QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01;
|
||||
req_desc.ei_array = ipa3_install_fltr_rule_req_ex_msg_data_v01_ei;
|
||||
|
||||
memset(&resp, 0, sizeof(struct ipa_install_fltr_rule_resp_ex_msg_v01));
|
||||
resp_desc.max_msg_len =
|
||||
QMI_IPA_INSTALL_FILTER_RULE_EX_RESP_MAX_MSG_LEN_V01;
|
||||
resp_desc.msg_id = QMI_IPA_INSTALL_FILTER_RULE_EX_RESP_V01;
|
||||
resp_desc.ei_array = ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei;
|
||||
|
||||
rc = qmi_send_req_wait(ipa_q6_clnt, &req_desc,
|
||||
req,
|
||||
sizeof(struct ipa_install_fltr_rule_req_ex_msg_v01),
|
||||
&resp_desc, &resp, sizeof(resp),
|
||||
QMI_SEND_REQ_TIMEOUT_MS);
|
||||
return ipa3_check_qmi_response(rc,
|
||||
QMI_IPA_INSTALL_FILTER_RULE_EX_REQ_V01, resp.resp.result,
|
||||
resp.resp.error, "ipa_install_filter");
|
||||
}
|
||||
|
||||
int ipa3_qmi_enable_force_clear_datapath_send(
|
||||
struct ipa_enable_force_clear_datapath_req_msg_v01 *req)
|
||||
|
|
|
@ -73,6 +73,9 @@ u32 q6_ul_filter_rule_hdl[MAX_NUM_Q6_RULE];
|
|||
int num_ipa_install_fltr_rule_req_msg;
|
||||
struct ipa_install_fltr_rule_req_msg_v01
|
||||
ipa_install_fltr_rule_req_msg_cache[MAX_NUM_QMI_RULE_CACHE];
|
||||
int num_ipa_install_fltr_rule_req_ex_msg;
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01
|
||||
ipa_install_fltr_rule_req_ex_msg_cache[MAX_NUM_QMI_RULE_CACHE];
|
||||
int num_ipa_fltr_installed_notif_req_msg;
|
||||
struct ipa_fltr_installed_notif_req_msg_v01
|
||||
ipa_fltr_installed_notif_req_msg_cache[MAX_NUM_QMI_RULE_CACHE];
|
||||
|
@ -115,6 +118,8 @@ extern struct elem_info ipa3_stop_data_usage_quota_req_msg_data_v01_ei[];
|
|||
extern struct elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[];
|
||||
extern struct elem_info ipa3_init_modem_driver_cmplt_req_msg_data_v01_ei[];
|
||||
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[];
|
||||
|
||||
/**
|
||||
* struct ipa3_rmnet_context - IPA rmnet context
|
||||
|
@ -140,6 +145,9 @@ void ipa3_qmi_service_exit(void);
|
|||
int ipa3_qmi_filter_request_send(
|
||||
struct ipa_install_fltr_rule_req_msg_v01 *req);
|
||||
|
||||
int ipa3_qmi_filter_request_ex_send(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01 *req);
|
||||
|
||||
/* sending filter-installed-notify-request to modem*/
|
||||
int ipa3_qmi_filter_notify_send(struct ipa_fltr_installed_notif_req_msg_v01
|
||||
*req);
|
||||
|
@ -209,6 +217,12 @@ static inline int ipa3_qmi_filter_request_send(
|
|||
return -EPERM;
|
||||
}
|
||||
|
||||
static inline int ipa3_qmi_filter_request_ex_send(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01 *req)
|
||||
{
|
||||
return -EPERM;
|
||||
}
|
||||
|
||||
/* sending filter-installed-notify-request to modem*/
|
||||
static inline int ipa3_qmi_filter_notify_send(
|
||||
struct ipa_fltr_installed_notif_req_msg_v01 *req)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2016, 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
|
||||
|
@ -2744,3 +2744,182 @@ struct elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[] = {
|
|||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa3_install_fltr_rule_req_ex_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_install_fltr_rule_req_ex_msg_v01,
|
||||
filter_spec_ex_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_install_fltr_rule_req_ex_msg_v01,
|
||||
filter_spec_ex_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_STRUCT,
|
||||
.elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
|
||||
.elem_size = sizeof(struct
|
||||
ipa_filter_spec_ex_type_v01),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
filter_spec_ex_list),
|
||||
.ei_array = ipa_filter_spec_ex_type_data_v01_ei,
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
source_pipe_index_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x11,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
source_pipe_index),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
num_ipv4_filters_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x12,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
num_ipv4_filters),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
num_ipv6_filters_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x13,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
num_ipv6_filters),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_OPT_FLAG,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x14,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
xlat_filter_indices_list_valid),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_DATA_LEN,
|
||||
.elem_len = 1,
|
||||
.elem_size = sizeof(uint8_t),
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = 0x14,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
xlat_filter_indices_list_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x14,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01,
|
||||
xlat_filter_indices_list),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
||||
struct elem_info ipa3_install_fltr_rule_resp_ex_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_install_fltr_rule_resp_ex_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_install_fltr_rule_resp_ex_msg_v01,
|
||||
rule_id_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_install_fltr_rule_resp_ex_msg_v01,
|
||||
rule_id_len),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_UNSIGNED_4_BYTE,
|
||||
.elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
|
||||
.elem_size = sizeof(uint32_t),
|
||||
.is_array = VAR_LEN_ARRAY,
|
||||
.tlv_type = 0x10,
|
||||
.offset = offsetof(
|
||||
struct ipa_install_fltr_rule_resp_ex_msg_v01,
|
||||
rule_id),
|
||||
},
|
||||
{
|
||||
.data_type = QMI_EOTI,
|
||||
.is_array = NO_ARRAY,
|
||||
.tlv_type = QMI_COMMON_TLV_TYPE,
|
||||
},
|
||||
};
|
||||
|
|
|
@ -97,6 +97,31 @@ static long ipa3_wan_ioctl(struct file *filp,
|
|||
}
|
||||
break;
|
||||
|
||||
case WAN_IOC_ADD_FLT_RULE_EX:
|
||||
IPAWANDBG("device %s got WAN_IOC_ADD_FLT_RULE_EX :>>>\n",
|
||||
DRIVER_NAME);
|
||||
pyld_sz = sizeof(struct ipa_install_fltr_rule_req_ex_msg_v01);
|
||||
param = kzalloc(pyld_sz, GFP_KERNEL);
|
||||
if (!param) {
|
||||
retval = -ENOMEM;
|
||||
break;
|
||||
}
|
||||
if (copy_from_user(param, (u8 *)arg, pyld_sz)) {
|
||||
retval = -EFAULT;
|
||||
break;
|
||||
}
|
||||
if (ipa3_qmi_filter_request_ex_send(
|
||||
(struct ipa_install_fltr_rule_req_ex_msg_v01 *)param)) {
|
||||
IPAWANDBG("IPACM->Q6 add filter rule failed\n");
|
||||
retval = -EFAULT;
|
||||
break;
|
||||
}
|
||||
if (copy_to_user((u8 *)arg, param, pyld_sz)) {
|
||||
retval = -EFAULT;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case WAN_IOC_ADD_FLT_RULE_INDEX:
|
||||
IPAWANDBG("device %s got WAN_IOC_ADD_FLT_RULE_INDEX :>>>\n",
|
||||
DRIVER_NAME);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2016, 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
|
||||
|
@ -44,6 +44,7 @@
|
|||
#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_FILTERS_EX_V01 128
|
||||
#define QMI_IPA_MAX_PIPES_V01 20
|
||||
#define QMI_IPA_MAX_APN_V01 8
|
||||
|
||||
|
@ -1543,6 +1544,84 @@ struct ipa_stop_data_usage_quota_resp_msg_v01 {
|
|||
/**< Standard response type.*/
|
||||
}; /* Message */
|
||||
|
||||
/* Request Message; Request from Modem IPA driver to set DPL peripheral pipe */
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01 {
|
||||
|
||||
/* Optional */
|
||||
/* Extended Filter Specification */
|
||||
uint8_t filter_spec_ex_list_valid;
|
||||
uint32_t filter_spec_ex_list_len;
|
||||
struct ipa_filter_spec_ex_type_v01
|
||||
filter_spec_ex_list[QMI_IPA_MAX_FILTERS_EX_V01];
|
||||
/* List of filter specifications of filters that must be installed in
|
||||
the IPAv3.x hardware.
|
||||
The driver installing these rules must do so in the same order as
|
||||
specified in this list.
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* Pipe Index to Install Rule */
|
||||
uint8_t source_pipe_index_valid;
|
||||
uint32_t source_pipe_index;
|
||||
/* Pipe index to install the filter rule.
|
||||
The requester may not always know the pipe indices. If not specified,
|
||||
the receiver must install this rule on all pipes that it controls,
|
||||
through which data may be fed into the IPA.
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* Total Number of IPv4 Filters in the Filter Spec List */
|
||||
uint8_t num_ipv4_filters_valid;
|
||||
uint32_t num_ipv4_filters;
|
||||
/* Number of IPv4 rules included in the filter specification list.
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* Total Number of IPv6 Filters in the Filter Spec List */
|
||||
uint8_t num_ipv6_filters_valid;
|
||||
uint32_t num_ipv6_filters;
|
||||
/* Number of IPv6 rules included in the filter specification list.
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* List of XLAT Filter Indices in the Filter Spec List */
|
||||
uint8_t xlat_filter_indices_list_valid;
|
||||
uint32_t xlat_filter_indices_list_len;
|
||||
uint32_t xlat_filter_indices_list[QMI_IPA_MAX_FILTERS_EX_V01];
|
||||
/* List of XLAT filter indices.
|
||||
Filter rules at specified indices must be modified by the
|
||||
receiver if the PDN is XLAT before installing them on the associated
|
||||
IPA consumer pipe.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/* Response Message; Requests installation of filtering rules in the hardware
|
||||
* block on the remote side.
|
||||
*/
|
||||
struct ipa_install_fltr_rule_resp_ex_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.
|
||||
*/
|
||||
|
||||
/* Optional */
|
||||
/* Rule ID List */
|
||||
uint8_t rule_id_valid;
|
||||
uint32_t rule_id_len;
|
||||
uint32_t rule_id[QMI_IPA_MAX_FILTERS_EX_V01];
|
||||
/* List of rule IDs returned to the control point.
|
||||
Any further reference to the rule is done using the filter rule ID
|
||||
specified in this list.
|
||||
*/
|
||||
}; /* Message */
|
||||
|
||||
/*Service Message Definition*/
|
||||
#define QMI_IPA_INDICATION_REGISTER_REQ_V01 0x0020
|
||||
#define QMI_IPA_INDICATION_REGISTER_RESP_V01 0x0020
|
||||
|
@ -1574,6 +1653,8 @@ struct ipa_stop_data_usage_quota_resp_msg_v01 {
|
|||
#define QMI_IPA_STOP_DATA_USAGE_QUOTA_RESP_V01 0x0034
|
||||
#define QMI_IPA_INIT_MODEM_DRIVER_CMPLT_REQ_V01 0x0035
|
||||
#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
|
||||
|
||||
/* add for max length*/
|
||||
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_MAX_MSG_LEN_V01 134
|
||||
|
@ -1612,6 +1693,9 @@ struct ipa_stop_data_usage_quota_resp_msg_v01 {
|
|||
#define QMI_IPA_INIT_MODEM_DRIVER_CMPLT_REQ_MAX_MSG_LEN_V01 4
|
||||
#define QMI_IPA_INIT_MODEM_DRIVER_CMPLT_RESP_MAX_MSG_LEN_V01 7
|
||||
|
||||
#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
|
||||
|
||||
/* Service Object Accessor */
|
||||
|
||||
#endif/* IPA_QMI_SERVICE_V01_H */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2016, 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
|
||||
|
@ -31,6 +31,7 @@
|
|||
#define WAN_IOCTL_QUERY_TETHER_STATS 6
|
||||
#define WAN_IOCTL_RESET_TETHER_STATS 7
|
||||
#define WAN_IOCTL_QUERY_DL_FILTER_STATS 8
|
||||
#define WAN_IOCTL_ADD_FLT_RULE_EX 9
|
||||
|
||||
/* User space may not have this defined. */
|
||||
#ifndef IFNAMSIZ
|
||||
|
@ -150,4 +151,8 @@ struct wan_ioctl_query_dl_filter_stats {
|
|||
WAN_IOCTL_QUERY_DL_FILTER_STATS, \
|
||||
struct wan_ioctl_query_dl_filter_stats *)
|
||||
|
||||
#define WAN_IOC_ADD_FLT_RULE_EX _IOWR(WAN_IOC_MAGIC, \
|
||||
WAN_IOCTL_ADD_FLT_RULE_EX, \
|
||||
struct ipa_install_fltr_rule_req_ex_msg_v01 *)
|
||||
|
||||
#endif /* _RMNET_IPA_FD_IOCTL_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue