17d8d95fbSHanoh Haim/*
27d8d95fbSHanoh Haim * Copyright (c) 2005 Topspin Communications.  All rights reserved.
37d8d95fbSHanoh Haim * Copyright (c) 2005, 2006 Cisco Systems.  All rights reserved.
47d8d95fbSHanoh Haim * Copyright (c) 2005 PathScale, Inc.  All rights reserved.
57d8d95fbSHanoh Haim *
67d8d95fbSHanoh Haim * This software is available to you under a choice of one of two
77d8d95fbSHanoh Haim * licenses.  You may choose to be licensed under the terms of the GNU
87d8d95fbSHanoh Haim * General Public License (GPL) Version 2, available from the file
97d8d95fbSHanoh Haim * COPYING in the main directory of this source tree, or the
107d8d95fbSHanoh Haim * OpenIB.org BSD license below:
117d8d95fbSHanoh Haim *
127d8d95fbSHanoh Haim *     Redistribution and use in source and binary forms, with or
137d8d95fbSHanoh Haim *     without modification, are permitted provided that the following
147d8d95fbSHanoh Haim *     conditions are met:
157d8d95fbSHanoh Haim *
167d8d95fbSHanoh Haim *      - Redistributions of source code must retain the above
177d8d95fbSHanoh Haim *        copyright notice, this list of conditions and the following
187d8d95fbSHanoh Haim *        disclaimer.
197d8d95fbSHanoh Haim *
207d8d95fbSHanoh Haim *      - Redistributions in binary form must reproduce the above
217d8d95fbSHanoh Haim *        copyright notice, this list of conditions and the following
227d8d95fbSHanoh Haim *        disclaimer in the documentation and/or other materials
237d8d95fbSHanoh Haim *        provided with the distribution.
247d8d95fbSHanoh Haim *
257d8d95fbSHanoh Haim * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
267d8d95fbSHanoh Haim * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
277d8d95fbSHanoh Haim * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
287d8d95fbSHanoh Haim * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
297d8d95fbSHanoh Haim * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
307d8d95fbSHanoh Haim * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
317d8d95fbSHanoh Haim * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
327d8d95fbSHanoh Haim * SOFTWARE.
337d8d95fbSHanoh Haim */
347d8d95fbSHanoh Haim
357d8d95fbSHanoh Haim#ifndef KERN_ABI_EXP_H
367d8d95fbSHanoh Haim#define KERN_ABI_EXP_H
377d8d95fbSHanoh Haim
387d8d95fbSHanoh Haim#include <infiniband/kern-abi.h>
397d8d95fbSHanoh Haim
407d8d95fbSHanoh Haim/*
417d8d95fbSHanoh Haim * This file must be kept in sync with the kernel's version of
427d8d95fbSHanoh Haim * drivers/infiniband/include/ib_user_verbs_exp.h
437d8d95fbSHanoh Haim */
447d8d95fbSHanoh Haim
457d8d95fbSHanoh Haimenum {
467d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_FIRST = 64
477d8d95fbSHanoh Haim};
487d8d95fbSHanoh Haim
497d8d95fbSHanoh Haimenum {
507d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_QP,
517d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_MODIFY_CQ,
527d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_MODIFY_QP,
537d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_CQ,
547d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_QUERY_DEVICE,
557d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_DCT,
567d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_DESTROY_DCT,
577d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_QUERY_DCT,
587d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_ARM_DCT,
597d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_MR,
607d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_QUERY_MKEY,
617d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_REG_MR,
627d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_PREFETCH_MR,
637d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_REREG_MR,
647d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_WQ,
657d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_MODIFY_WQ,
667d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_DESTROY_WQ,
677d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_RWQ_IND_TBL,
687d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_DESTROY_RWQ_IND_TBL,
697d8d95fbSHanoh Haim	IB_USER_VERBS_EXP_CMD_CREATE_FLOW,
707d8d95fbSHanoh Haim};
717d8d95fbSHanoh Haim
727d8d95fbSHanoh Haimenum {
737d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_CREATE_WQ =
747d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_CREATE_WQ +
757d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_FIRST,
767d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_MODIFY_WQ =
777d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_MODIFY_WQ +
787d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_FIRST,
797d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_DESTROY_WQ =
807d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_DESTROY_WQ +
817d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_FIRST,
827d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_CREATE_RWQ_IND_TBL =
837d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_CREATE_RWQ_IND_TBL +
847d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_FIRST,
857d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_DESTROY_RWQ_IND_TBL =
867d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_DESTROY_RWQ_IND_TBL +
877d8d95fbSHanoh Haim			IB_USER_VERBS_EXP_CMD_FIRST,
887d8d95fbSHanoh Haim	/*
897d8d95fbSHanoh Haim	 * Set commands that didn't exist to -1 so our compile-time
907d8d95fbSHanoh Haim	 * trick opcodes in IBV_INIT_CMD() doesn't break.
917d8d95fbSHanoh Haim	 */
927d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_CREATE_WQ_V2 = -1,
937d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_MODIFY_WQ_V2 = -1,
947d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_DESTROY_WQ_V2 = -1,
957d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_CREATE_RWQ_IND_TBL_V2 = -1,
967d8d95fbSHanoh Haim	IB_USER_VERBS_CMD_EXP_DESTROY_RWQ_IND_TBL_V2 = -1,
977d8d95fbSHanoh Haim};
987d8d95fbSHanoh Haim
997d8d95fbSHanoh Haimenum ibv_exp_create_qp_comp_mask {
1007d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_CAP_FLAGS          = (1ULL << 0),
1017d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_INL_RECV           = (1ULL << 1),
1027d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_QPG                = (1ULL << 2),
1037d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_MAX_INL_KLMS	     = (1ULL << 3)
1047d8d95fbSHanoh Haim};
1057d8d95fbSHanoh Haim
1067d8d95fbSHanoh Haimstruct ibv_create_qpg_init_attrib {
1077d8d95fbSHanoh Haim	__u32 tss_child_count;
1087d8d95fbSHanoh Haim	__u32 rss_child_count;
1097d8d95fbSHanoh Haim};
1107d8d95fbSHanoh Haim
1117d8d95fbSHanoh Haimstruct ibv_create_qpg {
1127d8d95fbSHanoh Haim	__u32 qpg_type;
1137d8d95fbSHanoh Haim	union {
1147d8d95fbSHanoh Haim		struct {
1157d8d95fbSHanoh Haim			__u32 parent_handle;
1167d8d95fbSHanoh Haim			__u32 reserved;
1177d8d95fbSHanoh Haim		};
1187d8d95fbSHanoh Haim		struct ibv_create_qpg_init_attrib parent_attrib;
1197d8d95fbSHanoh Haim	};
1207d8d95fbSHanoh Haim	__u32 reserved2;
1217d8d95fbSHanoh Haim};
1227d8d95fbSHanoh Haim
1237d8d95fbSHanoh Haimenum ibv_exp_create_qp_kernel_flags {
1247d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_KERNEL_FLAGS = IBV_EXP_QP_CREATE_CROSS_CHANNEL  |
1257d8d95fbSHanoh Haim					 IBV_EXP_QP_CREATE_MANAGED_SEND   |
1267d8d95fbSHanoh Haim					 IBV_EXP_QP_CREATE_MANAGED_RECV   |
1277d8d95fbSHanoh Haim					 IBV_EXP_QP_CREATE_ATOMIC_BE_REPLY |
1287d8d95fbSHanoh Haim					 IBV_EXP_QP_CREATE_RX_END_PADDING |
1297d8d95fbSHanoh Haim					 IBV_EXP_QP_CREATE_SCATTER_FCS
1307d8d95fbSHanoh Haim};
1317d8d95fbSHanoh Haim
1327d8d95fbSHanoh Haimstruct ibv_exp_create_qp {
1337d8d95fbSHanoh Haim	struct ex_hdr hdr;
1347d8d95fbSHanoh Haim	__u64 comp_mask;
1357d8d95fbSHanoh Haim	__u64 user_handle;
1367d8d95fbSHanoh Haim	__u32 pd_handle;
1377d8d95fbSHanoh Haim	__u32 send_cq_handle;
1387d8d95fbSHanoh Haim	__u32 recv_cq_handle;
1397d8d95fbSHanoh Haim	__u32 srq_handle;
1407d8d95fbSHanoh Haim	__u32 max_send_wr;
1417d8d95fbSHanoh Haim	__u32 max_recv_wr;
1427d8d95fbSHanoh Haim	__u32 max_send_sge;
1437d8d95fbSHanoh Haim	__u32 max_recv_sge;
1447d8d95fbSHanoh Haim	__u32 max_inline_data;
1457d8d95fbSHanoh Haim	__u8  sq_sig_all;
1467d8d95fbSHanoh Haim	__u8  qp_type;
1477d8d95fbSHanoh Haim	__u8  is_srq;
1487d8d95fbSHanoh Haim	__u8  reserved;
1497d8d95fbSHanoh Haim	__u64 qp_cap_flags;
1507d8d95fbSHanoh Haim	__u32 max_inl_recv;
1517d8d95fbSHanoh Haim	__u32 reserved1;
1527d8d95fbSHanoh Haim	struct ibv_create_qpg qpg;
1537d8d95fbSHanoh Haim	__u64 max_inl_send_klms;
1547d8d95fbSHanoh Haim	struct {
1557d8d95fbSHanoh Haim		__u64 rx_hash_fields_mask;
1567d8d95fbSHanoh Haim		__u32 rwq_ind_tbl_handle;
1577d8d95fbSHanoh Haim		__u8 rx_hash_function;
1587d8d95fbSHanoh Haim		__u8 rx_hash_key_len;
1597d8d95fbSHanoh Haim		__u8 rx_hash_key[128];
1607d8d95fbSHanoh Haim		__u16 reserved;
1617d8d95fbSHanoh Haim	} rx_hash_info;
1627d8d95fbSHanoh Haim	__u8 port_num;
1637d8d95fbSHanoh Haim	__u8 reserved_2[7];
1647d8d95fbSHanoh Haim	__u64 driver_data[0];
1657d8d95fbSHanoh Haim};
1667d8d95fbSHanoh Haim
1677d8d95fbSHanoh Haimenum ibv_exp_create_qp_resp_comp_mask {
1687d8d95fbSHanoh Haim	IBV_EXP_CREATE_QP_RESP_INL_RECV       = (1ULL << 0),
1697d8d95fbSHanoh Haim};
1707d8d95fbSHanoh Haim
1717d8d95fbSHanoh Haimstruct ibv_exp_create_qp_resp {
1727d8d95fbSHanoh Haim	__u64 comp_mask;
1737d8d95fbSHanoh Haim	__u32 qp_handle;
1747d8d95fbSHanoh Haim	__u32 qpn;
1757d8d95fbSHanoh Haim	__u32 max_send_wr;
1767d8d95fbSHanoh Haim	__u32 max_recv_wr;
1777d8d95fbSHanoh Haim	__u32 max_send_sge;
1787d8d95fbSHanoh Haim	__u32 max_recv_sge;
1797d8d95fbSHanoh Haim	__u32 max_inline_data;
1807d8d95fbSHanoh Haim	__u32 max_inl_recv;
1817d8d95fbSHanoh Haim};
1827d8d95fbSHanoh Haim
1837d8d95fbSHanoh Haimstruct ibv_exp_umr_caps_resp {
1847d8d95fbSHanoh Haim	__u32 max_klm_list_size;
1857d8d95fbSHanoh Haim	__u32 max_send_wqe_inline_klms;
1867d8d95fbSHanoh Haim	__u32 max_umr_recursion_depth;
1877d8d95fbSHanoh Haim	__u32 max_umr_stride_dimension;
1887d8d95fbSHanoh Haim};
1897d8d95fbSHanoh Haim
1907d8d95fbSHanoh Haimstruct ibv_exp_odp_caps_resp {
1917d8d95fbSHanoh Haim	__u64	general_odp_caps;
1927d8d95fbSHanoh Haim	struct {
1937d8d95fbSHanoh Haim		__u32	rc_odp_caps;
1947d8d95fbSHanoh Haim		__u32	uc_odp_caps;
1957d8d95fbSHanoh Haim		__u32	ud_odp_caps;
1967d8d95fbSHanoh Haim		__u32	dc_odp_caps;
1977d8d95fbSHanoh Haim		__u32	xrc_odp_caps;
1987d8d95fbSHanoh Haim		__u32	raw_eth_odp_caps;
1997d8d95fbSHanoh Haim	} per_transport_caps;
2007d8d95fbSHanoh Haim};
2017d8d95fbSHanoh Haim
2027d8d95fbSHanoh Haimstruct ibv_exp_query_device {
2037d8d95fbSHanoh Haim	struct ex_hdr hdr;
2047d8d95fbSHanoh Haim	__u64 comp_mask;
2057d8d95fbSHanoh Haim	__u64 driver_data[0];
2067d8d95fbSHanoh Haim};
2077d8d95fbSHanoh Haim
2087d8d95fbSHanoh Haimstruct ibv_exp_rx_hash_caps_resp {
2097d8d95fbSHanoh Haim	__u32	max_rwq_indirection_tables;
2107d8d95fbSHanoh Haim	__u32	max_rwq_indirection_table_size;
2117d8d95fbSHanoh Haim	__u64	supported_packet_fields;
2127d8d95fbSHanoh Haim	__u32	supported_qps;
2137d8d95fbSHanoh Haim	__u8	supported_hash_functions;
2147d8d95fbSHanoh Haim	__u8	reserved[3];
2157d8d95fbSHanoh Haim};
2167d8d95fbSHanoh Haim
2177d8d95fbSHanoh Haimstruct ibv_exp_mp_rq_caps_resp {
2187d8d95fbSHanoh Haim	__u32	supported_qps; /* use ibv_exp_supported_qp_types */
2197d8d95fbSHanoh Haim	__u32	allowed_shifts; /* use ibv_exp_mp_rq_shifts */
2207d8d95fbSHanoh Haim	__u8	min_single_wqe_log_num_of_strides;
2217d8d95fbSHanoh Haim	__u8	max_single_wqe_log_num_of_strides;
2227d8d95fbSHanoh Haim	__u8	min_single_stride_log_num_of_bytes;
2237d8d95fbSHanoh Haim	__u8	max_single_stride_log_num_of_bytes;
2247d8d95fbSHanoh Haim	__u32	reserved;
2257d8d95fbSHanoh Haim};
2267d8d95fbSHanoh Haim
2277d8d95fbSHanoh Haimstruct ibv_exp_ec_caps_resp {
2287d8d95fbSHanoh Haim        __u32        max_ec_data_vector_count;
2297d8d95fbSHanoh Haim        __u32        max_ec_calc_inflight_calcs;
2307d8d95fbSHanoh Haim};
2317d8d95fbSHanoh Haim
2327d8d95fbSHanoh Haimstruct ibv_exp_masked_atomic_caps {
2337d8d95fbSHanoh Haim	__u32 max_fa_bit_boundary;
2347d8d95fbSHanoh Haim	__u32 log_max_atomic_inline;
2357d8d95fbSHanoh Haim	__u64 masked_log_atomic_arg_sizes;
2367d8d95fbSHanoh Haim	__u64 masked_log_atomic_arg_sizes_network_endianness;
2377d8d95fbSHanoh Haim};
2387d8d95fbSHanoh Haim
2397d8d95fbSHanoh Haimstruct ibv_exp_lso_caps_resp {
2407d8d95fbSHanoh Haim	__u32 max_tso;
2417d8d95fbSHanoh Haim	__u32 supported_qpts;
2427d8d95fbSHanoh Haim};
2437d8d95fbSHanoh Haim
2447d8d95fbSHanoh Haimstruct ibv_exp_packet_pacing_caps_resp {
2457d8d95fbSHanoh Haim	__u32 qp_rate_limit_min;
2467d8d95fbSHanoh Haim	__u32 qp_rate_limit_max; /* In kbps */
2477d8d95fbSHanoh Haim	__u32 supported_qpts;
2487d8d95fbSHanoh Haim	__u32 reserved;
2497d8d95fbSHanoh Haim};
2507d8d95fbSHanoh Haim
2517d8d95fbSHanoh Haimstruct ibv_exp_query_device_resp {
2527d8d95fbSHanoh Haim	__u64 comp_mask;
2537d8d95fbSHanoh Haim	__u64 fw_ver;
2547d8d95fbSHanoh Haim	__u64 node_guid;
2557d8d95fbSHanoh Haim	__u64 sys_image_guid;
2567d8d95fbSHanoh Haim	__u64 max_mr_size;
2577d8d95fbSHanoh Haim	__u64 page_size_cap;
2587d8d95fbSHanoh Haim	__u32 vendor_id;
2597d8d95fbSHanoh Haim	__u32 vendor_part_id;
2607d8d95fbSHanoh Haim	__u32 hw_ver;
2617d8d95fbSHanoh Haim	__u32 max_qp;
2627d8d95fbSHanoh Haim	__u32 max_qp_wr;
2637d8d95fbSHanoh Haim	__u32 device_cap_flags;
2647d8d95fbSHanoh Haim	__u32 max_sge;
2657d8d95fbSHanoh Haim	__u32 max_sge_rd;
2667d8d95fbSHanoh Haim	__u32 max_cq;
2677d8d95fbSHanoh Haim	__u32 max_cqe;
2687d8d95fbSHanoh Haim	__u32 max_mr;
2697d8d95fbSHanoh Haim	__u32 max_pd;
2707d8d95fbSHanoh Haim	__u32 max_qp_rd_atom;
2717d8d95fbSHanoh Haim	__u32 max_ee_rd_atom;
2727d8d95fbSHanoh Haim	__u32 max_res_rd_atom;
2737d8d95fbSHanoh Haim	__u32 max_qp_init_rd_atom;
2747d8d95fbSHanoh Haim	__u32 max_ee_init_rd_atom;
2757d8d95fbSHanoh Haim	__u32 exp_atomic_cap;
2767d8d95fbSHanoh Haim	__u32 max_ee;
2777d8d95fbSHanoh Haim	__u32 max_rdd;
2787d8d95fbSHanoh Haim	__u32 max_mw;
2797d8d95fbSHanoh Haim	__u32 max_raw_ipv6_qp;
2807d8d95fbSHanoh Haim	__u32 max_raw_ethy_qp;
2817d8d95fbSHanoh Haim	__u32 max_mcast_grp;
2827d8d95fbSHanoh Haim	__u32 max_mcast_qp_attach;
2837d8d95fbSHanoh Haim	__u32 max_total_mcast_qp_attach;
2847d8d95fbSHanoh Haim	__u32 max_ah;
2857d8d95fbSHanoh Haim	__u32 max_fmr;
2867d8d95fbSHanoh Haim	__u32 max_map_per_fmr;
2877d8d95fbSHanoh Haim	__u32 max_srq;
2887d8d95fbSHanoh Haim	__u32 max_srq_wr;
2897d8d95fbSHanoh Haim	__u32 max_srq_sge;
2907d8d95fbSHanoh Haim	__u16 max_pkeys;
2917d8d95fbSHanoh Haim	__u8  local_ca_ack_delay;
2927d8d95fbSHanoh Haim	__u8  phys_port_cnt;
2937d8d95fbSHanoh Haim	__u8  reserved[4];
2947d8d95fbSHanoh Haim	__u64 timestamp_mask;
2957d8d95fbSHanoh Haim	__u64 hca_core_clock;
2967d8d95fbSHanoh Haim	__u64 device_cap_flags2;
2977d8d95fbSHanoh Haim	__u32 dc_rd_req;
2987d8d95fbSHanoh Haim	__u32 dc_rd_res;
2997d8d95fbSHanoh Haim	__u32 inline_recv_sz;
3007d8d95fbSHanoh Haim	__u32 max_rss_tbl_sz;
3017d8d95fbSHanoh Haim	__u64 log_atomic_arg_sizes;
3027d8d95fbSHanoh Haim	__u32 max_fa_bit_boundary;
3037d8d95fbSHanoh Haim	__u32 log_max_atomic_inline;
3047d8d95fbSHanoh Haim	struct ibv_exp_umr_caps_resp umr_caps;
3057d8d95fbSHanoh Haim	struct ibv_exp_odp_caps_resp odp_caps;
3067d8d95fbSHanoh Haim	__u32 max_dct;
3077d8d95fbSHanoh Haim	__u32 max_ctx_res_domain;
3087d8d95fbSHanoh Haim	struct ibv_exp_rx_hash_caps_resp rx_hash;
3097d8d95fbSHanoh Haim	__u32 max_wq_type_rq;
3107d8d95fbSHanoh Haim	__u32 max_device_ctx;
3117d8d95fbSHanoh Haim	struct ibv_exp_mp_rq_caps_resp mp_rq_caps;
3127d8d95fbSHanoh Haim	__u16 wq_vlan_offloads_cap;
3139948fdf7SHanoh Haim	__u8 reserved1[2];
3149948fdf7SHanoh Haim	__u32 ec_w_mask;
3157d8d95fbSHanoh Haim	struct ibv_exp_ec_caps_resp ec_caps;
3167d8d95fbSHanoh Haim	struct ibv_exp_masked_atomic_caps masked_atomic_caps;
3177d8d95fbSHanoh Haim	__u16 rx_pad_end_addr_align;
3187d8d95fbSHanoh Haim	__u8 reserved2[6];
3197d8d95fbSHanoh Haim	struct ibv_exp_lso_caps_resp tso_caps;
3207d8d95fbSHanoh Haim	struct ibv_exp_packet_pacing_caps_resp packet_pacing_caps;
3217d8d95fbSHanoh Haim};
3227d8d95fbSHanoh Haim
3237d8d95fbSHanoh Haimstruct ibv_exp_create_dct {
3247d8d95fbSHanoh Haim	struct ex_hdr hdr;
3257d8d95fbSHanoh Haim	__u64 comp_mask;
3267d8d95fbSHanoh Haim	__u64 user_handle;
3277d8d95fbSHanoh Haim	__u32 pd_handle;
3287d8d95fbSHanoh Haim	__u32 cq_handle;
3297d8d95fbSHanoh Haim	__u32 srq_handle;
3307d8d95fbSHanoh Haim	__u32 access_flags;
3317d8d95fbSHanoh Haim	__u64 dc_key;
3327d8d95fbSHanoh Haim	__u32 flow_label;
3337d8d95fbSHanoh Haim	__u8  min_rnr_timer;
3347d8d95fbSHanoh Haim	__u8  tclass;
3357d8d95fbSHanoh Haim	__u8  port;
3367d8d95fbSHanoh Haim	__u8  pkey_index;
3377d8d95fbSHanoh Haim	__u8  gid_index;
3387d8d95fbSHanoh Haim	__u8  hop_limit;
3397d8d95fbSHanoh Haim	__u8  mtu;
3407d8d95fbSHanoh Haim	__u8  rsvd0;
3417d8d95fbSHanoh Haim	__u32 create_flags;
3427d8d95fbSHanoh Haim	__u32 inline_size;
3437d8d95fbSHanoh Haim	__u32 rsvd1;
3447d8d95fbSHanoh Haim	__u64 driver_data[0];
3457d8d95fbSHanoh Haim};
3467d8d95fbSHanoh Haim
3477d8d95fbSHanoh Haimstruct ibv_exp_create_dct_resp {
3487d8d95fbSHanoh Haim	__u32 dct_handle;
3497d8d95fbSHanoh Haim	__u32 dct_num;
3507d8d95fbSHanoh Haim	__u32 inline_size;
3517d8d95fbSHanoh Haim	__u32 rsvd;
3527d8d95fbSHanoh Haim};
3537d8d95fbSHanoh Haim
3547d8d95fbSHanoh Haimstruct ibv_exp_destroy_dct {
3557d8d95fbSHanoh Haim	struct ex_hdr hdr;
3567d8d95fbSHanoh Haim	__u64 comp_mask;
3577d8d95fbSHanoh Haim	__u32 dct_handle;
3587d8d95fbSHanoh Haim	__u32 rsvd;
3597d8d95fbSHanoh Haim	__u64 driver_data[0];
3607d8d95fbSHanoh Haim};
3617d8d95fbSHanoh Haim
3627d8d95fbSHanoh Haimstruct ibv_exp_destroy_dct_resp {
3637d8d95fbSHanoh Haim	__u32	events_reported;
3647d8d95fbSHanoh Haim	__u32	reserved;
3657d8d95fbSHanoh Haim};
3667d8d95fbSHanoh Haim
3677d8d95fbSHanoh Haimstruct ibv_exp_query_dct {
3687d8d95fbSHanoh Haim	struct ex_hdr hdr;
3697d8d95fbSHanoh Haim	__u64 comp_mask;
3707d8d95fbSHanoh Haim	__u32 dct_handle;
3717d8d95fbSHanoh Haim	__u32 reserved;
3727d8d95fbSHanoh Haim	__u64 driver_data[0];
3737d8d95fbSHanoh Haim};
3747d8d95fbSHanoh Haim
3757d8d95fbSHanoh Haimstruct ibv_exp_query_dct_resp {
3767d8d95fbSHanoh Haim	__u64	dc_key;
3777d8d95fbSHanoh Haim	__u32	access_flags;
3787d8d95fbSHanoh Haim	__u32	flow_label;
3797d8d95fbSHanoh Haim	__u32	key_violations;
3807d8d95fbSHanoh Haim	__u8	port;
3817d8d95fbSHanoh Haim	__u8	min_rnr_timer;
3827d8d95fbSHanoh Haim	__u8	tclass;
3837d8d95fbSHanoh Haim	__u8	mtu;
3847d8d95fbSHanoh Haim	__u8	pkey_index;
3857d8d95fbSHanoh Haim	__u8	gid_index;
3867d8d95fbSHanoh Haim	__u8	hop_limit;
3877d8d95fbSHanoh Haim	__u8	state;
3887d8d95fbSHanoh Haim	__u32	rsvd;
3897d8d95fbSHanoh Haim	__u64	driver_data[0];
3907d8d95fbSHanoh Haim};
3917d8d95fbSHanoh Haim
3927d8d95fbSHanoh Haimstruct ibv_exp_arm_dct {
3937d8d95fbSHanoh Haim	struct ex_hdr hdr;
3947d8d95fbSHanoh Haim	__u64 comp_mask;
3957d8d95fbSHanoh Haim	__u32 dct_handle;
3967d8d95fbSHanoh Haim	__u32 reserved;
3977d8d95fbSHanoh Haim	__u64 driver_data[0];
3987d8d95fbSHanoh Haim};
3997d8d95fbSHanoh Haim
4007d8d95fbSHanoh Haimstruct ibv_exp_arm_dct_resp {
4017d8d95fbSHanoh Haim	__u64	reserved;
4027d8d95fbSHanoh Haim};
4037d8d95fbSHanoh Haim
4047d8d95fbSHanoh Haimstruct ibv_exp_modify_cq {
4057d8d95fbSHanoh Haim	struct ex_hdr hdr;
4067d8d95fbSHanoh Haim	__u32 cq_handle;
4077d8d95fbSHanoh Haim	__u32 attr_mask;
4087d8d95fbSHanoh Haim	__u16 cq_count;
4097d8d95fbSHanoh Haim	__u16 cq_period;
4107d8d95fbSHanoh Haim	__u32 cq_cap_flags;
4117d8d95fbSHanoh Haim	__u32 comp_mask;
4127d8d95fbSHanoh Haim	__u32 rsvd;
4137d8d95fbSHanoh Haim};
4147d8d95fbSHanoh Haim
4157d8d95fbSHanoh Haimstruct ibv_exp_modify_qp {
4167d8d95fbSHanoh Haim	struct ex_hdr hdr;
4177d8d95fbSHanoh Haim	__u32 comp_mask;
4187d8d95fbSHanoh Haim	struct ibv_qp_dest dest;
4197d8d95fbSHanoh Haim	struct ibv_qp_dest alt_dest;
4207d8d95fbSHanoh Haim	__u32 qp_handle;
4217d8d95fbSHanoh Haim	__u32 attr_mask;
4227d8d95fbSHanoh Haim	__u32 qkey;
4237d8d95fbSHanoh Haim	__u32 rq_psn;
4247d8d95fbSHanoh Haim	__u32 sq_psn;
4257d8d95fbSHanoh Haim	__u32 dest_qp_num;
4267d8d95fbSHanoh Haim	__u32 qp_access_flags;
4277d8d95fbSHanoh Haim	__u16 pkey_index;
4287d8d95fbSHanoh Haim	__u16 alt_pkey_index;
4297d8d95fbSHanoh Haim	__u8  qp_state;
4307d8d95fbSHanoh Haim	__u8  cur_qp_state;
4317d8d95fbSHanoh Haim	__u8  path_mtu;
4327d8d95fbSHanoh Haim	__u8  path_mig_state;
4337d8d95fbSHanoh Haim	__u8  en_sqd_async_notify;
4347d8d95fbSHanoh Haim	__u8  max_rd_atomic;
4357d8d95fbSHanoh Haim	__u8  max_dest_rd_atomic;
4367d8d95fbSHanoh Haim	__u8  min_rnr_timer;
4377d8d95fbSHanoh Haim	__u8  port_num;
4387d8d95fbSHanoh Haim	__u8  timeout;
4397d8d95fbSHanoh Haim	__u8  retry_cnt;
4407d8d95fbSHanoh Haim	__u8  rnr_retry;
4417d8d95fbSHanoh Haim	__u8  alt_port_num;
4427d8d95fbSHanoh Haim	__u8  alt_timeout;
4437d8d95fbSHanoh Haim	__u8  reserved[6];
4447d8d95fbSHanoh Haim	__u64 dct_key;
4457d8d95fbSHanoh Haim	__u32 exp_attr_mask;
4467d8d95fbSHanoh Haim	__u32 flow_entropy;
4477d8d95fbSHanoh Haim	__u32 rate_limit;
4487d8d95fbSHanoh Haim	__u32 reserved1;
4499948fdf7SHanoh Haim	__u64 driver_data[0];
4507d8d95fbSHanoh Haim};
4517d8d95fbSHanoh Haim
4527d8d95fbSHanoh Haimenum ibv_exp_create_cq_comp_mask {
4537d8d95fbSHanoh Haim	IBV_EXP_CREATE_CQ_CAP_FLAGS	= (uint64_t)1 << 0,
4547d8d95fbSHanoh Haim};
4557d8d95fbSHanoh Haim
4567d8d95fbSHanoh Haimstruct ibv_exp_create_cq {
4577d8d95fbSHanoh Haim	struct ex_hdr hdr;
4587d8d95fbSHanoh Haim	__u64 comp_mask;
4597d8d95fbSHanoh Haim	__u64 user_handle;
4607d8d95fbSHanoh Haim	__u32 cqe;
4617d8d95fbSHanoh Haim	__u32 comp_vector;
4627d8d95fbSHanoh Haim	__s32 comp_channel;
4637d8d95fbSHanoh Haim	__u32 reserved;
4647d8d95fbSHanoh Haim	__u64 create_flags;
4657d8d95fbSHanoh Haim	__u64 driver_data[0];
4667d8d95fbSHanoh Haim};
4677d8d95fbSHanoh Haim
4687d8d95fbSHanoh Haimstruct ibv_exp_create_mr {
4697d8d95fbSHanoh Haim	struct ex_hdr hdr;
4707d8d95fbSHanoh Haim	__u64 comp_mask;
4717d8d95fbSHanoh Haim	__u32 pd_handle;
4727d8d95fbSHanoh Haim	__u32 max_klm_list_size;
4737d8d95fbSHanoh Haim	__u64 exp_access_flags;
4747d8d95fbSHanoh Haim	__u32 create_flags;
4757d8d95fbSHanoh Haim	__u32 reserved;
4767d8d95fbSHanoh Haim	__u64 driver_data[0];
4777d8d95fbSHanoh Haim};
4787d8d95fbSHanoh Haim
4797d8d95fbSHanoh Haimstruct ibv_exp_create_mr_resp {
4807d8d95fbSHanoh Haim	__u64 comp_mask;
4817d8d95fbSHanoh Haim	__u32 handle;
4827d8d95fbSHanoh Haim	__u32 lkey;
4837d8d95fbSHanoh Haim	__u32 rkey;
4847d8d95fbSHanoh Haim	__u32 reserved;
4857d8d95fbSHanoh Haim	__u64 driver_data[0];
4867d8d95fbSHanoh Haim};
4877d8d95fbSHanoh Haim
4887d8d95fbSHanoh Haimstruct ibv_exp_query_mkey {
4897d8d95fbSHanoh Haim	struct ex_hdr hdr;
4907d8d95fbSHanoh Haim	__u64 comp_mask;
4917d8d95fbSHanoh Haim	__u32 handle;
4927d8d95fbSHanoh Haim	__u32 lkey;
4937d8d95fbSHanoh Haim	__u32 rkey;
4947d8d95fbSHanoh Haim	__u32 reserved;
4957d8d95fbSHanoh Haim	__u64 driver_data[0];
4967d8d95fbSHanoh Haim};
4977d8d95fbSHanoh Haim
4987d8d95fbSHanoh Haimstruct ibv_exp_query_mkey_resp {
4997d8d95fbSHanoh Haim	__u64 comp_mask;
5007d8d95fbSHanoh Haim	__u32 max_klm_list_size;
5017d8d95fbSHanoh Haim	__u32 reserved;
5027d8d95fbSHanoh Haim	__u64 driver_data[0];
5037d8d95fbSHanoh Haim};
5047d8d95fbSHanoh Haim
5057d8d95fbSHanoh Haimenum ibv_exp_reg_mr_comp_mask {
5067d8d95fbSHanoh Haim	IBV_EXP_REG_MR_EXP_ACCESS_FLAGS = 1ULL << 0,
5077d8d95fbSHanoh Haim};
5087d8d95fbSHanoh Haim
5097d8d95fbSHanoh Haimstruct ibv_exp_reg_mr {
5107d8d95fbSHanoh Haim	struct ex_hdr hdr;
5117d8d95fbSHanoh Haim	__u64 start;
5127d8d95fbSHanoh Haim	__u64 length;
5137d8d95fbSHanoh Haim	__u64 hca_va;
5147d8d95fbSHanoh Haim	__u32 pd_handle;
5157d8d95fbSHanoh Haim	__u32 reserved;
5167d8d95fbSHanoh Haim	__u64 exp_access_flags;
5177d8d95fbSHanoh Haim	__u64 comp_mask;
5187d8d95fbSHanoh Haim};
5197d8d95fbSHanoh Haim
5207d8d95fbSHanoh Haimstruct ibv_exp_prefetch_mr {
5217d8d95fbSHanoh Haim	struct ex_hdr hdr;
5227d8d95fbSHanoh Haim	__u64 comp_mask;
5237d8d95fbSHanoh Haim	__u32 mr_handle;
5247d8d95fbSHanoh Haim	__u32 flags;
5257d8d95fbSHanoh Haim	__u64 start;
5267d8d95fbSHanoh Haim	__u64 length;
5277d8d95fbSHanoh Haim};
5287d8d95fbSHanoh Haim
5297d8d95fbSHanoh Haimstruct ibv_exp_reg_mr_resp {
5307d8d95fbSHanoh Haim	__u32 mr_handle;
5317d8d95fbSHanoh Haim	__u32 lkey;
5327d8d95fbSHanoh Haim	__u32 rkey;
5337d8d95fbSHanoh Haim	__u32 reserved;
5347d8d95fbSHanoh Haim	__u64 comp_mask;
5357d8d95fbSHanoh Haim};
5367d8d95fbSHanoh Haim
5377d8d95fbSHanoh Haimstruct ibv_exp_rereg_mr {
5387d8d95fbSHanoh Haim	struct ex_hdr hdr;
5397d8d95fbSHanoh Haim	__u32 comp_mask;
5407d8d95fbSHanoh Haim	__u32 mr_handle;
5417d8d95fbSHanoh Haim	__u32 flags;
5427d8d95fbSHanoh Haim	__u32 reserved;
5437d8d95fbSHanoh Haim	__u64 start;
5447d8d95fbSHanoh Haim	__u64 length;
5457d8d95fbSHanoh Haim	__u64 hca_va;
5467d8d95fbSHanoh Haim	__u32 pd_handle;
5477d8d95fbSHanoh Haim	__u32 access_flags;
5487d8d95fbSHanoh Haim};
5497d8d95fbSHanoh Haim
5507d8d95fbSHanoh Haimstruct ibv_exp_rereg_mr_resp {
5517d8d95fbSHanoh Haim	__u32 comp_mask;
5527d8d95fbSHanoh Haim	__u32 lkey;
5537d8d95fbSHanoh Haim	__u32 rkey;
5547d8d95fbSHanoh Haim	__u32 reserved;
5557d8d95fbSHanoh Haim};
5567d8d95fbSHanoh Haim
5577d8d95fbSHanoh Haimstruct ibv_exp_cmd_wq_mp_rq {
5587d8d95fbSHanoh Haim	__u32 use_shift; /* use ibv_exp_mp_rq_shifts */
5597d8d95fbSHanoh Haim	__u8  single_wqe_log_num_of_strides;
5607d8d95fbSHanoh Haim	__u8  single_stride_log_num_of_bytes;
5617d8d95fbSHanoh Haim	__u16 reserved;
5627d8d95fbSHanoh Haim};
5637d8d95fbSHanoh Haim
5647d8d95fbSHanoh Haimenum ibv_exp_cmd_create_wq_comp_mask {
5657d8d95fbSHanoh Haim	IBV_EXP_CMD_CREATE_WQ_MP_RQ		= 1 << 0,
5667d8d95fbSHanoh Haim	IBV_EXP_CMD_CREATE_WQ_VLAN_OFFLOADS	= 1 << 1,
5677d8d95fbSHanoh Haim	IBV_EXP_CMD_CREATE_WQ_FLAGS		= 1 << 2,
5687d8d95fbSHanoh Haim};
5697d8d95fbSHanoh Haim
5707d8d95fbSHanoh Haimstruct ibv_exp_create_wq {
5717d8d95fbSHanoh Haim	struct ex_hdr hdr;
5727d8d95fbSHanoh Haim	__u32 comp_mask; /* enum ibv_exp_cmd_create_wq_comp_mask */
5737d8d95fbSHanoh Haim	__u32 wq_type; /* enum ibv_exp_wq_type */
5747d8d95fbSHanoh Haim	__u64 user_handle;
5757d8d95fbSHanoh Haim	__u32 pd_handle;
5767d8d95fbSHanoh Haim	__u32 cq_handle;
5777d8d95fbSHanoh Haim	__u32 max_recv_wr;
5787d8d95fbSHanoh Haim	__u32 max_recv_sge;
5797d8d95fbSHanoh Haim};
5807d8d95fbSHanoh Haim
5817d8d95fbSHanoh Haimstruct ibv_exp_create_wq_resp {
5827d8d95fbSHanoh Haim	__u32 comp_mask;
5837d8d95fbSHanoh Haim	__u32 response_length;
5847d8d95fbSHanoh Haim	__u32 wq_handle;
5857d8d95fbSHanoh Haim	__u32 max_recv_wr;
5867d8d95fbSHanoh Haim	__u32 max_recv_sge;
5877d8d95fbSHanoh Haim	__u32 wqn;
5887d8d95fbSHanoh Haim};
5897d8d95fbSHanoh Haim
5907d8d95fbSHanoh Haimstruct ib_exp_destroy_wq {
5917d8d95fbSHanoh Haim	struct ex_hdr hdr;
5927d8d95fbSHanoh Haim	__u32 comp_mask;
5937d8d95fbSHanoh Haim	__u32 wq_handle;
5947d8d95fbSHanoh Haim};
5957d8d95fbSHanoh Haim
5969948fdf7SHanoh Haimstruct ibv_destroy_wq_resp {
5979948fdf7SHanoh Haim	__u32 comp_mask;
5989948fdf7SHanoh Haim	__u32 response_length;
5999948fdf7SHanoh Haim	__u32 events_reported;
6009948fdf7SHanoh Haim	__u32 reserved;
6019948fdf7SHanoh Haim};
6029948fdf7SHanoh Haim
6037d8d95fbSHanoh Haimstruct ib_exp_modify_wq  {
6047d8d95fbSHanoh Haim	struct ex_hdr hdr;
6057d8d95fbSHanoh Haim	__u32 comp_mask;
6067d8d95fbSHanoh Haim	__u32 wq_handle;
6077d8d95fbSHanoh Haim	__u32 wq_state;
6087d8d95fbSHanoh Haim	__u32 curr_wq_state;
6097d8d95fbSHanoh Haim};
6107d8d95fbSHanoh Haim
6117d8d95fbSHanoh Haimstruct ibv_exp_create_rwq_ind_table {
6127d8d95fbSHanoh Haim	struct ex_hdr hdr;
6137d8d95fbSHanoh Haim	__u32 comp_mask;
6147d8d95fbSHanoh Haim	__u32 log_ind_tbl_size;
6157d8d95fbSHanoh Haim	/* Following are wq handles based on log_ind_tbl_size, must be 64 bytes aligned.
6167d8d95fbSHanoh Haim	 * __u32 wq_handle1
6177d8d95fbSHanoh Haim	 * __u32 wq_handle2
6187d8d95fbSHanoh Haim	 */
6197d8d95fbSHanoh Haim};
6207d8d95fbSHanoh Haim
6217d8d95fbSHanoh Haimstruct ibv_exp_create_rwq_ind_table_resp {
6227d8d95fbSHanoh Haim	__u32 comp_mask;
6237d8d95fbSHanoh Haim	__u32 response_length;
6247d8d95fbSHanoh Haim	__u32 ind_tbl_handle;
6257d8d95fbSHanoh Haim	__u32 ind_tbl_num;
6267d8d95fbSHanoh Haim};
6277d8d95fbSHanoh Haim
6287d8d95fbSHanoh Haimstruct ibv_exp_destroy_rwq_ind_table {
6297d8d95fbSHanoh Haim	struct ex_hdr hdr;
6307d8d95fbSHanoh Haim	__u32 comp_mask;
6317d8d95fbSHanoh Haim	__u32 ind_tbl_handle;
6327d8d95fbSHanoh Haim};
6337d8d95fbSHanoh Haim
6347d8d95fbSHanoh Haimstruct ibv_exp_kern_ipv6_filter {
6357d8d95fbSHanoh Haim	__u8 src_ip[16];
6367d8d95fbSHanoh Haim	__u8 dst_ip[16];
6377d8d95fbSHanoh Haim};
6387d8d95fbSHanoh Haim
6397d8d95fbSHanoh Haimstruct ibv_exp_kern_spec_ipv6 {
6407d8d95fbSHanoh Haim	__u32  type;
6417d8d95fbSHanoh Haim	__u16  size;
6427d8d95fbSHanoh Haim	__u16 reserved;
6437d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv6_filter val;
6447d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv6_filter mask;
6457d8d95fbSHanoh Haim};
6467d8d95fbSHanoh Haim
6477d8d95fbSHanoh Haimstruct ibv_exp_kern_ipv6_ext_filter {
6487d8d95fbSHanoh Haim	__u8 src_ip[16];
6497d8d95fbSHanoh Haim	__u8 dst_ip[16];
6507d8d95fbSHanoh Haim	__u32 flow_label;
6517d8d95fbSHanoh Haim	__u8  next_hdr;
6527d8d95fbSHanoh Haim	__u8  traffic_class;
6537d8d95fbSHanoh Haim	__u8  hop_limit;
6547d8d95fbSHanoh Haim	__u8  reserved;
6557d8d95fbSHanoh Haim};
6567d8d95fbSHanoh Haim
6577d8d95fbSHanoh Haimstruct ibv_exp_kern_spec_ipv6_ext {
6587d8d95fbSHanoh Haim	__u32  type;
6597d8d95fbSHanoh Haim	__u16  size;
6607d8d95fbSHanoh Haim	__u16 reserved;
6617d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv6_ext_filter val;
6627d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv6_ext_filter mask;
6637d8d95fbSHanoh Haim};
6647d8d95fbSHanoh Haim
6657d8d95fbSHanoh Haimstruct ibv_exp_kern_ipv4_ext_filter {
6667d8d95fbSHanoh Haim	__u32 src_ip;
6677d8d95fbSHanoh Haim	__u32 dst_ip;
6687d8d95fbSHanoh Haim	__u8  proto;
6697d8d95fbSHanoh Haim	__u8  tos;
6707d8d95fbSHanoh Haim	__u8  ttl;
6717d8d95fbSHanoh Haim	__u8  flags;
6727d8d95fbSHanoh Haim};
6737d8d95fbSHanoh Haim
6747d8d95fbSHanoh Haimstruct ibv_exp_kern_spec_ipv4_ext {
6757d8d95fbSHanoh Haim	__u32  type;
6767d8d95fbSHanoh Haim	__u16  size;
6777d8d95fbSHanoh Haim	__u16 reserved;
6787d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv4_ext_filter val;
6797d8d95fbSHanoh Haim	struct ibv_exp_kern_ipv4_ext_filter mask;
6807d8d95fbSHanoh Haim};
6817d8d95fbSHanoh Haim
6827d8d95fbSHanoh Haimstruct ibv_exp_kern_tunnel_filter {
6837d8d95fbSHanoh Haim	__u32 tunnel_id;
6847d8d95fbSHanoh Haim};
6857d8d95fbSHanoh Haim
6867d8d95fbSHanoh Haimstruct ibv_exp_kern_spec_tunnel {
6877d8d95fbSHanoh Haim	__u32  type;
6887d8d95fbSHanoh Haim	__u16  size;
6897d8d95fbSHanoh Haim	__u16 reserved;
6907d8d95fbSHanoh Haim	struct ibv_exp_kern_tunnel_filter val;
6917d8d95fbSHanoh Haim	struct ibv_exp_kern_tunnel_filter mask;
6927d8d95fbSHanoh Haim};
6937d8d95fbSHanoh Haim
6947d8d95fbSHanoh Haimstruct ibv_exp_kern_spec_action_tag {
6957d8d95fbSHanoh Haim	__u32  type;
6967d8d95fbSHanoh Haim	__u16  size;
6977d8d95fbSHanoh Haim	__u16 reserved;
6987d8d95fbSHanoh Haim	__u32 tag_id;
6997d8d95fbSHanoh Haim	__u32 reserved1;
7007d8d95fbSHanoh Haim};
7017d8d95fbSHanoh Haim
7027d8d95fbSHanoh Haimstruct ibv_exp_kern_spec {
7037d8d95fbSHanoh Haim	union {
7047d8d95fbSHanoh Haim		struct {
7057d8d95fbSHanoh Haim			__u32 type;
7067d8d95fbSHanoh Haim			__u16 size;
7077d8d95fbSHanoh Haim			__u16 reserved;
7087d8d95fbSHanoh Haim		} hdr;
7097d8d95fbSHanoh Haim		struct ibv_kern_spec_ib ib;
7107d8d95fbSHanoh Haim		struct ibv_kern_spec_eth eth;
7117d8d95fbSHanoh Haim		struct ibv_kern_spec_ipv4 ipv4;
7127d8d95fbSHanoh Haim		struct ibv_exp_kern_spec_ipv4_ext ipv4_ext;
7137d8d95fbSHanoh Haim		struct ibv_kern_spec_tcp_udp tcp_udp;
7147d8d95fbSHanoh Haim		struct ibv_exp_kern_spec_ipv6 ipv6;
7157d8d95fbSHanoh Haim		struct ibv_exp_kern_spec_ipv6_ext ipv6_ext;
7167d8d95fbSHanoh Haim		struct ibv_exp_kern_spec_tunnel tunnel;
7177d8d95fbSHanoh Haim		struct ibv_exp_kern_spec_action_tag flow_tag;
7187d8d95fbSHanoh Haim	};
7197d8d95fbSHanoh Haim};
7207d8d95fbSHanoh Haim#endif /* KERN_ABI_EXP_H */
721