1 /* 2 * This file is auto-generated. Modifications will be lost. 3 * 4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5 * for more information. 6 */ 7 #ifndef _RMNET_IPA_FD_IOCTL_H 8 #define _RMNET_IPA_FD_IOCTL_H 9 #include <linux/ioctl.h> 10 #include <linux/ipa_qmi_service_v01.h> 11 #include <linux/msm_ipa.h> 12 #define WAN_IOC_MAGIC 0x69 13 #define WAN_IOCTL_ADD_FLT_RULE 0 14 #define WAN_IOCTL_ADD_FLT_INDEX 1 15 #define WAN_IOCTL_VOTE_FOR_BW_MBPS 2 16 #define WAN_IOCTL_POLL_TETHERING_STATS 3 17 #define WAN_IOCTL_SET_DATA_QUOTA 4 18 #define WAN_IOCTL_SET_TETHER_CLIENT_PIPE 5 19 #define WAN_IOCTL_QUERY_TETHER_STATS 6 20 #define WAN_IOCTL_RESET_TETHER_STATS 7 21 #define WAN_IOCTL_QUERY_DL_FILTER_STATS 8 22 #define WAN_IOCTL_ADD_FLT_RULE_EX 9 23 #define WAN_IOCTL_QUERY_TETHER_STATS_ALL 10 24 #define WAN_IOCTL_NOTIFY_WAN_STATE 11 25 #define WAN_IOCTL_ADD_UL_FLT_RULE 12 26 #define WAN_IOCTL_ENABLE_PER_CLIENT_STATS 13 27 #define WAN_IOCTL_QUERY_PER_CLIENT_STATS 14 28 #define WAN_IOCTL_SET_LAN_CLIENT_INFO 15 29 #define WAN_IOCTL_CLEAR_LAN_CLIENT_INFO 16 30 #define WAN_IOCTL_SEND_LAN_CLIENT_MSG 17 31 #define WAN_IOCTL_ADD_OFFLOAD_CONNECTION 18 32 #define WAN_IOCTL_RMV_OFFLOAD_CONNECTION 19 33 #ifndef IFNAMSIZ 34 #define IFNAMSIZ 16 35 #endif 36 struct wan_ioctl_poll_tethering_stats { 37 uint64_t polling_interval_secs; 38 uint8_t reset_stats; 39 }; 40 struct wan_ioctl_set_data_quota { 41 char interface_name[IFNAMSIZ]; 42 uint64_t quota_mbytes; 43 uint8_t set_quota; 44 }; 45 struct wan_ioctl_set_tether_client_pipe { 46 enum ipacm_client_enum ipa_client; 47 uint8_t reset_client; 48 uint32_t ul_src_pipe_len; 49 uint32_t ul_src_pipe_list[QMI_IPA_MAX_PIPES_V01]; 50 uint32_t dl_dst_pipe_len; 51 uint32_t dl_dst_pipe_list[QMI_IPA_MAX_PIPES_V01]; 52 }; 53 struct wan_ioctl_query_tether_stats { 54 char upstreamIface[IFNAMSIZ]; 55 char tetherIface[IFNAMSIZ]; 56 enum ipacm_client_enum ipa_client; 57 uint64_t ipv4_tx_packets; 58 uint64_t ipv4_tx_bytes; 59 uint64_t ipv4_rx_packets; 60 uint64_t ipv4_rx_bytes; 61 uint64_t ipv6_tx_packets; 62 uint64_t ipv6_tx_bytes; 63 uint64_t ipv6_rx_packets; 64 uint64_t ipv6_rx_bytes; 65 }; 66 struct wan_ioctl_query_tether_stats_all { 67 char upstreamIface[IFNAMSIZ]; 68 enum ipacm_client_enum ipa_client; 69 uint8_t reset_stats; 70 uint64_t tx_bytes; 71 uint64_t rx_bytes; 72 }; 73 struct wan_ioctl_reset_tether_stats { 74 char upstreamIface[IFNAMSIZ]; 75 uint8_t reset_stats; 76 }; 77 struct wan_ioctl_query_dl_filter_stats { 78 uint8_t reset_stats; 79 struct ipa_get_data_stats_resp_msg_v01 stats_resp; 80 uint32_t index; 81 }; 82 struct wan_ioctl_notify_wan_state { 83 uint8_t up; 84 }; 85 struct wan_ioctl_send_lan_client_msg { 86 struct ipa_lan_client_msg lan_client; 87 enum ipa_per_client_stats_event client_event; 88 }; 89 struct wan_ioctl_lan_client_info { 90 enum ipacm_per_client_device_type device_type; 91 uint8_t mac[IPA_MAC_ADDR_SIZE]; 92 uint8_t client_init; 93 int8_t client_idx; 94 uint8_t hdr_len; 95 enum ipa_client_type ul_src_pipe; 96 }; 97 struct wan_ioctl_per_client_info { 98 uint8_t mac[IPA_MAC_ADDR_SIZE]; 99 uint64_t ipv4_tx_bytes; 100 uint64_t ipv4_rx_bytes; 101 uint64_t ipv6_tx_bytes; 102 uint64_t ipv6_rx_bytes; 103 }; 104 struct wan_ioctl_query_per_client_stats { 105 enum ipacm_per_client_device_type device_type; 106 uint8_t reset_stats; 107 uint8_t disconnect_clnt; 108 uint8_t num_clients; 109 struct wan_ioctl_per_client_info client_info[IPA_MAX_NUM_HW_PATH_CLIENTS]; 110 }; 111 #define WAN_IOC_ADD_FLT_RULE _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_ADD_FLT_RULE, struct ipa_install_fltr_rule_req_msg_v01 *) 112 #define WAN_IOC_ADD_FLT_RULE_INDEX _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_ADD_FLT_INDEX, struct ipa_fltr_installed_notif_req_msg_v01 *) 113 #define WAN_IOC_VOTE_FOR_BW_MBPS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_VOTE_FOR_BW_MBPS, uint32_t *) 114 #define WAN_IOC_POLL_TETHERING_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_POLL_TETHERING_STATS, struct wan_ioctl_poll_tethering_stats *) 115 #define WAN_IOC_SET_DATA_QUOTA _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_SET_DATA_QUOTA, struct wan_ioctl_set_data_quota *) 116 #define WAN_IOC_SET_TETHER_CLIENT_PIPE _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_SET_TETHER_CLIENT_PIPE, struct wan_ioctl_set_tether_client_pipe *) 117 #define WAN_IOC_QUERY_TETHER_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_QUERY_TETHER_STATS, struct wan_ioctl_query_tether_stats *) 118 #define WAN_IOC_RESET_TETHER_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_RESET_TETHER_STATS, struct wan_ioctl_reset_tether_stats *) 119 #define WAN_IOC_QUERY_DL_FILTER_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_QUERY_DL_FILTER_STATS, struct wan_ioctl_query_dl_filter_stats *) 120 #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 *) 121 #define WAN_IOC_QUERY_TETHER_STATS_ALL _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_QUERY_TETHER_STATS_ALL, struct wan_ioctl_query_tether_stats_all *) 122 #define WAN_IOC_NOTIFY_WAN_STATE _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_NOTIFY_WAN_STATE, struct wan_ioctl_notify_wan_state *) 123 #define WAN_IOC_ADD_UL_FLT_RULE _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_ADD_UL_FLT_RULE, struct ipa_configure_ul_firewall_rules_req_msg_v01 *) 124 #define WAN_IOC_ENABLE_PER_CLIENT_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_ENABLE_PER_CLIENT_STATS, bool *) 125 #define WAN_IOC_QUERY_PER_CLIENT_STATS _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_QUERY_PER_CLIENT_STATS, struct wan_ioctl_query_per_client_stats *) 126 #define WAN_IOC_SET_LAN_CLIENT_INFO _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_SET_LAN_CLIENT_INFO, struct wan_ioctl_lan_client_info *) 127 #define WAN_IOC_SEND_LAN_CLIENT_MSG _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_SEND_LAN_CLIENT_MSG, struct wan_ioctl_send_lan_client_msg *) 128 #define WAN_IOC_CLEAR_LAN_CLIENT_INFO _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_CLEAR_LAN_CLIENT_INFO, struct wan_ioctl_lan_client_info *) 129 #define WAN_IOC_ADD_OFFLOAD_CONNECTION _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_ADD_OFFLOAD_CONNECTION, struct ipa_add_offload_connection_req_msg_v01 *) 130 #define WAN_IOC_RMV_OFFLOAD_CONNECTION _IOWR(WAN_IOC_MAGIC, WAN_IOCTL_RMV_OFFLOAD_CONNECTION, struct ipa_remove_offload_connection_req_msg_v01 *) 131 #endif 132