621 lines
20 KiB
C
621 lines
20 KiB
C
/**
|
|
* Copyright (C) 2018 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions vand
|
|
* limitations under the License.
|
|
*/
|
|
#include <sys/types.h>
|
|
#ifndef IPA_QMI_SERVICE_V01_H
|
|
#define IPA_QMI_SERVICE_V01_H
|
|
|
|
#define QMI_IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS_V01 2
|
|
#define QMI_IPA_IPFLTR_NUM_MEQ_32_EQNS_V01 2
|
|
#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 IPA_INT_MAX ((int)(~0U >> 1))
|
|
#define IPA_INT_MIN (-IPA_INT_MAX - 1)
|
|
|
|
enum ipa_qmi_result_type_v01 {
|
|
IPA_QMI_RESULT_TYPE_MIN_ENUM_VAL_V01 = IPA_INT_MIN,
|
|
IPA_QMI_RESULT_SUCCESS_V01 = 0,
|
|
IPA_QMI_RESULT_FAILURE_V01 = 1,
|
|
IPA_QMI_RESULT_TYPE_MAX_ENUM_VAL_V01 = IPA_INT_MAX,
|
|
};
|
|
|
|
enum ipa_qmi_error_type_v01 {
|
|
IPA_QMI_ERROR_TYPE_MIN_ENUM_VAL_V01 = IPA_INT_MIN,
|
|
IPA_QMI_ERR_NONE_V01 = 0x0000,
|
|
IPA_QMI_ERR_MALFORMED_MSG_V01 = 0x0001,
|
|
IPA_QMI_ERR_NO_MEMORY_V01 = 0x0002,
|
|
IPA_QMI_ERR_INTERNAL_V01 = 0x0003,
|
|
IPA_QMI_ERR_CLIENT_IDS_EXHAUSTED_V01 = 0x0005,
|
|
IPA_QMI_ERR_INVALID_ID_V01 = 0x0029,
|
|
IPA_QMI_ERR_ENCODING_V01 = 0x003A,
|
|
IPA_QMI_ERR_INCOMPATIBLE_STATE_V01 = 0x005A,
|
|
IPA_QMI_ERR_NOT_SUPPORTED_V01 = 0x005E,
|
|
IPA_QMI_ERROR_TYPE_MAX_ENUM_VAL_V01 = IPA_INT_MAX,
|
|
};
|
|
|
|
struct ipa_qmi_response_type_v01 {
|
|
enum ipa_qmi_result_type_v01 result;
|
|
enum ipa_qmi_error_type_v01 error;
|
|
};
|
|
|
|
enum ipa_platform_type_enum_v01 {
|
|
IPA_PLATFORM_TYPE_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_PLATFORM_TYPE_INVALID_V01 = 0,
|
|
QMI_IPA_PLATFORM_TYPE_TN_V01 = 1,
|
|
QMI_IPA_PLATFORM_TYPE_LE_V01 = 2,
|
|
QMI_IPA_PLATFORM_TYPE_MSM_ANDROID_V01 = 3,
|
|
QMI_IPA_PLATFORM_TYPE_MSM_WINDOWS_V01 = 4,
|
|
QMI_IPA_PLATFORM_TYPE_MSM_QNX_V01 = 5,
|
|
IPA_PLATFORM_TYPE_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
struct ipa_hdr_tbl_info_type_v01 {
|
|
uint32_t modem_offset_start;
|
|
uint32_t modem_offset_end;
|
|
};
|
|
|
|
struct ipa_route_tbl_info_type_v01 {
|
|
uint32_t route_tbl_start_addr;
|
|
uint32_t num_indices;
|
|
};
|
|
|
|
struct ipa_modem_mem_info_type_v01 {
|
|
uint32_t block_start_addr;
|
|
uint32_t size;
|
|
};
|
|
|
|
struct ipa_hdr_proc_ctx_tbl_info_type_v01 {
|
|
uint32_t modem_offset_start;
|
|
uint32_t modem_offset_end;
|
|
};
|
|
|
|
struct ipa_zip_tbl_info_type_v01 {
|
|
uint32_t modem_offset_start;
|
|
uint32_t modem_offset_end;
|
|
};
|
|
|
|
struct ipa_init_modem_driver_req_msg_v01 {
|
|
uint8_t platform_type_valid;
|
|
enum ipa_platform_type_enum_v01 platform_type;
|
|
uint8_t hdr_tbl_info_valid;
|
|
struct ipa_hdr_tbl_info_type_v01 hdr_tbl_info;
|
|
uint8_t v4_route_tbl_info_valid;
|
|
struct ipa_route_tbl_info_type_v01 v4_route_tbl_info;
|
|
uint8_t v6_route_tbl_info_valid;
|
|
struct ipa_route_tbl_info_type_v01 v6_route_tbl_info;
|
|
uint8_t v4_filter_tbl_start_addr_valid;
|
|
uint32_t v4_filter_tbl_start_addr;
|
|
uint8_t v6_filter_tbl_start_addr_valid;
|
|
uint32_t v6_filter_tbl_start_addr;
|
|
uint8_t modem_mem_info_valid;
|
|
struct ipa_modem_mem_info_type_v01 modem_mem_info;
|
|
uint8_t ctrl_comm_dest_end_pt_valid;
|
|
uint32_t ctrl_comm_dest_end_pt;
|
|
uint8_t is_ssr_bootup_valid;
|
|
uint8_t is_ssr_bootup;
|
|
uint8_t hdr_proc_ctx_tbl_info_valid;
|
|
struct ipa_hdr_proc_ctx_tbl_info_type_v01 hdr_proc_ctx_tbl_info;
|
|
uint8_t zip_tbl_info_valid;
|
|
struct ipa_zip_tbl_info_type_v01 zip_tbl_info;
|
|
};
|
|
|
|
struct ipa_init_modem_driver_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
uint8_t ctrl_comm_dest_end_pt_valid;
|
|
uint32_t ctrl_comm_dest_end_pt;
|
|
uint8_t default_end_pt_valid;
|
|
uint32_t default_end_pt;
|
|
};
|
|
|
|
struct ipa_indication_reg_req_msg_v01 {
|
|
uint8_t master_driver_init_complete_valid;
|
|
uint8_t master_driver_init_complete;
|
|
};
|
|
|
|
struct ipa_indication_reg_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
};
|
|
|
|
struct ipa_master_driver_init_complt_ind_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 master_driver_init_status;
|
|
};
|
|
|
|
struct ipa_ipfltr_range_eq_16_type_v01 {
|
|
uint8_t offset;
|
|
uint16_t range_low;
|
|
uint16_t range_high;
|
|
};
|
|
|
|
struct ipa_ipfltr_mask_eq_32_type_v01 {
|
|
uint8_t offset;
|
|
uint32_t mask;
|
|
uint32_t value;
|
|
};
|
|
|
|
struct ipa_ipfltr_eq_16_type_v01 {
|
|
uint8_t offset;
|
|
uint16_t value;
|
|
};
|
|
|
|
struct ipa_ipfltr_eq_32_type_v01 {
|
|
uint8_t offset;
|
|
uint32_t value;
|
|
};
|
|
|
|
struct ipa_ipfltr_mask_eq_128_type_v01 {
|
|
uint8_t offset;
|
|
uint8_t mask[16];
|
|
uint8_t value[16];
|
|
};
|
|
|
|
struct ipa_filter_rule_type_v01 {
|
|
uint16_t rule_eq_bitmap;
|
|
uint8_t tos_eq_present;
|
|
uint8_t tos_eq;
|
|
uint8_t protocol_eq_present;
|
|
uint8_t protocol_eq;
|
|
uint8_t num_ihl_offset_range_16;
|
|
|
|
struct ipa_ipfltr_range_eq_16_type_v01
|
|
ihl_offset_range_16[QMI_IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS_V01];
|
|
|
|
uint8_t num_offset_meq_32;
|
|
|
|
struct ipa_ipfltr_mask_eq_32_type_v01
|
|
offset_meq_32[QMI_IPA_IPFLTR_NUM_MEQ_32_EQNS_V01];
|
|
|
|
uint8_t tc_eq_present;
|
|
uint8_t tc_eq;
|
|
uint8_t flow_eq_present;
|
|
uint32_t flow_eq;
|
|
uint8_t ihl_offset_eq_16_present;
|
|
struct ipa_ipfltr_eq_16_type_v01 ihl_offset_eq_16;
|
|
uint8_t ihl_offset_eq_32_present;
|
|
struct ipa_ipfltr_eq_32_type_v01 ihl_offset_eq_32;
|
|
uint8_t num_ihl_offset_meq_32;
|
|
struct ipa_ipfltr_mask_eq_32_type_v01
|
|
ihl_offset_meq_32[QMI_IPA_IPFLTR_NUM_IHL_MEQ_32_EQNS_V01];
|
|
uint8_t num_offset_meq_128;
|
|
struct ipa_ipfltr_mask_eq_128_type_v01
|
|
offset_meq_128[QMI_IPA_IPFLTR_NUM_MEQ_128_EQNS_V01];
|
|
|
|
uint8_t metadata_meq32_present;
|
|
|
|
struct ipa_ipfltr_mask_eq_32_type_v01 metadata_meq32;
|
|
uint8_t ipv4_frag_eq_present;
|
|
};
|
|
|
|
enum ipa_ip_type_enum_v01 {
|
|
IPA_IP_TYPE_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_IP_TYPE_INVALID_V01 = 0,
|
|
QMI_IPA_IP_TYPE_V4_V01 = 1,
|
|
QMI_IPA_IP_TYPE_V6_V01 = 2,
|
|
QMI_IPA_IP_TYPE_V4V6_V01 = 3,
|
|
IPA_IP_TYPE_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
enum ipa_filter_action_enum_v01 {
|
|
IPA_FILTER_ACTION_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_FILTER_ACTION_INVALID_V01 = 0,
|
|
QMI_IPA_FILTER_ACTION_SRC_NAT_V01 = 1,
|
|
QMI_IPA_FILTER_ACTION_DST_NAT_V01 = 2,
|
|
QMI_IPA_FILTER_ACTION_ROUTING_V01 = 3,
|
|
QMI_IPA_FILTER_ACTION_EXCEPTION_V01 = 4,
|
|
IPA_FILTER_ACTION_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
struct ipa_filter_spec_type_v01 {
|
|
uint32_t filter_spec_identifier;
|
|
enum ipa_ip_type_enum_v01 ip_type;
|
|
struct ipa_filter_rule_type_v01 filter_rule;
|
|
enum ipa_filter_action_enum_v01 filter_action;
|
|
uint8_t is_routing_table_index_valid;
|
|
uint32_t route_table_index;
|
|
uint8_t is_mux_id_valid;
|
|
uint32_t mux_id;
|
|
};
|
|
|
|
struct ipa_install_fltr_rule_req_msg_v01 {
|
|
uint8_t filter_spec_list_valid;
|
|
uint32_t filter_spec_list_len;
|
|
struct ipa_filter_spec_type_v01 filter_spec_list[QMI_IPA_MAX_FILTERS_V01];
|
|
uint8_t source_pipe_index_valid;
|
|
uint32_t source_pipe_index;
|
|
uint8_t num_ipv4_filters_valid;
|
|
uint32_t num_ipv4_filters;
|
|
uint8_t num_ipv6_filters_valid;
|
|
uint32_t num_ipv6_filters;
|
|
uint8_t xlat_filter_indices_list_valid;
|
|
uint32_t xlat_filter_indices_list_len;
|
|
uint32_t xlat_filter_indices_list[QMI_IPA_MAX_FILTERS_V01];
|
|
};
|
|
|
|
struct ipa_filter_rule_identifier_to_handle_map_v01 {
|
|
uint32_t filter_spec_identifier;
|
|
uint32_t filter_handle;
|
|
};
|
|
|
|
struct ipa_install_fltr_rule_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
uint8_t filter_handle_list_valid;
|
|
uint32_t filter_handle_list_len;
|
|
struct ipa_filter_rule_identifier_to_handle_map_v01
|
|
filter_handle_list[QMI_IPA_MAX_FILTERS_V01];
|
|
};
|
|
|
|
struct ipa_filter_handle_to_index_map_v01 {
|
|
uint32_t filter_handle;
|
|
uint32_t filter_index;
|
|
};
|
|
|
|
struct ipa_fltr_installed_notif_req_msg_v01 {
|
|
uint32_t source_pipe_index;
|
|
enum ipa_qmi_result_type_v01 install_status;
|
|
uint32_t filter_index_list_len;
|
|
struct ipa_filter_handle_to_index_map_v01
|
|
filter_index_list[QMI_IPA_MAX_FILTERS_V01];
|
|
|
|
uint8_t embedded_pipe_index_valid;
|
|
uint32_t embedded_pipe_index;
|
|
uint8_t retain_header_valid;
|
|
uint8_t retain_header;
|
|
uint8_t embedded_call_mux_id_valid;
|
|
uint32_t embedded_call_mux_id;
|
|
uint8_t num_ipv4_filters_valid;
|
|
uint32_t num_ipv4_filters;
|
|
uint8_t num_ipv6_filters_valid;
|
|
uint32_t num_ipv6_filters;
|
|
uint8_t start_ipv4_filter_idx_valid;
|
|
uint32_t start_ipv4_filter_idx;
|
|
uint8_t start_ipv6_filter_idx_valid;
|
|
uint32_t start_ipv6_filter_idx;
|
|
};
|
|
|
|
struct ipa_fltr_installed_notif_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
};
|
|
|
|
struct ipa_enable_force_clear_datapath_req_msg_v01 {
|
|
uint32_t source_pipe_bitmask;
|
|
uint32_t request_id;
|
|
uint8_t throttle_source_valid;
|
|
uint8_t throttle_source;
|
|
};
|
|
|
|
struct ipa_enable_force_clear_datapath_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
};
|
|
|
|
struct ipa_disable_force_clear_datapath_req_msg_v01 {
|
|
uint32_t request_id;
|
|
};
|
|
|
|
struct ipa_disable_force_clear_datapath_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
};
|
|
|
|
enum ipa_peripheral_speed_enum_v01 {
|
|
IPA_PERIPHERAL_SPEED_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_PER_USB_FS_V01 = 1,
|
|
QMI_IPA_PER_USB_HS_V01 = 2,
|
|
QMI_IPA_PER_USB_SS_V01 = 3,
|
|
IPA_PERIPHERAL_SPEED_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
enum ipa_pipe_mode_enum_v01 {
|
|
IPA_PIPE_MODE_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_PIPE_MODE_HW_V01 = 1,
|
|
QMI_IPA_PIPE_MODE_SW_V01 = 2,
|
|
IPA_PIPE_MODE_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
enum ipa_peripheral_type_enum_v01 {
|
|
IPA_PERIPHERAL_TYPE_ENUM_MIN_ENUM_VAL_V01 = -2147483647,
|
|
QMI_IPA_PERIPHERAL_USB_V01 = 1,
|
|
QMI_IPA_PERIPHERAL_HSIC_V01 = 2,
|
|
QMI_IPA_PERIPHERAL_PCIE_V01 = 3,
|
|
IPA_PERIPHERAL_TYPE_ENUM_MAX_ENUM_VAL_V01 = 2147483647
|
|
};
|
|
|
|
struct ipa_config_req_msg_v01 {
|
|
uint8_t peripheral_type_valid;
|
|
enum ipa_peripheral_type_enum_v01 peripheral_type;
|
|
uint8_t hw_deaggr_supported_valid;
|
|
uint8_t hw_deaggr_supported;
|
|
uint8_t max_aggr_frame_size_valid;
|
|
uint32_t max_aggr_frame_size;
|
|
uint8_t ipa_ingress_pipe_mode_valid;
|
|
enum ipa_pipe_mode_enum_v01 ipa_ingress_pipe_mode;
|
|
uint8_t peripheral_speed_info_valid;
|
|
enum ipa_peripheral_speed_enum_v01 peripheral_speed_info;
|
|
uint8_t dl_accumulation_time_limit_valid;
|
|
uint32_t dl_accumulation_time_limit;
|
|
uint8_t dl_accumulation_pkt_limit_valid;
|
|
uint32_t dl_accumulation_pkt_limit;
|
|
uint8_t dl_accumulation_byte_limit_valid;
|
|
uint32_t dl_accumulation_byte_limit;
|
|
uint8_t ul_accumulation_time_limit_valid;
|
|
uint32_t ul_accumulation_time_limit;
|
|
uint8_t hw_control_flags_valid;
|
|
uint32_t hw_control_flags;
|
|
uint8_t ul_msi_event_threshold_valid;
|
|
uint32_t ul_msi_event_threshold;
|
|
uint8_t dl_msi_event_threshold_valid;
|
|
uint32_t dl_msi_event_threshold;
|
|
};
|
|
|
|
struct ipa_config_resp_msg_v01 {
|
|
struct ipa_qmi_response_type_v01 resp;
|
|
};
|
|
|
|
/*Service Message Definition*/
|
|
#define QMI_IPA_INDICATION_REGISTER_REQ_V01 0x0020
|
|
#define QMI_IPA_INDICATION_REGISTER_RESP_V01 0x0020
|
|
#define QMI_IPA_INIT_MODEM_DRIVER_REQ_V01 0x0021
|
|
#define QMI_IPA_INIT_MODEM_DRIVER_RESP_V01 0x0021
|
|
#define QMI_IPA_MASTER_DRIVER_INIT_COMPLETE_IND_V01 0x0022
|
|
#define QMI_IPA_INSTALL_FILTER_RULE_REQ_V01 0x0023
|
|
#define QMI_IPA_INSTALL_FILTER_RULE_RESP_V01 0x0023
|
|
#define QMI_IPA_FILTER_INSTALLED_NOTIF_REQ_V01 0x0024
|
|
#define QMI_IPA_FILTER_INSTALLED_NOTIF_RESP_V01 0x0024
|
|
#define QMI_IPA_ENABLE_FORCE_CLEAR_DATAPATH_REQ_V01 0x0025
|
|
#define QMI_IPA_ENABLE_FORCE_CLEAR_DATAPATH_RESP_V01 0x0025
|
|
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_REQ_V01 0x0026
|
|
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_RESP_V01 0x0026
|
|
#define QMI_IPA_CONFIG_REQ_V01 0x0027
|
|
#define QMI_IPA_CONFIG_RESP_V01 0x0027
|
|
|
|
/* 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_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_ENABLE_FORCE_CLEAR_DATAPATH_REQ_MAX_MSG_LEN_V01 18
|
|
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_REQ_MAX_MSG_LEN_V01 7
|
|
#define QMI_IPA_ENABLE_FORCE_CLEAR_DATAPATH_RESP_MAX_MSG_LEN_V01 7
|
|
#define QMI_IPA_DISABLE_FORCE_CLEAR_DATAPATH_RESP_MAX_MSG_LEN_V01 7
|
|
|
|
#define QMI_IPA_CONFIG_REQ_MAX_MSG_LEN_V01 81
|
|
#define QMI_IPA_CONFIG_RESP_MAX_MSG_LEN_V01 7
|
|
/* Service Object Accessor */
|
|
|
|
#endif /* IPA_QMI_SERVICE_V01_H */
|
|
|
|
#ifndef _UAPI_MSM_IPC_H_
|
|
#define _UAPI_MSM_IPC_H_
|
|
|
|
#include <linux/ioctl.h>
|
|
#include <linux/types.h>
|
|
|
|
struct msm_ipc_port_addr {
|
|
uint32_t node_id;
|
|
uint32_t port_id;
|
|
};
|
|
|
|
struct msm_ipc_port_name {
|
|
uint32_t service;
|
|
uint32_t instance;
|
|
};
|
|
|
|
struct msm_ipc_addr {
|
|
unsigned char addrtype;
|
|
union {
|
|
struct msm_ipc_port_addr port_addr;
|
|
struct msm_ipc_port_name port_name;
|
|
} addr;
|
|
};
|
|
|
|
#define MSM_IPC_WAIT_FOREVER (~0) /* timeout for permanent subscription */
|
|
|
|
#ifndef AF_MSM_IPC
|
|
#define AF_MSM_IPC 27
|
|
#endif
|
|
|
|
#ifndef PF_MSM_IPC
|
|
#define PF_MSM_IPC AF_MSM_IPC
|
|
#endif
|
|
|
|
#define MSM_IPC_ADDR_NAME 1
|
|
#define MSM_IPC_ADDR_ID 2
|
|
|
|
struct sockaddr_msm_ipc {
|
|
unsigned short family;
|
|
struct msm_ipc_addr address;
|
|
unsigned char reserved;
|
|
};
|
|
|
|
struct config_sec_rules_args {
|
|
int num_group_info;
|
|
uint32_t service_id;
|
|
uint32_t instance_id;
|
|
unsigned reserved;
|
|
gid_t group_id[0];
|
|
};
|
|
|
|
#define IPC_ROUTER_IOCTL_MAGIC (0xC3)
|
|
|
|
#define IPC_ROUTER_IOCTL_GET_VERSION \
|
|
_IOR(IPC_ROUTER_IOCTL_MAGIC, 0, unsigned int)
|
|
|
|
#define IPC_ROUTER_IOCTL_GET_MTU _IOR(IPC_ROUTER_IOCTL_MAGIC, 1, unsigned int)
|
|
|
|
#define IPC_ROUTER_IOCTL_LOOKUP_SERVER \
|
|
_IOWR(IPC_ROUTER_IOCTL_MAGIC, 2, struct sockaddr_msm_ipc)
|
|
|
|
#define IPC_ROUTER_IOCTL_GET_CURR_PKT_SIZE \
|
|
_IOR(IPC_ROUTER_IOCTL_MAGIC, 3, unsigned int)
|
|
|
|
#define IPC_ROUTER_IOCTL_BIND_CONTROL_PORT \
|
|
_IOR(IPC_ROUTER_IOCTL_MAGIC, 4, unsigned int)
|
|
|
|
#define IPC_ROUTER_IOCTL_CONFIG_SEC_RULES \
|
|
_IOR(IPC_ROUTER_IOCTL_MAGIC, 5, struct config_sec_rules_args)
|
|
|
|
struct msm_ipc_server_info {
|
|
uint32_t node_id;
|
|
uint32_t port_id;
|
|
uint32_t service;
|
|
uint32_t instance;
|
|
};
|
|
|
|
struct server_lookup_args {
|
|
struct msm_ipc_port_name port_name;
|
|
int num_entries_in_array;
|
|
int num_entries_found;
|
|
uint32_t lookup_mask;
|
|
struct msm_ipc_server_info srv_info[0];
|
|
};
|
|
|
|
#endif
|
|
|
|
#ifndef _UAPI_MSM_RMNET_H_
|
|
#define _UAPI_MSM_RMNET_H_
|
|
|
|
/* Bitmap macros for RmNET driver operation mode. */
|
|
#define RMNET_MODE_NONE (0x00)
|
|
#define RMNET_MODE_LLP_ETH (0x01)
|
|
#define RMNET_MODE_LLP_IP (0x02)
|
|
#define RMNET_MODE_QOS (0x04)
|
|
#define RMNET_MODE_MASK \
|
|
(RMNET_MODE_LLP_ETH | RMNET_MODE_LLP_IP | RMNET_MODE_QOS)
|
|
|
|
#define RMNET_IS_MODE_QOS(mode) ((mode & RMNET_MODE_QOS) == RMNET_MODE_QOS)
|
|
#define RMNET_IS_MODE_IP(mode) ((mode & RMNET_MODE_LLP_IP) == RMNET_MODE_LLP_IP)
|
|
|
|
enum rmnet_ioctl_cmds_e {
|
|
RMNET_IOCTL_SET_LLP_ETHERNET = 0x000089F1, /* Set Ethernet protocol */
|
|
RMNET_IOCTL_SET_LLP_IP = 0x000089F2, /* Set RAWIP protocol */
|
|
RMNET_IOCTL_GET_LLP = 0x000089F3, /* Get link protocol */
|
|
RMNET_IOCTL_SET_QOS_ENABLE = 0x000089F4, /* Set QoS header enabled */
|
|
RMNET_IOCTL_SET_QOS_DISABLE = 0x000089F5, /* Set QoS header disabled*/
|
|
RMNET_IOCTL_GET_QOS = 0x000089F6, /* Get QoS header state */
|
|
RMNET_IOCTL_GET_OPMODE = 0x000089F7, /* Get operation mode */
|
|
RMNET_IOCTL_OPEN = 0x000089F8, /* Open transport port */
|
|
RMNET_IOCTL_CLOSE = 0x000089F9, /* Close transport port */
|
|
RMNET_IOCTL_FLOW_ENABLE = 0x000089FA, /* Flow enable */
|
|
RMNET_IOCTL_FLOW_DISABLE = 0x000089FB, /* Flow disable */
|
|
RMNET_IOCTL_FLOW_SET_HNDL = 0x000089FC, /* Set flow handle */
|
|
RMNET_IOCTL_EXTENDED = 0x000089FD, /* Extended IOCTLs */
|
|
RMNET_IOCTL_MAX
|
|
};
|
|
|
|
enum rmnet_ioctl_extended_cmds_e {
|
|
/* RmNet Data Required IOCTLs */
|
|
RMNET_IOCTL_GET_SUPPORTED_FEATURES = 0x0000, /* Get features */
|
|
RMNET_IOCTL_SET_MRU = 0x0001, /* Set MRU */
|
|
RMNET_IOCTL_GET_MRU = 0x0002, /* Get MRU */
|
|
RMNET_IOCTL_GET_EPID = 0x0003, /* Get endpoint ID */
|
|
RMNET_IOCTL_GET_DRIVER_NAME = 0x0004, /* Get driver name */
|
|
RMNET_IOCTL_ADD_MUX_CHANNEL = 0x0005, /* Add MUX ID */
|
|
RMNET_IOCTL_SET_EGRESS_DATA_FORMAT = 0x0006, /* Set EDF */
|
|
RMNET_IOCTL_SET_INGRESS_DATA_FORMAT = 0x0007, /* Set IDF */
|
|
RMNET_IOCTL_SET_AGGREGATION_COUNT = 0x0008, /* Set agg count */
|
|
RMNET_IOCTL_GET_AGGREGATION_COUNT = 0x0009, /* Get agg count */
|
|
RMNET_IOCTL_SET_AGGREGATION_SIZE = 0x000A, /* Set agg size */
|
|
RMNET_IOCTL_GET_AGGREGATION_SIZE = 0x000B, /* Get agg size */
|
|
RMNET_IOCTL_FLOW_CONTROL = 0x000C, /* Do flow control */
|
|
RMNET_IOCTL_GET_DFLT_CONTROL_CHANNEL = 0x000D, /* For legacy use */
|
|
RMNET_IOCTL_GET_HWSW_MAP = 0x000E, /* Get HW/SW map */
|
|
RMNET_IOCTL_SET_RX_HEADROOM = 0x000F, /* RX Headroom */
|
|
RMNET_IOCTL_GET_EP_PAIR = 0x0010, /* Endpoint pair */
|
|
RMNET_IOCTL_SET_QOS_VERSION = 0x0011, /* 8/6 byte QoS hdr*/
|
|
RMNET_IOCTL_GET_QOS_VERSION = 0x0012, /* 8/6 byte QoS hdr*/
|
|
RMNET_IOCTL_GET_SUPPORTED_QOS_MODES = 0x0013, /* Get QoS modes */
|
|
RMNET_IOCTL_SET_SLEEP_STATE = 0x0014, /* Set sleep state */
|
|
RMNET_IOCTL_SET_XLAT_DEV_INFO = 0x0015, /* xlat dev name */
|
|
RMNET_IOCTL_EXTENDED_MAX = 0x0016
|
|
};
|
|
|
|
/* Return values for the RMNET_IOCTL_GET_SUPPORTED_FEATURES IOCTL */
|
|
#define RMNET_IOCTL_FEAT_NOTIFY_MUX_CHANNEL (1 << 0)
|
|
#define RMNET_IOCTL_FEAT_SET_EGRESS_DATA_FORMAT (1 << 1)
|
|
#define RMNET_IOCTL_FEAT_SET_INGRESS_DATA_FORMAT (1 << 2)
|
|
#define RMNET_IOCTL_FEAT_SET_AGGREGATION_COUNT (1 << 3)
|
|
#define RMNET_IOCTL_FEAT_GET_AGGREGATION_COUNT (1 << 4)
|
|
#define RMNET_IOCTL_FEAT_SET_AGGREGATION_SIZE (1 << 5)
|
|
#define RMNET_IOCTL_FEAT_GET_AGGREGATION_SIZE (1 << 6)
|
|
#define RMNET_IOCTL_FEAT_FLOW_CONTROL (1 << 7)
|
|
#define RMNET_IOCTL_FEAT_GET_DFLT_CONTROL_CHANNEL (1 << 8)
|
|
#define RMNET_IOCTL_FEAT_GET_HWSW_MAP (1 << 9)
|
|
|
|
/* Input values for the RMNET_IOCTL_SET_EGRESS_DATA_FORMAT IOCTL */
|
|
#define RMNET_IOCTL_EGRESS_FORMAT_MAP (1 << 1)
|
|
#define RMNET_IOCTL_EGRESS_FORMAT_AGGREGATION (1 << 2)
|
|
#define RMNET_IOCTL_EGRESS_FORMAT_MUXING (1 << 3)
|
|
#define RMNET_IOCTL_EGRESS_FORMAT_CHECKSUM (1 << 4)
|
|
|
|
/* Input values for the RMNET_IOCTL_SET_INGRESS_DATA_FORMAT IOCTL */
|
|
#define RMNET_IOCTL_INGRESS_FORMAT_MAP (1 << 1)
|
|
#define RMNET_IOCTL_INGRESS_FORMAT_DEAGGREGATION (1 << 2)
|
|
#define RMNET_IOCTL_INGRESS_FORMAT_DEMUXING (1 << 3)
|
|
#define RMNET_IOCTL_INGRESS_FORMAT_CHECKSUM (1 << 4)
|
|
|
|
/* User space may not have this defined. */
|
|
#ifndef IFNAMSIZ
|
|
#define IFNAMSIZ 16
|
|
#endif
|
|
|
|
struct rmnet_ioctl_extended_s {
|
|
uint32_t extended_ioctl;
|
|
union {
|
|
uint32_t data; /* Generic data field for most extended IOCTLs */
|
|
int8_t if_name[IFNAMSIZ];
|
|
struct {
|
|
uint32_t mux_id;
|
|
int8_t vchannel_name[IFNAMSIZ];
|
|
} rmnet_mux_val;
|
|
struct {
|
|
uint8_t flow_mode;
|
|
uint8_t mux_id;
|
|
} flow_control_prop;
|
|
struct {
|
|
uint32_t consumer_pipe_num;
|
|
uint32_t producer_pipe_num;
|
|
} ipa_ep_pair;
|
|
} u;
|
|
};
|
|
|
|
struct rmnet_ioctl_data_s {
|
|
union {
|
|
uint32_t operation_mode;
|
|
uint32_t tcm_handle;
|
|
} u;
|
|
};
|
|
|
|
#define RMNET_IOCTL_QOS_MODE_6 (1 << 0)
|
|
#define RMNET_IOCTL_QOS_MODE_8 (1 << 1)
|
|
|
|
#define QMI_QOS_HDR_S __attribute((__packed__)) qmi_qos_hdr_s
|
|
struct QMI_QOS_HDR_S {
|
|
unsigned char version;
|
|
unsigned char flags;
|
|
uint32_t flow_id;
|
|
};
|
|
|
|
struct qmi_qos_hdr8_s {
|
|
struct QMI_QOS_HDR_S hdr;
|
|
uint8_t reserved[2];
|
|
} __attribute((__packed__));
|
|
|
|
#endif
|