1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef _MSM_IPA_H_ 20 #define _MSM_IPA_H_ 21 #include <stdio.h> 22 #include <stdint.h> 23 #include <stddef.h> 24 #include <sys/stat.h> 25 #include <linux/ioctl.h> 26 #include <linux/types.h> 27 #include <linux/if_ether.h> 28 #define IPA_IOC_MAGIC 0xCF 29 #define IPA_DEV_NAME "/dev/ipa" 30 #define IPA_NAT_DEV_NAME "ipaNatTable" 31 #define IPA_IPV6CT_DEV_NAME "ipaIpv6CTTable" 32 #define IPA_DFLT_RT_TBL_NAME "ipa_dflt_rt" 33 #define IPAHAL_NAT_INVALID_PROTOCOL 0xFF 34 #define IPA_IOCTL_ADD_HDR 0 35 #define IPA_IOCTL_DEL_HDR 1 36 #define IPA_IOCTL_ADD_RT_RULE 2 37 #define IPA_IOCTL_DEL_RT_RULE 3 38 #define IPA_IOCTL_ADD_FLT_RULE 4 39 #define IPA_IOCTL_DEL_FLT_RULE 5 40 #define IPA_IOCTL_COMMIT_HDR 6 41 #define IPA_IOCTL_RESET_HDR 7 42 #define IPA_IOCTL_COMMIT_RT 8 43 #define IPA_IOCTL_RESET_RT 9 44 #define IPA_IOCTL_COMMIT_FLT 10 45 #define IPA_IOCTL_RESET_FLT 11 46 #define IPA_IOCTL_DUMP 12 47 #define IPA_IOCTL_GET_RT_TBL 13 48 #define IPA_IOCTL_PUT_RT_TBL 14 49 #define IPA_IOCTL_COPY_HDR 15 50 #define IPA_IOCTL_QUERY_INTF 16 51 #define IPA_IOCTL_QUERY_INTF_TX_PROPS 17 52 #define IPA_IOCTL_QUERY_INTF_RX_PROPS 18 53 #define IPA_IOCTL_GET_HDR 19 54 #define IPA_IOCTL_PUT_HDR 20 55 #define IPA_IOCTL_SET_FLT 21 56 #define IPA_IOCTL_ALLOC_NAT_MEM 22 57 #define IPA_IOCTL_V4_INIT_NAT 23 58 #define IPA_IOCTL_TABLE_DMA_CMD 24 59 #define IPA_IOCTL_NAT_DMA IPA_IOCTL_TABLE_DMA_CMD 60 #define IPA_IOCTL_INIT_IPV6CT_TABLE 25 61 #define IPA_IOCTL_V4_DEL_NAT 26 62 #define IPA_IOCTL_PULL_MSG 27 63 #define IPA_IOCTL_GET_NAT_OFFSET 28 64 #define IPA_IOCTL_RM_ADD_DEPENDENCY 29 65 #define IPA_IOCTL_RM_DEL_DEPENDENCY 30 66 #define IPA_IOCTL_GENERATE_FLT_EQ 31 67 #define IPA_IOCTL_QUERY_INTF_EXT_PROPS 32 68 #define IPA_IOCTL_QUERY_EP_MAPPING 33 69 #define IPA_IOCTL_QUERY_RT_TBL_INDEX 34 70 #define IPA_IOCTL_WRITE_QMAPID 35 71 #define IPA_IOCTL_MDFY_FLT_RULE 36 72 #define IPA_IOCTL_NOTIFY_WAN_UPSTREAM_ROUTE_ADD 37 73 #define IPA_IOCTL_NOTIFY_WAN_UPSTREAM_ROUTE_DEL 38 74 #define IPA_IOCTL_NOTIFY_WAN_EMBMS_CONNECTED 39 75 #define IPA_IOCTL_ADD_HDR_PROC_CTX 40 76 #define IPA_IOCTL_DEL_HDR_PROC_CTX 41 77 #define IPA_IOCTL_MDFY_RT_RULE 42 78 #define IPA_IOCTL_ADD_RT_RULE_AFTER 43 79 #define IPA_IOCTL_ADD_FLT_RULE_AFTER 44 80 #define IPA_IOCTL_GET_HW_VERSION 45 81 #define IPA_IOCTL_ADD_RT_RULE_EXT 46 82 #define IPA_IOCTL_ADD_VLAN_IFACE 47 83 #define IPA_IOCTL_DEL_VLAN_IFACE 48 84 #define IPA_IOCTL_ADD_L2TP_VLAN_MAPPING 49 85 #define IPA_IOCTL_DEL_L2TP_VLAN_MAPPING 50 86 #define IPA_IOCTL_NAT_MODIFY_PDN 51 87 #define IPA_IOCTL_ALLOC_NAT_TABLE 52 88 #define IPA_IOCTL_ALLOC_IPV6CT_TABLE 53 89 #define IPA_IOCTL_DEL_NAT_TABLE 54 90 #define IPA_IOCTL_DEL_IPV6CT_TABLE 55 91 #define IPA_IOCTL_CLEANUP 56 92 #define IPA_IOCTL_QUERY_WLAN_CLIENT 57 93 #define IPA_IOCTL_GET_VLAN_MODE 58 94 #define IPA_IOCTL_ADD_BRIDGE_VLAN_MAPPING 59 95 #define IPA_IOCTL_DEL_BRIDGE_VLAN_MAPPING 60 96 #define IPA_IOCTL_ODL_QUERY_ADAPL_EP_INFO 61 97 #define IPA_IOCTL_ODL_GET_AGG_BYTE_LIMIT 62 98 #define IPA_IOCTL_ODL_QUERY_MODEM_CONFIG 63 99 #define IPA_IOCTL_GSB_CONNECT 64 100 #define IPA_IOCTL_GSB_DISCONNECT 65 101 #define IPA_IOCTL_WIGIG_FST_SWITCH 66 102 #define IPA_IOCTL_ADD_RT_RULE_V2 67 103 #define IPA_IOCTL_ADD_RT_RULE_EXT_V2 68 104 #define IPA_IOCTL_ADD_RT_RULE_AFTER_V2 69 105 #define IPA_IOCTL_MDFY_RT_RULE_V2 70 106 #define IPA_IOCTL_ADD_FLT_RULE_V2 71 107 #define IPA_IOCTL_ADD_FLT_RULE_AFTER_V2 72 108 #define IPA_IOCTL_MDFY_FLT_RULE_V2 73 109 #define IPA_IOCTL_FNR_COUNTER_ALLOC 74 110 #define IPA_IOCTL_FNR_COUNTER_DEALLOC 75 111 #define IPA_IOCTL_FNR_COUNTER_QUERY 76 112 #define IPA_IOCTL_SET_FNR_COUNTER_INFO 77 113 #define IPA_IOCTL_GET_NAT_IN_SRAM_INFO 78 114 #define IPA_IOCTL_APP_CLOCK_VOTE 79 115 #define IPA_HDR_MAX_SIZE 64 116 #define IPA_RESOURCE_NAME_MAX 32 117 #define IPA_NUM_PROPS_MAX 35 118 #define IPA_MAC_ADDR_SIZE 6 119 #define IPA_MBIM_MAX_STREAM_NUM 8 120 #define IPA_WAN_MSG_IPv6_ADDR_GW_LEN 4 121 #define IPA_MAX_NUM_HW_PATH_CLIENTS 16 122 #define QMI_IPA_MAX_CLIENT_DST_PIPES 4 123 #define IPA_MAX_FLT_RT_CNT_INDEX (128) 124 #define IPA_FLT_RT_HW_COUNTER (120) 125 #define IPA_FLT_RT_SW_COUNTER (IPA_MAX_FLT_RT_CNT_INDEX - IPA_FLT_RT_HW_COUNTER) 126 #define IPA_FLT_TOS (1ul << 0) 127 #define IPA_FLT_PROTOCOL (1ul << 1) 128 #define IPA_FLT_SRC_ADDR (1ul << 2) 129 #define IPA_FLT_DST_ADDR (1ul << 3) 130 #define IPA_FLT_SRC_PORT_RANGE (1ul << 4) 131 #define IPA_FLT_DST_PORT_RANGE (1ul << 5) 132 #define IPA_FLT_TYPE (1ul << 6) 133 #define IPA_FLT_CODE (1ul << 7) 134 #define IPA_FLT_SPI (1ul << 8) 135 #define IPA_FLT_SRC_PORT (1ul << 9) 136 #define IPA_FLT_DST_PORT (1ul << 10) 137 #define IPA_FLT_TC (1ul << 11) 138 #define IPA_FLT_FLOW_LABEL (1ul << 12) 139 #define IPA_FLT_NEXT_HDR (1ul << 13) 140 #define IPA_FLT_META_DATA (1ul << 14) 141 #define IPA_FLT_FRAGMENT (1ul << 15) 142 #define IPA_FLT_TOS_MASKED (1ul << 16) 143 #define IPA_FLT_MAC_SRC_ADDR_ETHER_II (1ul << 17) 144 #define IPA_FLT_MAC_DST_ADDR_ETHER_II (1ul << 18) 145 #define IPA_FLT_MAC_SRC_ADDR_802_3 (1ul << 19) 146 #define IPA_FLT_MAC_DST_ADDR_802_3 (1ul << 20) 147 #define IPA_FLT_MAC_ETHER_TYPE (1ul << 21) 148 #define IPA_FLT_MAC_DST_ADDR_L2TP (1ul << 22) 149 #define IPA_FLT_TCP_SYN (1ul << 23) 150 #define IPA_FLT_TCP_SYN_L2TP (1ul << 24) 151 #define IPA_FLT_L2TP_INNER_IP_TYPE (1ul << 25) 152 #define IPA_FLT_L2TP_INNER_IPV4_DST_ADDR (1ul << 26) 153 #define IPA_FLT_IS_PURE_ACK (1ul << 27) 154 #define IPA_FLT_VLAN_ID (1ul << 28) 155 #define IPA_FLT_MAC_SRC_ADDR_802_1Q (1ul << 29) 156 #define IPA_FLT_MAC_DST_ADDR_802_1Q (1ul << 30) 157 #define IPA_MAX_PDN_NUM 5 158 enum ipa_client_type { 159 IPA_CLIENT_HSIC1_PROD = 0, 160 IPA_CLIENT_HSIC1_CONS = 1, 161 IPA_CLIENT_HSIC2_PROD = 2, 162 IPA_CLIENT_HSIC2_CONS = 3, 163 IPA_CLIENT_HSIC3_PROD = 4, 164 IPA_CLIENT_HSIC3_CONS = 5, 165 IPA_CLIENT_HSIC4_PROD = 6, 166 IPA_CLIENT_HSIC4_CONS = 7, 167 IPA_CLIENT_HSIC5_PROD = 8, 168 IPA_CLIENT_HSIC5_CONS = 9, 169 IPA_CLIENT_WLAN1_PROD = 10, 170 IPA_CLIENT_WLAN1_CONS = 11, 171 IPA_CLIENT_A5_WLAN_AMPDU_PROD = 12, 172 IPA_CLIENT_WLAN2_CONS = 13, 173 IPA_CLIENT_WLAN3_CONS = 15, 174 IPA_CLIENT_WLAN4_CONS = 17, 175 IPA_CLIENT_USB_PROD = 18, 176 IPA_CLIENT_USB_CONS = 19, 177 IPA_CLIENT_USB2_PROD = 20, 178 IPA_CLIENT_USB2_CONS = 21, 179 IPA_CLIENT_USB3_PROD = 22, 180 IPA_CLIENT_USB3_CONS = 23, 181 IPA_CLIENT_USB4_PROD = 24, 182 IPA_CLIENT_USB4_CONS = 25, 183 IPA_CLIENT_UC_USB_PROD = 26, 184 IPA_CLIENT_USB_DPL_CONS = 27, 185 IPA_CLIENT_A2_EMBEDDED_PROD = 28, 186 IPA_CLIENT_A2_EMBEDDED_CONS = 29, 187 IPA_CLIENT_A2_TETHERED_PROD = 30, 188 IPA_CLIENT_A2_TETHERED_CONS = 31, 189 IPA_CLIENT_APPS_LAN_PROD = 32, 190 IPA_CLIENT_APPS_LAN_CONS = 33, 191 IPA_CLIENT_APPS_WAN_PROD = 34, 192 IPA_CLIENT_APPS_LAN_WAN_PROD = IPA_CLIENT_APPS_WAN_PROD, 193 IPA_CLIENT_APPS_WAN_CONS = 35, 194 IPA_CLIENT_APPS_CMD_PROD = 36, 195 IPA_CLIENT_A5_LAN_WAN_CONS = 37, 196 IPA_CLIENT_ODU_PROD = 38, 197 IPA_CLIENT_ODU_EMB_CONS = 39, 198 IPA_CLIENT_ODU_TETH_CONS = 41, 199 IPA_CLIENT_MHI_PROD = 42, 200 IPA_CLIENT_MHI_CONS = 43, 201 IPA_CLIENT_MEMCPY_DMA_SYNC_PROD = 44, 202 IPA_CLIENT_MEMCPY_DMA_SYNC_CONS = 45, 203 IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD = 46, 204 IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS = 47, 205 IPA_CLIENT_ETHERNET_PROD = 48, 206 IPA_CLIENT_ETHERNET_CONS = 49, 207 IPA_CLIENT_Q6_LAN_PROD = 50, 208 IPA_CLIENT_Q6_LAN_CONS = 51, 209 IPA_CLIENT_Q6_WAN_PROD = 52, 210 IPA_CLIENT_Q6_WAN_CONS = 53, 211 IPA_CLIENT_Q6_CMD_PROD = 54, 212 IPA_CLIENT_Q6_DUN_CONS = 55, 213 IPA_CLIENT_Q6_DECOMP_PROD = 56, 214 IPA_CLIENT_Q6_DECOMP_CONS = 57, 215 IPA_CLIENT_Q6_DECOMP2_PROD = 58, 216 IPA_CLIENT_Q6_DECOMP2_CONS = 59, 217 IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS = 61, 218 IPA_CLIENT_TEST_PROD = 62, 219 IPA_CLIENT_TEST_CONS = 63, 220 IPA_CLIENT_TEST1_PROD = 64, 221 IPA_CLIENT_TEST1_CONS = 65, 222 IPA_CLIENT_TEST2_PROD = 66, 223 IPA_CLIENT_TEST2_CONS = 67, 224 IPA_CLIENT_TEST3_PROD = 68, 225 IPA_CLIENT_TEST3_CONS = 69, 226 IPA_CLIENT_TEST4_PROD = 70, 227 IPA_CLIENT_TEST4_CONS = 71, 228 IPA_CLIENT_DUMMY_CONS = 73, 229 IPA_CLIENT_Q6_DL_NLO_DATA_PROD = 74, 230 IPA_CLIENT_Q6_UL_NLO_DATA_CONS = 75, 231 IPA_CLIENT_Q6_UL_NLO_ACK_CONS = 77, 232 IPA_CLIENT_Q6_QBAP_STATUS_CONS = 79, 233 IPA_CLIENT_MHI_DPL_CONS = 81, 234 IPA_CLIENT_ODL_DPL_CONS = 83, 235 IPA_CLIENT_Q6_AUDIO_DMA_MHI_PROD = 84, 236 IPA_CLIENT_Q6_AUDIO_DMA_MHI_CONS = 85, 237 IPA_CLIENT_WIGIG_PROD = 86, 238 IPA_CLIENT_WIGIG1_CONS = 87, 239 IPA_CLIENT_WIGIG2_CONS = 89, 240 IPA_CLIENT_WIGIG3_CONS = 91, 241 IPA_CLIENT_WIGIG4_CONS = 93, 242 IPA_CLIENT_APPS_WAN_COAL_CONS = 95, 243 IPA_CLIENT_MHI_PRIME_TETH_PROD = 96, 244 IPA_CLIENT_MHI_PRIME_TETH_CONS = 97, 245 IPA_CLIENT_MHI_PRIME_RMNET_PROD = 98, 246 IPA_CLIENT_MHI_PRIME_RMNET_CONS = 99, 247 IPA_CLIENT_MHI_PRIME_DPL_PROD = 100, 248 IPA_CLIENT_AQC_ETHERNET_PROD = 102, 249 IPA_CLIENT_AQC_ETHERNET_CONS = 103, 250 }; 251 #define IPA_CLIENT_MAX (IPA_CLIENT_AQC_ETHERNET_CONS + 1) 252 #define IPA_CLIENT_WLAN2_PROD IPA_CLIENT_A5_WLAN_AMPDU_PROD 253 #define IPA_CLIENT_Q6_DL_NLO_DATA_PROD IPA_CLIENT_Q6_DL_NLO_DATA_PROD 254 #define IPA_CLIENT_Q6_UL_NLO_ACK_CONS IPA_CLIENT_Q6_UL_NLO_ACK_CONS 255 #define IPA_CLIENT_Q6_QBAP_STATUS_CONS IPA_CLIENT_Q6_QBAP_STATUS_CONS 256 #define IPA_CLIENT_MHI_DPL_CONS IPA_CLIENT_MHI_DPL_CONS 257 #define IPA_CLIENT_Q6_AUDIO_DMA_MHI_PROD IPA_CLIENT_Q6_AUDIO_DMA_MHI_PROD 258 #define IPA_CLIENT_Q6_AUDIO_DMA_MHI_CONS IPA_CLIENT_Q6_AUDIO_DMA_MHI_CONS 259 #define IPA_CLIENT_WIGIG_PROD IPA_CLIENT_WIGIG_PROD 260 #define IPA_CLIENT_WIGIG1_CONS IPA_CLIENT_WIGIG1_CONS 261 #define IPA_CLIENT_WIGIG2_CONS IPA_CLIENT_WIGIG2_CONS 262 #define IPA_CLIENT_WIGIG3_CONS IPA_CLIENT_WIGIG3_CONS 263 #define IPA_CLIENT_WIGIG4_CONS IPA_CLIENT_WIGIG4_CONS 264 #define IPA_CLIENT_APPS_WAN_COAL_CONS IPA_CLIENT_APPS_WAN_COAL_CONS 265 #define IPA_CLIENT_MHI_PRIME_TETH_PROD IPA_CLIENT_MHI_PRIME_TETH_PROD 266 #define IPA_CLIENT_MHI_PRIME_TETH_CONS IPA_CLIENT_MHI_PRIME_TETH_CONS 267 #define IPA_CLIENT_MHI_PRIME_RMNET_PROD IPA_CLIENT_MHI_PRIME_RMNET_PROD 268 #define IPA_CLIENT_MHI_PRIME_RMNET_CONS IPA_CLIENT_MHI_PRIME_RMNET_CONS 269 #define IPA_CLIENT_MHI_PRIME_DPL_PROD IPA_CLIENT_MHI_PRIME_DPL_PROD 270 #define IPA_CLIENT_AQC_ETHERNET_PROD IPA_CLIENT_AQC_ETHERNET_PROD 271 #define IPA_CLIENT_AQC_ETHERNET_CONS IPA_CLIENT_AQC_ETHERNET_CONS 272 #define IPA_CLIENT_IS_APPS_CONS(client) ((client) == IPA_CLIENT_APPS_LAN_CONS || (client) == IPA_CLIENT_APPS_WAN_CONS || (client) == IPA_CLIENT_APPS_WAN_COAL_CONS) 273 #define IPA_CLIENT_IS_APPS_PROD(client) ((client) == IPA_CLIENT_APPS_LAN_PROD || (client) == IPA_CLIENT_APPS_WAN_PROD) 274 #define IPA_CLIENT_IS_USB_CONS(client) ((client) == IPA_CLIENT_USB_CONS || (client) == IPA_CLIENT_USB2_CONS || (client) == IPA_CLIENT_USB3_CONS || (client) == IPA_CLIENT_USB_DPL_CONS || (client) == IPA_CLIENT_USB4_CONS) 275 #define IPA_CLIENT_IS_WAN_CONS(client) ((client) == IPA_CLIENT_APPS_WAN_CONS || (client) == IPA_CLIENT_APPS_WAN_COAL_CONS) 276 #define IPA_CLIENT_IS_WLAN_CONS(client) ((client) == IPA_CLIENT_WLAN1_CONS || (client) == IPA_CLIENT_WLAN2_CONS || (client) == IPA_CLIENT_WLAN3_CONS || (client) == IPA_CLIENT_WLAN4_CONS) 277 #define IPA_CLIENT_IS_ODU_CONS(client) ((client) == IPA_CLIENT_ODU_EMB_CONS || (client) == IPA_CLIENT_ODU_TETH_CONS) 278 #define IPA_CLIENT_IS_Q6_CONS(client) ((client) == IPA_CLIENT_Q6_LAN_CONS || (client) == IPA_CLIENT_Q6_WAN_CONS || (client) == IPA_CLIENT_Q6_DUN_CONS || (client) == IPA_CLIENT_Q6_DECOMP_CONS || (client) == IPA_CLIENT_Q6_DECOMP2_CONS || (client) == IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS || (client) == IPA_CLIENT_Q6_UL_NLO_DATA_CONS || (client) == IPA_CLIENT_Q6_UL_NLO_ACK_CONS || (client) == IPA_CLIENT_Q6_QBAP_STATUS_CONS || (client) == IPA_CLIENT_Q6_AUDIO_DMA_MHI_CONS) 279 #define IPA_CLIENT_IS_Q6_PROD(client) ((client) == IPA_CLIENT_Q6_LAN_PROD || (client) == IPA_CLIENT_Q6_WAN_PROD || (client) == IPA_CLIENT_Q6_CMD_PROD || (client) == IPA_CLIENT_Q6_DECOMP_PROD || (client) == IPA_CLIENT_Q6_DECOMP2_PROD || (client) == IPA_CLIENT_Q6_DL_NLO_DATA_PROD || (client) == IPA_CLIENT_Q6_AUDIO_DMA_MHI_PROD) 280 #define IPA_CLIENT_IS_Q6_NON_ZIP_CONS(client) ((client) == IPA_CLIENT_Q6_LAN_CONS || (client) == IPA_CLIENT_Q6_WAN_CONS || (client) == IPA_CLIENT_Q6_DUN_CONS || (client) == IPA_CLIENT_Q6_LTE_WIFI_AGGR_CONS || (client) == IPA_CLIENT_Q6_UL_NLO_DATA_CONS || (client) == IPA_CLIENT_Q6_UL_NLO_ACK_CONS || (client) == IPA_CLIENT_Q6_QBAP_STATUS_CONS || (client) == IPA_CLIENT_Q6_AUDIO_DMA_MHI_CONS) 281 #define IPA_CLIENT_IS_Q6_ZIP_CONS(client) ((client) == IPA_CLIENT_Q6_DECOMP_CONS || (client) == IPA_CLIENT_Q6_DECOMP2_CONS) 282 #define IPA_CLIENT_IS_Q6_NON_ZIP_PROD(client) ((client) == IPA_CLIENT_Q6_LAN_PROD || (client) == IPA_CLIENT_Q6_WAN_PROD || (client) == IPA_CLIENT_Q6_CMD_PROD || (client) == IPA_CLIENT_Q6_DL_NLO_DATA_PROD || (client) == IPA_CLIENT_Q6_AUDIO_DMA_MHI_PROD) 283 #define IPA_CLIENT_IS_Q6_ZIP_PROD(client) ((client) == IPA_CLIENT_Q6_DECOMP_PROD || (client) == IPA_CLIENT_Q6_DECOMP2_PROD) 284 #define IPA_CLIENT_IS_MEMCPY_DMA_CONS(client) ((client) == IPA_CLIENT_MEMCPY_DMA_SYNC_CONS || (client) == IPA_CLIENT_MEMCPY_DMA_ASYNC_CONS) 285 #define IPA_CLIENT_IS_MEMCPY_DMA_PROD(client) ((client) == IPA_CLIENT_MEMCPY_DMA_SYNC_PROD || (client) == IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD) 286 #define IPA_CLIENT_IS_MHI_CONS(client) ((client) == IPA_CLIENT_MHI_CONS || (client) == IPA_CLIENT_MHI_DPL_CONS) 287 #define IPA_CLIENT_IS_MHI(client) ((client) == IPA_CLIENT_MHI_CONS || (client) == IPA_CLIENT_MHI_PROD || (client) == IPA_CLIENT_MHI_DPL_CONS) 288 #define IPA_CLIENT_IS_TEST_PROD(client) ((client) == IPA_CLIENT_TEST_PROD || (client) == IPA_CLIENT_TEST1_PROD || (client) == IPA_CLIENT_TEST2_PROD || (client) == IPA_CLIENT_TEST3_PROD || (client) == IPA_CLIENT_TEST4_PROD) 289 #define IPA_CLIENT_IS_TEST_CONS(client) ((client) == IPA_CLIENT_TEST_CONS || (client) == IPA_CLIENT_TEST1_CONS || (client) == IPA_CLIENT_TEST2_CONS || (client) == IPA_CLIENT_TEST3_CONS || (client) == IPA_CLIENT_TEST4_CONS) 290 #define IPA_CLIENT_IS_TEST(client) (IPA_CLIENT_IS_TEST_PROD(client) || IPA_CLIENT_IS_TEST_CONS(client)) 291 enum ipa3_nat_mem_in { 292 IPA_NAT_MEM_IN_DDR = 0, 293 IPA_NAT_MEM_IN_SRAM = 1, 294 IPA_NAT_MEM_IN_MAX 295 }; 296 #define IPA_VALID_NAT_MEM_IN(t) ((t) >= IPA_NAT_MEM_IN_DDR && (t) < IPA_NAT_MEM_IN_MAX) 297 enum ipa_ip_type { 298 IPA_IP_v4, 299 IPA_IP_v6, 300 IPA_IP_MAX 301 }; 302 #define VALID_IPA_IP_TYPE(t) ((t) >= IPA_IP_v4 && (t) < IPA_IP_MAX) 303 enum ipa_rule_type { 304 IPA_RULE_HASHABLE, 305 IPA_RULE_NON_HASHABLE, 306 }; 307 #define IPA_RULE_TYPE_MAX (IPA_RULE_NON_HASHABLE + 1) 308 enum ipa_flt_action { 309 IPA_PASS_TO_ROUTING, 310 IPA_PASS_TO_SRC_NAT, 311 IPA_PASS_TO_DST_NAT, 312 IPA_PASS_TO_EXCEPTION 313 }; 314 enum ipa_wlan_event { 315 WLAN_CLIENT_CONNECT, 316 WLAN_CLIENT_DISCONNECT, 317 WLAN_CLIENT_POWER_SAVE_MODE, 318 WLAN_CLIENT_NORMAL_MODE, 319 SW_ROUTING_ENABLE, 320 SW_ROUTING_DISABLE, 321 WLAN_AP_CONNECT, 322 WLAN_AP_DISCONNECT, 323 WLAN_STA_CONNECT, 324 WLAN_STA_DISCONNECT, 325 WLAN_CLIENT_CONNECT_EX, 326 WLAN_SWITCH_TO_SCC, 327 WLAN_SWITCH_TO_MCC, 328 WLAN_WDI_ENABLE, 329 WLAN_WDI_DISABLE, 330 IPA_WLAN_EVENT_MAX 331 }; 332 enum ipa_wan_event { 333 WAN_UPSTREAM_ROUTE_ADD = IPA_WLAN_EVENT_MAX, 334 WAN_UPSTREAM_ROUTE_DEL, 335 WAN_EMBMS_CONNECT, 336 WAN_XLAT_CONNECT, 337 IPA_WAN_EVENT_MAX 338 }; 339 enum ipa_ecm_event { 340 ECM_CONNECT = IPA_WAN_EVENT_MAX, 341 ECM_DISCONNECT, 342 IPA_ECM_EVENT_MAX, 343 }; 344 enum ipa_tethering_stats_event { 345 IPA_TETHERING_STATS_UPDATE_STATS = IPA_ECM_EVENT_MAX, 346 IPA_TETHERING_STATS_UPDATE_NETWORK_STATS, 347 IPA_TETHERING_STATS_EVENT_MAX, 348 }; 349 enum ipa_quota_event { 350 IPA_QUOTA_REACH = IPA_TETHERING_STATS_EVENT_MAX, 351 IPA_QUOTA_EVENT_MAX, 352 }; 353 enum ipa_ssr_event { 354 IPA_SSR_BEFORE_SHUTDOWN = IPA_QUOTA_EVENT_MAX, 355 IPA_SSR_AFTER_POWERUP, 356 IPA_SSR_EVENT_MAX, 357 }; 358 enum ipa_vlan_l2tp_event { 359 ADD_VLAN_IFACE = IPA_SSR_EVENT_MAX, 360 DEL_VLAN_IFACE, 361 ADD_L2TP_VLAN_MAPPING, 362 DEL_L2TP_VLAN_MAPPING, 363 IPA_VLAN_L2TP_EVENT_MAX, 364 }; 365 enum ipa_per_client_stats_event { 366 IPA_PER_CLIENT_STATS_CONNECT_EVENT = IPA_VLAN_L2TP_EVENT_MAX, 367 IPA_PER_CLIENT_STATS_DISCONNECT_EVENT, 368 IPA_PER_CLIENT_STATS_EVENT_MAX, 369 }; 370 enum ipa_vlan_bridge_event { 371 ADD_BRIDGE_VLAN_MAPPING = IPA_PER_CLIENT_STATS_EVENT_MAX, 372 DEL_BRIDGE_VLAN_MAPPING, 373 BRIDGE_VLAN_MAPPING_MAX, 374 }; 375 enum ipa_wlan_fw_ssr_event { 376 WLAN_FWR_SSR_BEFORE_SHUTDOWN = BRIDGE_VLAN_MAPPING_MAX, 377 IPA_WLAN_FW_SSR_EVENT_MAX, 378 #define IPA_WLAN_FW_SSR_EVENT_MAX IPA_WLAN_FW_SSR_EVENT_MAX 379 }; 380 enum ipa_gsb_event { 381 IPA_GSB_CONNECT = IPA_WLAN_FW_SSR_EVENT_MAX, 382 IPA_GSB_DISCONNECT, 383 IPA_GSB_EVENT_MAX, 384 }; 385 enum ipa_coalesce_event { 386 IPA_COALESCE_ENABLE = IPA_GSB_EVENT_MAX, 387 IPA_COALESCE_DISABLE, 388 IPA_COALESCE_EVENT_MAX 389 #define IPA_COALESCE_EVENT_MAX IPA_COALESCE_EVENT_MAX 390 }; 391 #define WIGIG_CLIENT_CONNECT (IPA_COALESCE_EVENT_MAX) 392 #define WIGIG_FST_SWITCH (WIGIG_CLIENT_CONNECT + 1) 393 #define WIGIG_EVENT_MAX (WIGIG_FST_SWITCH + 1) 394 #define IPA_EVENT_MAX_NUM (WIGIG_EVENT_MAX) 395 #define IPA_EVENT_MAX ((int) IPA_EVENT_MAX_NUM) 396 enum ipa_rm_resource_name { 397 IPA_RM_RESOURCE_Q6_PROD = 0, 398 IPA_RM_RESOURCE_Q6_CONS = 1, 399 IPA_RM_RESOURCE_USB_PROD = 2, 400 IPA_RM_RESOURCE_USB_CONS = 3, 401 IPA_RM_RESOURCE_USB_DPL_DUMMY_PROD = 4, 402 IPA_RM_RESOURCE_USB_DPL_CONS = 5, 403 IPA_RM_RESOURCE_HSIC_PROD = 6, 404 IPA_RM_RESOURCE_HSIC_CONS = 7, 405 IPA_RM_RESOURCE_STD_ECM_PROD = 8, 406 IPA_RM_RESOURCE_APPS_CONS = 9, 407 IPA_RM_RESOURCE_RNDIS_PROD = 10, 408 IPA_RM_RESOURCE_WWAN_0_PROD = 12, 409 IPA_RM_RESOURCE_WLAN_PROD = 14, 410 IPA_RM_RESOURCE_WLAN_CONS = 15, 411 IPA_RM_RESOURCE_ODU_ADAPT_PROD = 16, 412 IPA_RM_RESOURCE_ODU_ADAPT_CONS = 17, 413 IPA_RM_RESOURCE_MHI_PROD = 18, 414 IPA_RM_RESOURCE_MHI_CONS = 19, 415 IPA_RM_RESOURCE_ETHERNET_PROD = 20, 416 IPA_RM_RESOURCE_ETHERNET_CONS = 21, 417 }; 418 #define IPA_RM_RESOURCE_MAX (IPA_RM_RESOURCE_ETHERNET_CONS + 1) 419 enum ipa_hw_type { 420 IPA_HW_None = 0, 421 IPA_HW_v1_0 = 1, 422 IPA_HW_v1_1 = 2, 423 IPA_HW_v2_0 = 3, 424 IPA_HW_v2_1 = 4, 425 IPA_HW_v2_5 = 5, 426 IPA_HW_v2_6 = IPA_HW_v2_5, 427 IPA_HW_v2_6L = 6, 428 IPA_HW_v3_0 = 10, 429 IPA_HW_v3_1 = 11, 430 IPA_HW_v3_5 = 12, 431 IPA_HW_v3_5_1 = 13, 432 IPA_HW_v4_0 = 14, 433 IPA_HW_v4_1 = 15, 434 IPA_HW_v4_2 = 16, 435 IPA_HW_v4_5 = 17, 436 IPA_HW_v4_7 = 18, 437 }; 438 #define IPA_HW_MAX (IPA_HW_v4_7 + 1) 439 #define IPA_HW_v4_0 IPA_HW_v4_0 440 #define IPA_HW_v4_1 IPA_HW_v4_1 441 #define IPA_HW_v4_2 IPA_HW_v4_2 442 #define IPA_HW_v4_5 IPA_HW_v4_5 443 #define IPA_HW_v4_7 IPA_HW_v4_7 444 struct ipa_rule_attrib { 445 uint32_t attrib_mask; 446 uint16_t src_port_lo; 447 uint16_t src_port_hi; 448 uint16_t dst_port_lo; 449 uint16_t dst_port_hi; 450 uint8_t type; 451 uint8_t code; 452 uint8_t tos_value; 453 uint8_t tos_mask; 454 uint32_t spi; 455 uint16_t src_port; 456 uint16_t dst_port; 457 uint32_t meta_data; 458 uint32_t meta_data_mask; 459 uint8_t src_mac_addr[ETH_ALEN]; 460 uint8_t src_mac_addr_mask[ETH_ALEN]; 461 uint8_t dst_mac_addr[ETH_ALEN]; 462 uint8_t dst_mac_addr_mask[ETH_ALEN]; 463 uint16_t ether_type; 464 union { 465 struct { 466 uint8_t tos; 467 uint8_t protocol; 468 uint32_t src_addr; 469 uint32_t src_addr_mask; 470 uint32_t dst_addr; 471 uint32_t dst_addr_mask; 472 } v4; 473 struct { 474 uint8_t tc; 475 uint32_t flow_label; 476 uint8_t next_hdr; 477 uint32_t src_addr[4]; 478 uint32_t src_addr_mask[4]; 479 uint32_t dst_addr[4]; 480 uint32_t dst_addr_mask[4]; 481 } v6; 482 } u; 483 uint16_t vlan_id; 484 }; 485 #define IPA_IPFLTR_NUM_MEQ_32_EQNS 2 486 #define IPA_IPFLTR_NUM_IHL_MEQ_32_EQNS 2 487 #define IPA_IPFLTR_NUM_MEQ_128_EQNS 2 488 #define IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS 2 489 struct ipa_ipfltr_eq_16 { 490 int8_t offset; 491 uint16_t value; 492 }; 493 struct ipa_ipfltr_eq_32 { 494 int8_t offset; 495 uint32_t value; 496 }; 497 struct ipa_ipfltr_mask_eq_128 { 498 int8_t offset; 499 uint8_t mask[16]; 500 uint8_t value[16]; 501 }; 502 struct ipa_ipfltr_mask_eq_32 { 503 int8_t offset; 504 uint32_t mask; 505 uint32_t value; 506 }; 507 struct ipa_ipfltr_range_eq_16 { 508 int8_t offset; 509 uint16_t range_low; 510 uint16_t range_high; 511 }; 512 struct ipa_ipfltri_rule_eq { 513 uint16_t rule_eq_bitmap; 514 uint8_t tos_eq_present; 515 uint8_t tos_eq; 516 uint8_t protocol_eq_present; 517 uint8_t protocol_eq; 518 uint8_t num_ihl_offset_range_16; 519 struct ipa_ipfltr_range_eq_16 ihl_offset_range_16[IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS]; 520 uint8_t num_offset_meq_32; 521 struct ipa_ipfltr_mask_eq_32 offset_meq_32[IPA_IPFLTR_NUM_MEQ_32_EQNS]; 522 uint8_t tc_eq_present; 523 uint8_t tc_eq; 524 uint8_t fl_eq_present; 525 uint32_t fl_eq; 526 uint8_t ihl_offset_eq_16_present; 527 struct ipa_ipfltr_eq_16 ihl_offset_eq_16; 528 uint8_t ihl_offset_eq_32_present; 529 struct ipa_ipfltr_eq_32 ihl_offset_eq_32; 530 uint8_t num_ihl_offset_meq_32; 531 struct ipa_ipfltr_mask_eq_32 ihl_offset_meq_32[IPA_IPFLTR_NUM_IHL_MEQ_32_EQNS]; 532 uint8_t num_offset_meq_128; 533 struct ipa_ipfltr_mask_eq_128 offset_meq_128[IPA_IPFLTR_NUM_MEQ_128_EQNS]; 534 uint8_t metadata_meq32_present; 535 struct ipa_ipfltr_mask_eq_32 metadata_meq32; 536 uint8_t ipv4_frag_eq_present; 537 }; 538 struct ipa_flt_rule { 539 uint8_t retain_hdr; 540 uint8_t to_uc; 541 enum ipa_flt_action action; 542 uint32_t rt_tbl_hdl; 543 struct ipa_rule_attrib attrib; 544 struct ipa_ipfltri_rule_eq eq_attrib; 545 uint32_t rt_tbl_idx; 546 uint8_t eq_attrib_type; 547 uint8_t max_prio; 548 uint8_t hashable; 549 uint16_t rule_id; 550 uint8_t set_metadata; 551 uint8_t pdn_idx; 552 }; 553 struct ipa_flt_rule_v2 { 554 uint8_t retain_hdr; 555 uint8_t to_uc; 556 enum ipa_flt_action action; 557 uint32_t rt_tbl_hdl; 558 struct ipa_rule_attrib attrib; 559 struct ipa_ipfltri_rule_eq eq_attrib; 560 uint32_t rt_tbl_idx; 561 uint8_t eq_attrib_type; 562 uint8_t max_prio; 563 uint8_t hashable; 564 uint16_t rule_id; 565 uint8_t set_metadata; 566 uint8_t pdn_idx; 567 uint8_t enable_stats; 568 uint8_t cnt_idx; 569 }; 570 enum ipa_hdr_l2_type { 571 IPA_HDR_L2_NONE, 572 IPA_HDR_L2_ETHERNET_II, 573 IPA_HDR_L2_802_3, 574 IPA_HDR_L2_802_1Q, 575 }; 576 #define IPA_HDR_L2_MAX (IPA_HDR_L2_802_1Q + 1) 577 #define IPA_HDR_L2_802_1Q IPA_HDR_L2_802_1Q 578 enum ipa_hdr_proc_type { 579 IPA_HDR_PROC_NONE, 580 IPA_HDR_PROC_ETHII_TO_ETHII, 581 IPA_HDR_PROC_ETHII_TO_802_3, 582 IPA_HDR_PROC_802_3_TO_ETHII, 583 IPA_HDR_PROC_802_3_TO_802_3, 584 IPA_HDR_PROC_L2TP_HEADER_ADD, 585 IPA_HDR_PROC_L2TP_HEADER_REMOVE, 586 IPA_HDR_PROC_ETHII_TO_ETHII_EX 587 }; 588 #define IPA_HDR_PROC_MAX (IPA_HDR_PROC_ETHII_TO_ETHII_EX + 1) 589 struct ipa_rt_rule { 590 enum ipa_client_type dst; 591 uint32_t hdr_hdl; 592 uint32_t hdr_proc_ctx_hdl; 593 struct ipa_rule_attrib attrib; 594 uint8_t max_prio; 595 uint8_t hashable; 596 uint8_t retain_hdr; 597 uint8_t coalesce; 598 }; 599 #define IPA_RT_SUPPORT_COAL 600 struct ipa_rt_rule_v2 { 601 enum ipa_client_type dst; 602 uint32_t hdr_hdl; 603 uint32_t hdr_proc_ctx_hdl; 604 struct ipa_rule_attrib attrib; 605 uint8_t max_prio; 606 uint8_t hashable; 607 uint8_t retain_hdr; 608 uint8_t coalesce; 609 uint8_t enable_stats; 610 uint8_t cnt_idx; 611 }; 612 struct ipa_hdr_add { 613 char name[IPA_RESOURCE_NAME_MAX]; 614 uint8_t hdr[IPA_HDR_MAX_SIZE]; 615 uint8_t hdr_len; 616 enum ipa_hdr_l2_type type; 617 uint8_t is_partial; 618 uint32_t hdr_hdl; 619 int status; 620 uint8_t is_eth2_ofst_valid; 621 uint16_t eth2_ofst; 622 }; 623 struct ipa_ioc_add_hdr { 624 uint8_t commit; 625 uint8_t num_hdrs; 626 struct ipa_hdr_add hdr[0]; 627 }; 628 struct ipa_l2tp_header_add_procparams { 629 uint32_t eth_hdr_retained : 1; 630 uint32_t input_ip_version : 1; 631 uint32_t output_ip_version : 1; 632 uint32_t reserved : 29; 633 }; 634 struct ipa_l2tp_header_remove_procparams { 635 uint32_t hdr_len_remove : 8; 636 uint32_t eth_hdr_retained : 1; 637 uint32_t hdr_ofst_pkt_size_valid : 1; 638 uint32_t hdr_ofst_pkt_size : 6; 639 uint32_t hdr_endianness : 1; 640 uint32_t reserved : 15; 641 }; 642 struct ipa_l2tp_hdr_proc_ctx_params { 643 struct ipa_l2tp_header_add_procparams hdr_add_param; 644 struct ipa_l2tp_header_remove_procparams hdr_remove_param; 645 uint8_t is_dst_pipe_valid; 646 enum ipa_client_type dst_pipe; 647 }; 648 struct ipa_eth_II_to_eth_II_ex_procparams { 649 uint32_t input_ethhdr_negative_offset : 8; 650 uint32_t output_ethhdr_negative_offset : 8; 651 uint32_t reserved : 16; 652 }; 653 #define L2TP_USER_SPACE_SPECIFY_DST_PIPE 654 struct ipa_hdr_proc_ctx_add { 655 enum ipa_hdr_proc_type type; 656 uint32_t hdr_hdl; 657 uint32_t proc_ctx_hdl; 658 int status; 659 struct ipa_l2tp_hdr_proc_ctx_params l2tp_params; 660 struct ipa_eth_II_to_eth_II_ex_procparams generic_params; 661 }; 662 #define IPA_L2TP_HDR_PROC_SUPPORT 663 struct ipa_ioc_add_hdr_proc_ctx { 664 uint8_t commit; 665 uint8_t num_proc_ctxs; 666 struct ipa_hdr_proc_ctx_add proc_ctx[0]; 667 }; 668 struct ipa_ioc_copy_hdr { 669 char name[IPA_RESOURCE_NAME_MAX]; 670 uint8_t hdr[IPA_HDR_MAX_SIZE]; 671 uint8_t hdr_len; 672 enum ipa_hdr_l2_type type; 673 uint8_t is_partial; 674 uint8_t is_eth2_ofst_valid; 675 uint16_t eth2_ofst; 676 }; 677 struct ipa_ioc_get_hdr { 678 char name[IPA_RESOURCE_NAME_MAX]; 679 uint32_t hdl; 680 }; 681 struct ipa_hdr_del { 682 uint32_t hdl; 683 int status; 684 }; 685 struct ipa_ioc_del_hdr { 686 uint8_t commit; 687 uint8_t num_hdls; 688 struct ipa_hdr_del hdl[0]; 689 }; 690 struct ipa_hdr_proc_ctx_del { 691 uint32_t hdl; 692 int status; 693 }; 694 struct ipa_ioc_del_hdr_proc_ctx { 695 uint8_t commit; 696 uint8_t num_hdls; 697 struct ipa_hdr_proc_ctx_del hdl[0]; 698 }; 699 struct ipa_rt_rule_add { 700 struct ipa_rt_rule rule; 701 uint8_t at_rear; 702 uint32_t rt_rule_hdl; 703 int status; 704 }; 705 struct ipa_rt_rule_add_v2 { 706 uint8_t at_rear; 707 uint32_t rt_rule_hdl; 708 int status; 709 struct ipa_rt_rule_v2 rule; 710 }; 711 struct ipa_ioc_add_rt_rule { 712 uint8_t commit; 713 enum ipa_ip_type ip; 714 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 715 uint8_t num_rules; 716 struct ipa_rt_rule_add rules[0]; 717 }; 718 struct ipa_ioc_add_rt_rule_v2 { 719 uint8_t commit; 720 enum ipa_ip_type ip; 721 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 722 uint8_t num_rules; 723 uint32_t rule_add_size; 724 uint32_t reserved1; 725 uint8_t reserved2; 726 uint64_t rules; 727 }; 728 struct ipa_ioc_add_rt_rule_after { 729 uint8_t commit; 730 enum ipa_ip_type ip; 731 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 732 uint8_t num_rules; 733 uint32_t add_after_hdl; 734 struct ipa_rt_rule_add rules[0]; 735 }; 736 struct ipa_ioc_add_rt_rule_after_v2 { 737 uint8_t commit; 738 enum ipa_ip_type ip; 739 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 740 uint8_t num_rules; 741 uint32_t add_after_hdl; 742 uint32_t rule_add_size; 743 uint8_t reserved; 744 uint64_t rules; 745 }; 746 struct ipa_rt_rule_mdfy { 747 struct ipa_rt_rule rule; 748 uint32_t rt_rule_hdl; 749 int status; 750 }; 751 struct ipa_rt_rule_mdfy_v2 { 752 uint32_t rt_rule_hdl; 753 int status; 754 struct ipa_rt_rule_v2 rule; 755 }; 756 struct ipa_ioc_mdfy_rt_rule { 757 uint8_t commit; 758 enum ipa_ip_type ip; 759 uint8_t num_rules; 760 struct ipa_rt_rule_mdfy rules[0]; 761 }; 762 struct ipa_ioc_mdfy_rt_rule_v2 { 763 uint8_t commit; 764 enum ipa_ip_type ip; 765 uint8_t num_rules; 766 uint32_t rule_mdfy_size; 767 uint8_t reserved; 768 uint64_t rules; 769 }; 770 struct ipa_rt_rule_del { 771 uint32_t hdl; 772 int status; 773 }; 774 struct ipa_rt_rule_add_ext { 775 struct ipa_rt_rule rule; 776 uint8_t at_rear; 777 uint32_t rt_rule_hdl; 778 int status; 779 uint16_t rule_id; 780 }; 781 struct ipa_rt_rule_add_ext_v2 { 782 uint8_t at_rear; 783 uint32_t rt_rule_hdl; 784 int status; 785 uint16_t rule_id; 786 struct ipa_rt_rule_v2 rule; 787 }; 788 struct ipa_ioc_add_rt_rule_ext { 789 uint8_t commit; 790 enum ipa_ip_type ip; 791 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 792 uint8_t num_rules; 793 struct ipa_rt_rule_add_ext rules[0]; 794 }; 795 struct ipa_ioc_add_rt_rule_ext_v2 { 796 uint8_t commit; 797 enum ipa_ip_type ip; 798 char rt_tbl_name[IPA_RESOURCE_NAME_MAX]; 799 uint8_t num_rules; 800 uint32_t rule_add_ext_size; 801 uint32_t reserved1; 802 uint8_t reserved2; 803 uint64_t rules; 804 }; 805 struct ipa_ioc_del_rt_rule { 806 uint8_t commit; 807 enum ipa_ip_type ip; 808 uint8_t num_hdls; 809 struct ipa_rt_rule_del hdl[0]; 810 }; 811 struct ipa_ioc_get_rt_tbl_indx { 812 enum ipa_ip_type ip; 813 char name[IPA_RESOURCE_NAME_MAX]; 814 uint32_t idx; 815 }; 816 struct ipa_flt_rule_add { 817 struct ipa_flt_rule rule; 818 uint8_t at_rear; 819 uint32_t flt_rule_hdl; 820 int status; 821 }; 822 struct ipa_flt_rule_add_v2 { 823 uint8_t at_rear; 824 uint32_t flt_rule_hdl; 825 int status; 826 struct ipa_flt_rule_v2 rule; 827 }; 828 struct ipa_ioc_add_flt_rule { 829 uint8_t commit; 830 enum ipa_ip_type ip; 831 enum ipa_client_type ep; 832 uint8_t global; 833 uint8_t num_rules; 834 struct ipa_flt_rule_add rules[0]; 835 }; 836 struct ipa_ioc_add_flt_rule_v2 { 837 uint8_t commit; 838 enum ipa_ip_type ip; 839 enum ipa_client_type ep; 840 uint8_t global; 841 uint8_t num_rules; 842 uint32_t flt_rule_size; 843 uint32_t reserved1; 844 uint16_t reserved2; 845 uint8_t reserved3; 846 uint64_t rules; 847 }; 848 struct ipa_ioc_add_flt_rule_after { 849 uint8_t commit; 850 enum ipa_ip_type ip; 851 enum ipa_client_type ep; 852 uint8_t num_rules; 853 uint32_t add_after_hdl; 854 struct ipa_flt_rule_add rules[0]; 855 }; 856 struct ipa_ioc_add_flt_rule_after_v2 { 857 uint8_t commit; 858 enum ipa_ip_type ip; 859 enum ipa_client_type ep; 860 uint8_t num_rules; 861 uint32_t add_after_hdl; 862 uint32_t flt_rule_size; 863 uint32_t reserved; 864 uint64_t rules; 865 }; 866 struct ipa_flt_rule_mdfy { 867 struct ipa_flt_rule rule; 868 uint32_t rule_hdl; 869 int status; 870 }; 871 struct ipa_flt_rule_mdfy_v2 { 872 uint32_t rule_hdl; 873 int status; 874 struct ipa_flt_rule_v2 rule; 875 }; 876 struct ipa_ioc_mdfy_flt_rule { 877 uint8_t commit; 878 enum ipa_ip_type ip; 879 uint8_t num_rules; 880 struct ipa_flt_rule_mdfy rules[0]; 881 }; 882 struct ipa_ioc_mdfy_flt_rule_v2 { 883 uint8_t commit; 884 enum ipa_ip_type ip; 885 uint8_t num_rules; 886 uint32_t rule_mdfy_size; 887 uint8_t reserved; 888 uint64_t rules; 889 }; 890 struct ipa_flt_rule_del { 891 uint32_t hdl; 892 int status; 893 }; 894 struct ipa_ioc_del_flt_rule { 895 uint8_t commit; 896 enum ipa_ip_type ip; 897 uint8_t num_hdls; 898 struct ipa_flt_rule_del hdl[0]; 899 }; 900 struct ipa_ioc_get_rt_tbl { 901 enum ipa_ip_type ip; 902 char name[IPA_RESOURCE_NAME_MAX]; 903 uint32_t hdl; 904 }; 905 struct ipa_ioc_query_intf { 906 char name[IPA_RESOURCE_NAME_MAX]; 907 uint32_t num_tx_props; 908 uint32_t num_rx_props; 909 uint32_t num_ext_props; 910 enum ipa_client_type excp_pipe; 911 }; 912 struct ipa_ioc_tx_intf_prop { 913 enum ipa_ip_type ip; 914 struct ipa_rule_attrib attrib; 915 enum ipa_client_type dst_pipe; 916 enum ipa_client_type alt_dst_pipe; 917 char hdr_name[IPA_RESOURCE_NAME_MAX]; 918 enum ipa_hdr_l2_type hdr_l2_type; 919 }; 920 struct ipa_ioc_query_intf_tx_props { 921 char name[IPA_RESOURCE_NAME_MAX]; 922 uint32_t num_tx_props; 923 struct ipa_ioc_tx_intf_prop tx[0]; 924 }; 925 struct ipa_ioc_ext_intf_prop { 926 enum ipa_ip_type ip; 927 struct ipa_ipfltri_rule_eq eq_attrib; 928 enum ipa_flt_action action; 929 uint32_t rt_tbl_idx; 930 uint8_t mux_id; 931 uint32_t filter_hdl; 932 uint8_t is_xlat_rule; 933 uint32_t rule_id; 934 uint8_t is_rule_hashable; 935 #define IPA_V6_UL_WL_FIREWALL_HANDLE 936 uint8_t replicate_needed; 937 }; 938 struct ipa_ioc_query_intf_ext_props { 939 char name[IPA_RESOURCE_NAME_MAX]; 940 uint32_t num_ext_props; 941 struct ipa_ioc_ext_intf_prop ext[0]; 942 }; 943 struct ipa_ioc_rx_intf_prop { 944 enum ipa_ip_type ip; 945 struct ipa_rule_attrib attrib; 946 enum ipa_client_type src_pipe; 947 enum ipa_hdr_l2_type hdr_l2_type; 948 }; 949 struct ipa_ioc_query_intf_rx_props { 950 char name[IPA_RESOURCE_NAME_MAX]; 951 uint32_t num_rx_props; 952 struct ipa_ioc_rx_intf_prop rx[0]; 953 }; 954 struct ipa_ioc_nat_alloc_mem { 955 char dev_name[IPA_RESOURCE_NAME_MAX]; 956 size_t size; 957 off_t offset; 958 }; 959 struct ipa_ioc_nat_ipv6ct_table_alloc { 960 size_t size; 961 off_t offset; 962 }; 963 struct ipa_ioc_v4_nat_init { 964 uint8_t tbl_index; 965 uint32_t ipv4_rules_offset; 966 uint32_t expn_rules_offset; 967 uint32_t index_offset; 968 uint32_t index_expn_offset; 969 uint16_t table_entries; 970 uint16_t expn_table_entries; 971 uint32_t ip_addr; 972 uint8_t mem_type; 973 uint8_t focus_change; 974 }; 975 struct ipa_ioc_ipv6ct_init { 976 uint32_t base_table_offset; 977 uint32_t expn_table_offset; 978 uint16_t table_entries; 979 uint16_t expn_table_entries; 980 uint8_t tbl_index; 981 }; 982 struct ipa_ioc_v4_nat_del { 983 uint8_t table_index; 984 uint32_t public_ip_addr; 985 }; 986 struct ipa_ioc_nat_ipv6ct_table_del { 987 uint8_t table_index; 988 uint8_t mem_type; 989 }; 990 struct ipa_ioc_nat_dma_one { 991 uint8_t table_index; 992 uint8_t base_addr; 993 uint32_t offset; 994 uint16_t data; 995 }; 996 struct ipa_ioc_nat_dma_cmd { 997 uint8_t entries; 998 uint8_t mem_type; 999 struct ipa_ioc_nat_dma_one dma[0]; 1000 }; 1001 struct ipa_ioc_nat_pdn_entry { 1002 uint8_t pdn_index; 1003 uint32_t public_ip; 1004 uint32_t src_metadata; 1005 uint32_t dst_metadata; 1006 }; 1007 struct ipa_ioc_vlan_iface_info { 1008 char name[IPA_RESOURCE_NAME_MAX]; 1009 uint8_t vlan_id; 1010 }; 1011 struct ipa_ioc_l2tp_vlan_mapping_info { 1012 enum ipa_ip_type iptype; 1013 char l2tp_iface_name[IPA_RESOURCE_NAME_MAX]; 1014 uint8_t l2tp_session_id; 1015 char vlan_iface_name[IPA_RESOURCE_NAME_MAX]; 1016 }; 1017 struct ipa_ioc_gsb_info { 1018 char name[IPA_RESOURCE_NAME_MAX]; 1019 }; 1020 struct ipa_ioc_wigig_fst_switch { 1021 uint8_t netdev_name[IPA_RESOURCE_NAME_MAX]; 1022 uint8_t client_mac_addr[IPA_MAC_ADDR_SIZE]; 1023 int to_wigig; 1024 }; 1025 struct ipa_msg_meta { 1026 uint8_t msg_type; 1027 uint8_t rsvd; 1028 uint16_t msg_len; 1029 }; 1030 struct ipa_wlan_msg { 1031 char name[IPA_RESOURCE_NAME_MAX]; 1032 uint8_t mac_addr[IPA_MAC_ADDR_SIZE]; 1033 }; 1034 enum ipa_wlan_hdr_attrib_type { 1035 WLAN_HDR_ATTRIB_MAC_ADDR, 1036 WLAN_HDR_ATTRIB_STA_ID 1037 }; 1038 struct ipa_wlan_hdr_attrib_val { 1039 enum ipa_wlan_hdr_attrib_type attrib_type; 1040 uint8_t offset; 1041 union { 1042 uint8_t mac_addr[IPA_MAC_ADDR_SIZE]; 1043 uint8_t sta_id; 1044 } u; 1045 }; 1046 struct ipa_wlan_msg_ex { 1047 char name[IPA_RESOURCE_NAME_MAX]; 1048 uint8_t num_of_attribs; 1049 struct ipa_wlan_hdr_attrib_val attribs[0]; 1050 }; 1051 struct ipa_wigig_msg { 1052 char name[IPA_RESOURCE_NAME_MAX]; 1053 uint8_t client_mac_addr[IPA_MAC_ADDR_SIZE]; 1054 union { 1055 enum ipa_client_type ipa_client; 1056 uint8_t to_wigig; 1057 } u; 1058 }; 1059 struct ipa_ecm_msg { 1060 char name[IPA_RESOURCE_NAME_MAX]; 1061 int ifindex; 1062 }; 1063 struct ipa_wan_msg { 1064 char upstream_ifname[IPA_RESOURCE_NAME_MAX]; 1065 char tethered_ifname[IPA_RESOURCE_NAME_MAX]; 1066 enum ipa_ip_type ip; 1067 uint32_t ipv4_addr_gw; 1068 uint32_t ipv6_addr_gw[IPA_WAN_MSG_IPv6_ADDR_GW_LEN]; 1069 }; 1070 struct ipa_ioc_rm_dependency { 1071 enum ipa_rm_resource_name resource_name; 1072 enum ipa_rm_resource_name depends_on_name; 1073 }; 1074 struct ipa_ioc_generate_flt_eq { 1075 enum ipa_ip_type ip; 1076 struct ipa_rule_attrib attrib; 1077 struct ipa_ipfltri_rule_eq eq_attrib; 1078 }; 1079 struct ipa_ioc_write_qmapid { 1080 enum ipa_client_type client; 1081 uint8_t qmap_id; 1082 }; 1083 struct ipa_flt_rt_counter_alloc { 1084 uint8_t num_counters; 1085 uint8_t allow_less; 1086 uint8_t start_id; 1087 uint8_t end_id; 1088 }; 1089 struct ipa_ioc_flt_rt_counter_alloc { 1090 int hdl; 1091 struct ipa_flt_rt_counter_alloc hw_counter; 1092 struct ipa_flt_rt_counter_alloc sw_counter; 1093 }; 1094 struct ipa_flt_rt_stats { 1095 uint32_t num_pkts; 1096 uint32_t num_pkts_hash; 1097 uint64_t num_bytes; 1098 }; 1099 struct ipa_ioc_flt_rt_query { 1100 uint8_t start_id; 1101 uint8_t end_id; 1102 uint8_t reset; 1103 uint32_t stats_size; 1104 uint8_t reserved; 1105 uint64_t stats; 1106 }; 1107 enum ipacm_client_enum { 1108 IPACM_CLIENT_USB = 1, 1109 IPACM_CLIENT_WLAN, 1110 IPACM_CLIENT_MAX 1111 }; 1112 #define IPACM_SUPPORT_OF_LAN_STATS_FOR_ODU_CLIENTS 1113 enum ipacm_per_client_device_type { 1114 IPACM_CLIENT_DEVICE_TYPE_USB = 0, 1115 IPACM_CLIENT_DEVICE_TYPE_WLAN = 1, 1116 IPACM_CLIENT_DEVICE_TYPE_ETH = 2, 1117 IPACM_CLIENT_DEVICE_TYPE_ODU = 3, 1118 IPACM_CLIENT_DEVICE_MAX 1119 }; 1120 #define IPACM_MAX_CLIENT_DEVICE_TYPES IPACM_CLIENT_DEVICE_MAX 1121 struct ipa_lan_client_msg { 1122 char lanIface[IPA_RESOURCE_NAME_MAX]; 1123 uint8_t mac[IPA_MAC_ADDR_SIZE]; 1124 }; 1125 struct ipa_lan_client { 1126 uint8_t mac[IPA_MAC_ADDR_SIZE]; 1127 int8_t client_idx; 1128 uint8_t inited; 1129 }; 1130 struct ipa_tether_device_info { 1131 int32_t ul_src_pipe; 1132 uint8_t hdr_len; 1133 uint32_t num_clients; 1134 struct ipa_lan_client lan_client[IPA_MAX_NUM_HW_PATH_CLIENTS]; 1135 }; 1136 enum ipa_vlan_ifaces { 1137 IPA_VLAN_IF_ETH, 1138 IPA_VLAN_IF_RNDIS, 1139 IPA_VLAN_IF_ECM 1140 }; 1141 #define IPA_VLAN_IF_EMAC IPA_VLAN_IF_ETH 1142 #define IPA_VLAN_IF_MAX (IPA_VLAN_IF_ECM + 1) 1143 struct ipa_ioc_get_vlan_mode { 1144 enum ipa_vlan_ifaces iface; 1145 uint32_t is_vlan_mode; 1146 }; 1147 struct ipa_ioc_bridge_vlan_mapping_info { 1148 char bridge_name[IPA_RESOURCE_NAME_MAX]; 1149 uint16_t vlan_id; 1150 uint32_t bridge_ipv4; 1151 uint32_t subnet_mask; 1152 }; 1153 struct ipa_coalesce_info { 1154 uint8_t qmap_id; 1155 uint8_t tcp_enable; 1156 uint8_t udp_enable; 1157 }; 1158 struct ipa_odl_ep_info { 1159 __u32 cons_pipe_num; 1160 __u32 prod_pipe_num; 1161 __u32 peripheral_iface_id; 1162 __u32 ep_type; 1163 }; 1164 struct odl_agg_pipe_info { 1165 __u16 agg_byte_limit; 1166 }; 1167 struct ipa_odl_modem_config { 1168 __u8 config_status; 1169 }; 1170 struct ipa_ioc_fnr_index_info { 1171 uint8_t hw_counter_offset; 1172 uint8_t sw_counter_offset; 1173 }; 1174 enum ipacm_hw_index_counter_type { 1175 UL_HW = 0, 1176 DL_HW, 1177 DL_ALL, 1178 UL_ALL, 1179 }; 1180 enum ipacm_hw_index_counter_virtual_type { 1181 UL_HW_CACHE = 0, 1182 DL_HW_CACHE, 1183 UL_WLAN_TX, 1184 DL_WLAN_TX 1185 }; 1186 #define IPA_IOC_ADD_HDR _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_HDR, struct ipa_ioc_add_hdr *) 1187 #define IPA_IOC_DEL_HDR _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_HDR, struct ipa_ioc_del_hdr *) 1188 #define IPA_IOC_ADD_RT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE, struct ipa_ioc_add_rt_rule *) 1189 #define IPA_IOC_ADD_RT_RULE_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE_V2, struct ipa_ioc_add_rt_rule_v2 *) 1190 #define IPA_IOC_ADD_RT_RULE_EXT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE_EXT, struct ipa_ioc_add_rt_rule_ext *) 1191 #define IPA_IOC_ADD_RT_RULE_EXT_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE_EXT_V2, struct ipa_ioc_add_rt_rule_ext_v2 *) 1192 #define IPA_IOC_ADD_RT_RULE_AFTER _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE_AFTER, struct ipa_ioc_add_rt_rule_after *) 1193 #define IPA_IOC_ADD_RT_RULE_AFTER_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_RT_RULE_AFTER_V2, struct ipa_ioc_add_rt_rule_after_v2 *) 1194 #define IPA_IOC_DEL_RT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_RT_RULE, struct ipa_ioc_del_rt_rule *) 1195 #define IPA_IOC_ADD_FLT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_FLT_RULE, struct ipa_ioc_add_flt_rule *) 1196 #define IPA_IOC_ADD_FLT_RULE_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_FLT_RULE_V2, struct ipa_ioc_add_flt_rule_v2 *) 1197 #define IPA_IOC_ADD_FLT_RULE_AFTER _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_FLT_RULE_AFTER, struct ipa_ioc_add_flt_rule_after *) 1198 #define IPA_IOC_ADD_FLT_RULE_AFTER_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_FLT_RULE_AFTER_V2, struct ipa_ioc_add_flt_rule_after_v2 *) 1199 #define IPA_IOC_DEL_FLT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_FLT_RULE, struct ipa_ioc_del_flt_rule *) 1200 #define IPA_IOC_COMMIT_HDR _IO(IPA_IOC_MAGIC, IPA_IOCTL_COMMIT_HDR) 1201 #define IPA_IOC_RESET_HDR _IO(IPA_IOC_MAGIC, IPA_IOCTL_RESET_HDR) 1202 #define IPA_IOC_COMMIT_RT _IOW(IPA_IOC_MAGIC, IPA_IOCTL_COMMIT_RT, enum ipa_ip_type) 1203 #define IPA_IOC_RESET_RT _IOW(IPA_IOC_MAGIC, IPA_IOCTL_RESET_RT, enum ipa_ip_type) 1204 #define IPA_IOC_COMMIT_FLT _IOW(IPA_IOC_MAGIC, IPA_IOCTL_COMMIT_FLT, enum ipa_ip_type) 1205 #define IPA_IOC_RESET_FLT _IOW(IPA_IOC_MAGIC, IPA_IOCTL_RESET_FLT, enum ipa_ip_type) 1206 #define IPA_IOC_DUMP _IO(IPA_IOC_MAGIC, IPA_IOCTL_DUMP) 1207 #define IPA_IOC_GET_RT_TBL _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_RT_TBL, struct ipa_ioc_get_rt_tbl *) 1208 #define IPA_IOC_PUT_RT_TBL _IOW(IPA_IOC_MAGIC, IPA_IOCTL_PUT_RT_TBL, uint32_t) 1209 #define IPA_IOC_COPY_HDR _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_COPY_HDR, struct ipa_ioc_copy_hdr *) 1210 #define IPA_IOC_QUERY_INTF _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_INTF, struct ipa_ioc_query_intf *) 1211 #define IPA_IOC_QUERY_INTF_TX_PROPS _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_INTF_TX_PROPS, struct ipa_ioc_query_intf_tx_props *) 1212 #define IPA_IOC_QUERY_INTF_RX_PROPS _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_INTF_RX_PROPS, struct ipa_ioc_query_intf_rx_props *) 1213 #define IPA_IOC_QUERY_INTF_EXT_PROPS _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_INTF_EXT_PROPS, struct ipa_ioc_query_intf_ext_props *) 1214 #define IPA_IOC_GET_HDR _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_HDR, struct ipa_ioc_get_hdr *) 1215 #define IPA_IOC_PUT_HDR _IOW(IPA_IOC_MAGIC, IPA_IOCTL_PUT_HDR, uint32_t) 1216 #define IPA_IOC_ALLOC_NAT_MEM _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ALLOC_NAT_MEM, struct ipa_ioc_nat_alloc_mem *) 1217 #define IPA_IOC_ALLOC_NAT_TABLE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ALLOC_NAT_TABLE, struct ipa_ioc_nat_ipv6ct_table_alloc *) 1218 #define IPA_IOC_ALLOC_IPV6CT_TABLE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ALLOC_IPV6CT_TABLE, struct ipa_ioc_nat_ipv6ct_table_alloc *) 1219 #define IPA_IOC_V4_INIT_NAT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_V4_INIT_NAT, struct ipa_ioc_v4_nat_init *) 1220 #define IPA_IOC_INIT_IPV6CT_TABLE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_INIT_IPV6CT_TABLE, struct ipa_ioc_ipv6ct_init *) 1221 #define IPA_IOC_NAT_DMA _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_NAT_DMA, struct ipa_ioc_nat_dma_cmd *) 1222 #define IPA_IOC_TABLE_DMA_CMD _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_TABLE_DMA_CMD, struct ipa_ioc_nat_dma_cmd *) 1223 #define IPA_IOC_V4_DEL_NAT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_V4_DEL_NAT, struct ipa_ioc_v4_nat_del *) 1224 #define IPA_IOC_DEL_NAT_TABLE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_NAT_TABLE, struct ipa_ioc_nat_ipv6ct_table_del *) 1225 #define IPA_IOC_DEL_IPV6CT_TABLE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_IPV6CT_TABLE, struct ipa_ioc_nat_ipv6ct_table_del *) 1226 #define IPA_IOC_GET_NAT_OFFSET _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_NAT_OFFSET, uint32_t *) 1227 #define IPA_IOC_NAT_MODIFY_PDN _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_NAT_MODIFY_PDN, struct ipa_ioc_nat_pdn_entry *) 1228 #define IPA_IOC_SET_FLT _IOW(IPA_IOC_MAGIC, IPA_IOCTL_SET_FLT, uint32_t) 1229 #define IPA_IOC_PULL_MSG _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_PULL_MSG, struct ipa_msg_meta *) 1230 #define IPA_IOC_RM_ADD_DEPENDENCY _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_RM_ADD_DEPENDENCY, struct ipa_ioc_rm_dependency *) 1231 #define IPA_IOC_RM_DEL_DEPENDENCY _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_RM_DEL_DEPENDENCY, struct ipa_ioc_rm_dependency *) 1232 #define IPA_IOC_GENERATE_FLT_EQ _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GENERATE_FLT_EQ, struct ipa_ioc_generate_flt_eq *) 1233 #define IPA_IOC_QUERY_EP_MAPPING _IOR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_EP_MAPPING, uint32_t) 1234 #define IPA_IOC_QUERY_RT_TBL_INDEX _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_RT_TBL_INDEX, struct ipa_ioc_get_rt_tbl_indx *) 1235 #define IPA_IOC_WRITE_QMAPID _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_WRITE_QMAPID, struct ipa_ioc_write_qmapid *) 1236 #define IPA_IOC_MDFY_FLT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_MDFY_FLT_RULE, struct ipa_ioc_mdfy_flt_rule *) 1237 #define IPA_IOC_MDFY_FLT_RULE_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_MDFY_FLT_RULE_V2, struct ipa_ioc_mdfy_flt_rule_v2 *) 1238 #define IPA_IOC_MDFY_RT_RULE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_MDFY_RT_RULE, struct ipa_ioc_mdfy_rt_rule *) 1239 #define IPA_IOC_MDFY_RT_RULE_V2 _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_MDFY_RT_RULE_V2, struct ipa_ioc_mdfy_rt_rule_v2 *) 1240 #define IPA_IOC_NOTIFY_WAN_UPSTREAM_ROUTE_ADD _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_NOTIFY_WAN_UPSTREAM_ROUTE_ADD, struct ipa_wan_msg *) 1241 #define IPA_IOC_NOTIFY_WAN_UPSTREAM_ROUTE_DEL _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_NOTIFY_WAN_UPSTREAM_ROUTE_DEL, struct ipa_wan_msg *) 1242 #define IPA_IOC_NOTIFY_WAN_EMBMS_CONNECTED _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_NOTIFY_WAN_EMBMS_CONNECTED, struct ipa_wan_msg *) 1243 #define IPA_IOC_ADD_HDR_PROC_CTX _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_HDR_PROC_CTX, struct ipa_ioc_add_hdr_proc_ctx *) 1244 #define IPA_IOC_DEL_HDR_PROC_CTX _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_HDR_PROC_CTX, struct ipa_ioc_del_hdr_proc_ctx *) 1245 #define IPA_IOC_GET_HW_VERSION _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_HW_VERSION, enum ipa_hw_type *) 1246 #define IPA_IOC_ADD_VLAN_IFACE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_VLAN_IFACE, struct ipa_ioc_vlan_iface_info *) 1247 #define IPA_IOC_DEL_VLAN_IFACE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_VLAN_IFACE, struct ipa_ioc_vlan_iface_info *) 1248 #define IPA_IOC_ADD_L2TP_VLAN_MAPPING _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_L2TP_VLAN_MAPPING, struct ipa_ioc_l2tp_vlan_mapping_info *) 1249 #define IPA_IOC_DEL_L2TP_VLAN_MAPPING _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_L2TP_VLAN_MAPPING, struct ipa_ioc_l2tp_vlan_mapping_info *) 1250 #define IPA_IOC_GET_VLAN_MODE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_VLAN_MODE, struct ipa_ioc_get_vlan_mode *) 1251 #define IPA_IOC_ADD_BRIDGE_VLAN_MAPPING _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ADD_BRIDGE_VLAN_MAPPING, struct ipa_ioc_bridge_vlan_mapping_info) 1252 #define IPA_IOC_DEL_BRIDGE_VLAN_MAPPING _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_DEL_BRIDGE_VLAN_MAPPING, struct ipa_ioc_bridge_vlan_mapping_info) 1253 #define IPA_IOC_CLEANUP _IO(IPA_IOC_MAGIC, IPA_IOCTL_CLEANUP) 1254 #define IPA_IOC_QUERY_WLAN_CLIENT _IO(IPA_IOC_MAGIC, IPA_IOCTL_QUERY_WLAN_CLIENT) 1255 #define IPA_IOC_ODL_QUERY_ADAPL_EP_INFO _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ODL_QUERY_ADAPL_EP_INFO, struct ipa_odl_ep_info) 1256 #define IPA_IOC_ODL_GET_AGG_BYTE_LIMIT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ODL_GET_AGG_BYTE_LIMIT, struct odl_agg_pipe_info) 1257 #define IPA_IOC_ODL_QUERY_MODEM_CONFIG _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_ODL_QUERY_MODEM_CONFIG, struct ipa_odl_modem_config) 1258 #define IPA_IOC_GSB_CONNECT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GSB_CONNECT, struct ipa_ioc_gsb_info) 1259 #define IPA_IOC_GSB_DISCONNECT _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GSB_DISCONNECT, struct ipa_ioc_gsb_info) 1260 #define IPA_IOC_WIGIG_FST_SWITCH _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_WIGIG_FST_SWITCH, struct ipa_ioc_wigig_fst_switch) 1261 #define IPA_IOC_FNR_COUNTER_ALLOC _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_FNR_COUNTER_ALLOC, struct ipa_ioc_flt_rt_counter_alloc) 1262 #define IPA_IOC_FNR_COUNTER_DEALLOC _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_FNR_COUNTER_DEALLOC, int) 1263 #define IPA_IOC_FNR_COUNTER_QUERY _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_FNR_COUNTER_QUERY, struct ipa_ioc_flt_rt_query) 1264 #define IPA_IOC_SET_FNR_COUNTER_INFO _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_SET_FNR_COUNTER_INFO, struct ipa_ioc_fnr_index_info) 1265 #define IPA_IOC_GET_NAT_IN_SRAM_INFO _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_GET_NAT_IN_SRAM_INFO, struct ipa_nat_in_sram_info) 1266 #define IPA_IOC_APP_CLOCK_VOTE _IOWR(IPA_IOC_MAGIC, IPA_IOCTL_APP_CLOCK_VOTE, uint32_t) 1267 #define TETH_BRIDGE_IOC_MAGIC 0xCE 1268 #define TETH_BRIDGE_IOCTL_SET_BRIDGE_MODE 0 1269 #define TETH_BRIDGE_IOCTL_SET_AGGR_PARAMS 1 1270 #define TETH_BRIDGE_IOCTL_GET_AGGR_PARAMS 2 1271 #define TETH_BRIDGE_IOCTL_GET_AGGR_CAPABILITIES 3 1272 #define TETH_BRIDGE_IOCTL_MAX 4 1273 enum teth_link_protocol_type { 1274 TETH_LINK_PROTOCOL_IP, 1275 TETH_LINK_PROTOCOL_ETHERNET, 1276 TETH_LINK_PROTOCOL_MAX, 1277 }; 1278 enum teth_aggr_protocol_type { 1279 TETH_AGGR_PROTOCOL_NONE, 1280 TETH_AGGR_PROTOCOL_MBIM, 1281 TETH_AGGR_PROTOCOL_TLP, 1282 TETH_AGGR_PROTOCOL_MAX, 1283 }; 1284 struct teth_aggr_params_link { 1285 enum teth_aggr_protocol_type aggr_prot; 1286 uint32_t max_transfer_size_byte; 1287 uint32_t max_datagrams; 1288 }; 1289 struct teth_aggr_params { 1290 struct teth_aggr_params_link ul; 1291 struct teth_aggr_params_link dl; 1292 }; 1293 struct teth_aggr_capabilities { 1294 uint16_t num_protocols; 1295 struct teth_aggr_params_link prot_caps[0]; 1296 }; 1297 struct teth_ioc_set_bridge_mode { 1298 enum teth_link_protocol_type link_protocol; 1299 uint16_t lcid; 1300 }; 1301 struct teth_ioc_aggr_params { 1302 struct teth_aggr_params aggr_params; 1303 uint16_t lcid; 1304 }; 1305 struct ipa_nat_in_sram_info { 1306 uint32_t sram_mem_available_for_nat; 1307 uint32_t nat_table_offset_into_mmap; 1308 uint32_t best_nat_in_sram_size_rqst; 1309 }; 1310 enum ipa_app_clock_vote_type { 1311 IPA_APP_CLK_DEVOTE = 0, 1312 IPA_APP_CLK_VOTE = 1, 1313 IPA_APP_CLK_RESET_VOTE = 2, 1314 }; 1315 #define TETH_BRIDGE_IOC_SET_BRIDGE_MODE _IOW(TETH_BRIDGE_IOC_MAGIC, TETH_BRIDGE_IOCTL_SET_BRIDGE_MODE, struct teth_ioc_set_bridge_mode *) 1316 #define TETH_BRIDGE_IOC_SET_AGGR_PARAMS _IOW(TETH_BRIDGE_IOC_MAGIC, TETH_BRIDGE_IOCTL_SET_AGGR_PARAMS, struct teth_ioc_aggr_params *) 1317 #define TETH_BRIDGE_IOC_GET_AGGR_PARAMS _IOR(TETH_BRIDGE_IOC_MAGIC, TETH_BRIDGE_IOCTL_GET_AGGR_PARAMS, struct teth_ioc_aggr_params *) 1318 #define TETH_BRIDGE_IOC_GET_AGGR_CAPABILITIES _IOWR(TETH_BRIDGE_IOC_MAGIC, TETH_BRIDGE_IOCTL_GET_AGGR_CAPABILITIES, struct teth_aggr_capabilities *) 1319 #define ODU_BRIDGE_IOC_MAGIC 0xCD 1320 #define ODU_BRIDGE_IOCTL_SET_MODE 0 1321 #define ODU_BRIDGE_IOCTL_SET_LLV6_ADDR 1 1322 #define ODU_BRIDGE_IOCTL_MAX 2 1323 enum odu_bridge_mode { 1324 ODU_BRIDGE_MODE_ROUTER, 1325 ODU_BRIDGE_MODE_BRIDGE, 1326 ODU_BRIDGE_MODE_MAX, 1327 }; 1328 #define ODU_BRIDGE_IOC_SET_MODE _IOW(ODU_BRIDGE_IOC_MAGIC, ODU_BRIDGE_IOCTL_SET_MODE, enum odu_bridge_mode) 1329 #define ODU_BRIDGE_IOC_SET_LLV6_ADDR _IOW(ODU_BRIDGE_IOC_MAGIC, ODU_BRIDGE_IOCTL_SET_LLV6_ADDR, struct in6_addr *) 1330 #endif 1331