Loading drivers/platform/msm/ipa/ipa_qmi_service_v01.c +150 −0 Original line number Diff line number Diff line Loading @@ -1103,6 +1103,76 @@ struct elem_info ipa_install_fltr_rule_req_msg_data_v01_ei[] = { struct ipa_install_fltr_rule_req_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_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_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_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_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_msg_v01, xlat_filter_indices_list_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof( struct ipa_install_fltr_rule_req_msg_v01, xlat_filter_indices_list_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 = 0x14, .offset = offsetof( struct ipa_install_fltr_rule_req_msg_v01, xlat_filter_indices_list), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, Loading Loading @@ -1265,6 +1335,86 @@ struct elem_info ipa_fltr_installed_notif_req_msg_data_v01_ei[] = { struct ipa_fltr_installed_notif_req_msg_v01, embedded_call_mux_id), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof( struct ipa_fltr_installed_notif_req_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 = 0x13, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, num_ipv4_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_fltr_installed_notif_req_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 = 0x14, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, num_ipv6_filters), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv4_filter_idx_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv4_filter_idx), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x16, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv6_filter_idx_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x16, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv6_filter_idx), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, Loading include/uapi/linux/ipa_qmi_service_v01.h +59 −4 Original line number Diff line number Diff line Loading @@ -619,6 +619,34 @@ struct ipa_install_fltr_rule_req_msg_v01 { * this rule on all the pipes that it controls through * which data may be fed into IPA. */ /* Optional */ /* Total number of IPv4 filters in the filter spec list */ uint8_t num_ipv4_filters_valid; /* Must be set to true if num_ipv4_filters is being passed */ uint32_t num_ipv4_filters; /* Number of IPv4 rules included in filter spec list */ /* Optional */ /* Total number of IPv6 filters in the filter spec list */ uint8_t num_ipv6_filters_valid; /* Must be set to true if num_ipv6_filters is being passed */ uint32_t num_ipv6_filters; /* Number of IPv6 rules included in filter spec list */ /* Optional */ /* List of XLAT filter indices in the filter spec list */ uint8_t xlat_filter_indices_list_valid; /* Must be set to true if xlat_filter_indices_list * is being passed */ uint32_t xlat_filter_indices_list_len; /* Must be set to # of elements in xlat_filter_indices_list */ uint32_t xlat_filter_indices_list[QMI_IPA_MAX_FILTERS_V01]; /* List of XLAT filter indices. Filter rules at specified indices * will need to be modified by the receiver if the PDN is XLAT * before installing them on the associated IPA consumer pipe. */ }; /* Message */ struct ipa_filter_rule_identifier_to_handle_map_v01 { Loading Loading @@ -739,10 +767,37 @@ 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. */ /* Optional */ /* Total number of IPv4 filters in the filter index list */ uint8_t num_ipv4_filters_valid; /* Must be set to true if num_ipv4_filters is being passed */ uint32_t num_ipv4_filters; /* Number of IPv4 rules included in filter index list */ /* Optional */ /* Total number of IPv6 filters in the filter index list */ uint8_t num_ipv6_filters_valid; /* Must be set to true if num_ipv6_filters is being passed */ uint32_t num_ipv6_filters; /* Number of IPv6 rules included in filter index list */ /* Optional */ /* Start index on IPv4 filters installed on source pipe */ uint8_t start_ipv4_filter_idx_valid; /* Must be set to true if start_ipv4_filter_idx is being passed */ uint32_t start_ipv4_filter_idx; /* Start index of IPv4 rules in filter index list */ /* Optional */ /* Start index on IPv6 filters installed on source pipe */ uint8_t start_ipv6_filter_idx_valid; /* Must be set to true if start_ipv6_filter_idx is being passed */ uint32_t start_ipv6_filter_idx; /* Start index of IPv6 rules in filter index list */ }; /* Message */ /* Response Message; This is the message that is exchanged between the control Loading Loading @@ -1047,9 +1102,9 @@ struct ipa_config_resp_msg_v01 { #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 #define QMI_IPA_INSTALL_FILTER_RULE_REQ_MAX_MSG_LEN_V01 11019 #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 546 #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 Loading Loading
drivers/platform/msm/ipa/ipa_qmi_service_v01.c +150 −0 Original line number Diff line number Diff line Loading @@ -1103,6 +1103,76 @@ struct elem_info ipa_install_fltr_rule_req_msg_data_v01_ei[] = { struct ipa_install_fltr_rule_req_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_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_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_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_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_msg_v01, xlat_filter_indices_list_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x14, .offset = offsetof( struct ipa_install_fltr_rule_req_msg_v01, xlat_filter_indices_list_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 = 0x14, .offset = offsetof( struct ipa_install_fltr_rule_req_msg_v01, xlat_filter_indices_list), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, Loading Loading @@ -1265,6 +1335,86 @@ struct elem_info ipa_fltr_installed_notif_req_msg_data_v01_ei[] = { struct ipa_fltr_installed_notif_req_msg_v01, embedded_call_mux_id), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x13, .offset = offsetof( struct ipa_fltr_installed_notif_req_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 = 0x13, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, num_ipv4_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_fltr_installed_notif_req_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 = 0x14, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, num_ipv6_filters), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv4_filter_idx_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x15, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv4_filter_idx), }, { .data_type = QMI_OPT_FLAG, .elem_len = 1, .elem_size = sizeof(uint8_t), .is_array = NO_ARRAY, .tlv_type = 0x16, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv6_filter_idx_valid), }, { .data_type = QMI_UNSIGNED_4_BYTE, .elem_len = 1, .elem_size = sizeof(uint32_t), .is_array = NO_ARRAY, .tlv_type = 0x16, .offset = offsetof( struct ipa_fltr_installed_notif_req_msg_v01, start_ipv6_filter_idx), }, { .data_type = QMI_EOTI, .is_array = NO_ARRAY, Loading
include/uapi/linux/ipa_qmi_service_v01.h +59 −4 Original line number Diff line number Diff line Loading @@ -619,6 +619,34 @@ struct ipa_install_fltr_rule_req_msg_v01 { * this rule on all the pipes that it controls through * which data may be fed into IPA. */ /* Optional */ /* Total number of IPv4 filters in the filter spec list */ uint8_t num_ipv4_filters_valid; /* Must be set to true if num_ipv4_filters is being passed */ uint32_t num_ipv4_filters; /* Number of IPv4 rules included in filter spec list */ /* Optional */ /* Total number of IPv6 filters in the filter spec list */ uint8_t num_ipv6_filters_valid; /* Must be set to true if num_ipv6_filters is being passed */ uint32_t num_ipv6_filters; /* Number of IPv6 rules included in filter spec list */ /* Optional */ /* List of XLAT filter indices in the filter spec list */ uint8_t xlat_filter_indices_list_valid; /* Must be set to true if xlat_filter_indices_list * is being passed */ uint32_t xlat_filter_indices_list_len; /* Must be set to # of elements in xlat_filter_indices_list */ uint32_t xlat_filter_indices_list[QMI_IPA_MAX_FILTERS_V01]; /* List of XLAT filter indices. Filter rules at specified indices * will need to be modified by the receiver if the PDN is XLAT * before installing them on the associated IPA consumer pipe. */ }; /* Message */ struct ipa_filter_rule_identifier_to_handle_map_v01 { Loading Loading @@ -739,10 +767,37 @@ 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. */ /* Optional */ /* Total number of IPv4 filters in the filter index list */ uint8_t num_ipv4_filters_valid; /* Must be set to true if num_ipv4_filters is being passed */ uint32_t num_ipv4_filters; /* Number of IPv4 rules included in filter index list */ /* Optional */ /* Total number of IPv6 filters in the filter index list */ uint8_t num_ipv6_filters_valid; /* Must be set to true if num_ipv6_filters is being passed */ uint32_t num_ipv6_filters; /* Number of IPv6 rules included in filter index list */ /* Optional */ /* Start index on IPv4 filters installed on source pipe */ uint8_t start_ipv4_filter_idx_valid; /* Must be set to true if start_ipv4_filter_idx is being passed */ uint32_t start_ipv4_filter_idx; /* Start index of IPv4 rules in filter index list */ /* Optional */ /* Start index on IPv6 filters installed on source pipe */ uint8_t start_ipv6_filter_idx_valid; /* Must be set to true if start_ipv6_filter_idx is being passed */ uint32_t start_ipv6_filter_idx; /* Start index of IPv6 rules in filter index list */ }; /* Message */ /* Response Message; This is the message that is exchanged between the control Loading Loading @@ -1047,9 +1102,9 @@ struct ipa_config_resp_msg_v01 { #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 #define QMI_IPA_INSTALL_FILTER_RULE_REQ_MAX_MSG_LEN_V01 11019 #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 546 #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 Loading