diff options
Diffstat (limited to 'external_libs/ibverbs/include/infiniband/kern-abi_exp.h')
-rw-r--r-- | external_libs/ibverbs/include/infiniband/kern-abi_exp.h | 722 |
1 files changed, 722 insertions, 0 deletions
diff --git a/external_libs/ibverbs/include/infiniband/kern-abi_exp.h b/external_libs/ibverbs/include/infiniband/kern-abi_exp.h new file mode 100644 index 00000000..b03f19fb --- /dev/null +++ b/external_libs/ibverbs/include/infiniband/kern-abi_exp.h @@ -0,0 +1,722 @@ +/* + * Copyright (c) 2005 Topspin Communications. All rights reserved. + * Copyright (c) 2005, 2006 Cisco Systems. All rights reserved. + * Copyright (c) 2005 PathScale, Inc. All rights reserved. + * + * This software is available to you under a choice of one of two + * licenses. You may choose to be licensed under the terms of the GNU + * General Public License (GPL) Version 2, available from the file + * COPYING in the main directory of this source tree, or the + * OpenIB.org BSD license below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef KERN_ABI_EXP_H +#define KERN_ABI_EXP_H + +#include <infiniband/kern-abi.h> + +/* + * This file must be kept in sync with the kernel's version of + * drivers/infiniband/include/ib_user_verbs_exp.h + */ + +enum { + IB_USER_VERBS_EXP_CMD_FIRST = 64 +}; + +enum { + IB_USER_VERBS_EXP_CMD_CREATE_QP, + IB_USER_VERBS_EXP_CMD_MODIFY_CQ, + IB_USER_VERBS_EXP_CMD_MODIFY_QP, + IB_USER_VERBS_EXP_CMD_CREATE_CQ, + IB_USER_VERBS_EXP_CMD_QUERY_DEVICE, + IB_USER_VERBS_EXP_CMD_CREATE_DCT, + IB_USER_VERBS_EXP_CMD_DESTROY_DCT, + IB_USER_VERBS_EXP_CMD_QUERY_DCT, + IB_USER_VERBS_EXP_CMD_ARM_DCT, + IB_USER_VERBS_EXP_CMD_CREATE_MR, + IB_USER_VERBS_EXP_CMD_QUERY_MKEY, + IB_USER_VERBS_EXP_CMD_REG_MR, + IB_USER_VERBS_EXP_CMD_PREFETCH_MR, + IB_USER_VERBS_EXP_CMD_REREG_MR, + IB_USER_VERBS_EXP_CMD_CREATE_WQ, + IB_USER_VERBS_EXP_CMD_MODIFY_WQ, + IB_USER_VERBS_EXP_CMD_DESTROY_WQ, + IB_USER_VERBS_EXP_CMD_CREATE_RWQ_IND_TBL, + IB_USER_VERBS_EXP_CMD_DESTROY_RWQ_IND_TBL, + IB_USER_VERBS_EXP_CMD_CREATE_FLOW, +}; + +enum { + IB_USER_VERBS_CMD_EXP_CREATE_WQ = + IB_USER_VERBS_EXP_CMD_CREATE_WQ + + IB_USER_VERBS_EXP_CMD_FIRST, + IB_USER_VERBS_CMD_EXP_MODIFY_WQ = + IB_USER_VERBS_EXP_CMD_MODIFY_WQ + + IB_USER_VERBS_EXP_CMD_FIRST, + IB_USER_VERBS_CMD_EXP_DESTROY_WQ = + IB_USER_VERBS_EXP_CMD_DESTROY_WQ + + IB_USER_VERBS_EXP_CMD_FIRST, + IB_USER_VERBS_CMD_EXP_CREATE_RWQ_IND_TBL = + IB_USER_VERBS_EXP_CMD_CREATE_RWQ_IND_TBL + + IB_USER_VERBS_EXP_CMD_FIRST, + IB_USER_VERBS_CMD_EXP_DESTROY_RWQ_IND_TBL = + IB_USER_VERBS_EXP_CMD_DESTROY_RWQ_IND_TBL + + IB_USER_VERBS_EXP_CMD_FIRST, + /* + * Set commands that didn't exist to -1 so our compile-time + * trick opcodes in IBV_INIT_CMD() doesn't break. + */ + IB_USER_VERBS_CMD_EXP_CREATE_WQ_V2 = -1, + IB_USER_VERBS_CMD_EXP_MODIFY_WQ_V2 = -1, + IB_USER_VERBS_CMD_EXP_DESTROY_WQ_V2 = -1, + IB_USER_VERBS_CMD_EXP_CREATE_RWQ_IND_TBL_V2 = -1, + IB_USER_VERBS_CMD_EXP_DESTROY_RWQ_IND_TBL_V2 = -1, +}; + +enum ibv_exp_create_qp_comp_mask { + IBV_EXP_CREATE_QP_CAP_FLAGS = (1ULL << 0), + IBV_EXP_CREATE_QP_INL_RECV = (1ULL << 1), + IBV_EXP_CREATE_QP_QPG = (1ULL << 2), + IBV_EXP_CREATE_QP_MAX_INL_KLMS = (1ULL << 3) +}; + +struct ibv_create_qpg_init_attrib { + __u32 tss_child_count; + __u32 rss_child_count; +}; + +struct ibv_create_qpg { + __u32 qpg_type; + union { + struct { + __u32 parent_handle; + __u32 reserved; + }; + struct ibv_create_qpg_init_attrib parent_attrib; + }; + __u32 reserved2; +}; + +enum ibv_exp_create_qp_kernel_flags { + IBV_EXP_CREATE_QP_KERNEL_FLAGS = IBV_EXP_QP_CREATE_CROSS_CHANNEL | + IBV_EXP_QP_CREATE_MANAGED_SEND | + IBV_EXP_QP_CREATE_MANAGED_RECV | + IBV_EXP_QP_CREATE_ATOMIC_BE_REPLY | + IBV_EXP_QP_CREATE_RX_END_PADDING | + IBV_EXP_QP_CREATE_SCATTER_FCS +}; + +struct ibv_exp_create_qp { + struct ex_hdr hdr; + __u64 comp_mask; + __u64 user_handle; + __u32 pd_handle; + __u32 send_cq_handle; + __u32 recv_cq_handle; + __u32 srq_handle; + __u32 max_send_wr; + __u32 max_recv_wr; + __u32 max_send_sge; + __u32 max_recv_sge; + __u32 max_inline_data; + __u8 sq_sig_all; + __u8 qp_type; + __u8 is_srq; + __u8 reserved; + __u64 qp_cap_flags; + __u32 max_inl_recv; + __u32 reserved1; + struct ibv_create_qpg qpg; + __u64 max_inl_send_klms; + struct { + __u64 rx_hash_fields_mask; + __u32 rwq_ind_tbl_handle; + __u8 rx_hash_function; + __u8 rx_hash_key_len; + __u8 rx_hash_key[128]; + __u16 reserved; + } rx_hash_info; + __u8 port_num; + __u8 reserved_2[7]; + __u64 driver_data[0]; +}; + +enum ibv_exp_create_qp_resp_comp_mask { + IBV_EXP_CREATE_QP_RESP_INL_RECV = (1ULL << 0), +}; + +struct ibv_exp_create_qp_resp { + __u64 comp_mask; + __u32 qp_handle; + __u32 qpn; + __u32 max_send_wr; + __u32 max_recv_wr; + __u32 max_send_sge; + __u32 max_recv_sge; + __u32 max_inline_data; + __u32 max_inl_recv; +}; + +struct ibv_exp_umr_caps_resp { + __u32 max_klm_list_size; + __u32 max_send_wqe_inline_klms; + __u32 max_umr_recursion_depth; + __u32 max_umr_stride_dimension; +}; + +struct ibv_exp_odp_caps_resp { + __u64 general_odp_caps; + struct { + __u32 rc_odp_caps; + __u32 uc_odp_caps; + __u32 ud_odp_caps; + __u32 dc_odp_caps; + __u32 xrc_odp_caps; + __u32 raw_eth_odp_caps; + } per_transport_caps; +}; + +struct ibv_exp_query_device { + struct ex_hdr hdr; + __u64 comp_mask; + __u64 driver_data[0]; +}; + +struct ibv_exp_rx_hash_caps_resp { + __u32 max_rwq_indirection_tables; + __u32 max_rwq_indirection_table_size; + __u64 supported_packet_fields; + __u32 supported_qps; + __u8 supported_hash_functions; + __u8 reserved[3]; +}; + +struct ibv_exp_mp_rq_caps_resp { + __u32 supported_qps; /* use ibv_exp_supported_qp_types */ + __u32 allowed_shifts; /* use ibv_exp_mp_rq_shifts */ + __u8 min_single_wqe_log_num_of_strides; + __u8 max_single_wqe_log_num_of_strides; + __u8 min_single_stride_log_num_of_bytes; + __u8 max_single_stride_log_num_of_bytes; + __u32 reserved; +}; + +struct ibv_exp_ec_caps_resp { + __u32 max_ec_data_vector_count; + __u32 max_ec_calc_inflight_calcs; +}; + +struct ibv_exp_masked_atomic_caps { + __u32 max_fa_bit_boundary; + __u32 log_max_atomic_inline; + __u64 masked_log_atomic_arg_sizes; + __u64 masked_log_atomic_arg_sizes_network_endianness; +}; + +struct ibv_exp_lso_caps_resp { + __u32 max_tso; + __u32 supported_qpts; +}; + +struct ibv_exp_packet_pacing_caps_resp { + __u32 qp_rate_limit_min; + __u32 qp_rate_limit_max; /* In kbps */ + __u32 supported_qpts; + __u32 reserved; +}; + +struct ibv_exp_query_device_resp { + __u64 comp_mask; + __u64 fw_ver; + __u64 node_guid; + __u64 sys_image_guid; + __u64 max_mr_size; + __u64 page_size_cap; + __u32 vendor_id; + __u32 vendor_part_id; + __u32 hw_ver; + __u32 max_qp; + __u32 max_qp_wr; + __u32 device_cap_flags; + __u32 max_sge; + __u32 max_sge_rd; + __u32 max_cq; + __u32 max_cqe; + __u32 max_mr; + __u32 max_pd; + __u32 max_qp_rd_atom; + __u32 max_ee_rd_atom; + __u32 max_res_rd_atom; + __u32 max_qp_init_rd_atom; + __u32 max_ee_init_rd_atom; + __u32 exp_atomic_cap; + __u32 max_ee; + __u32 max_rdd; + __u32 max_mw; + __u32 max_raw_ipv6_qp; + __u32 max_raw_ethy_qp; + __u32 max_mcast_grp; + __u32 max_mcast_qp_attach; + __u32 max_total_mcast_qp_attach; + __u32 max_ah; + __u32 max_fmr; + __u32 max_map_per_fmr; + __u32 max_srq; + __u32 max_srq_wr; + __u32 max_srq_sge; + __u16 max_pkeys; + __u8 local_ca_ack_delay; + __u8 phys_port_cnt; + __u8 reserved[4]; + __u64 timestamp_mask; + __u64 hca_core_clock; + __u64 device_cap_flags2; + __u32 dc_rd_req; + __u32 dc_rd_res; + __u32 inline_recv_sz; + __u32 max_rss_tbl_sz; + __u64 log_atomic_arg_sizes; + __u32 max_fa_bit_boundary; + __u32 log_max_atomic_inline; + struct ibv_exp_umr_caps_resp umr_caps; + struct ibv_exp_odp_caps_resp odp_caps; + __u32 max_dct; + __u32 max_ctx_res_domain; + struct ibv_exp_rx_hash_caps_resp rx_hash; + __u32 max_wq_type_rq; + __u32 max_device_ctx; + struct ibv_exp_mp_rq_caps_resp mp_rq_caps; + __u16 wq_vlan_offloads_cap; + __u8 reserved1[6]; + struct ibv_exp_ec_caps_resp ec_caps; + struct ibv_exp_masked_atomic_caps masked_atomic_caps; + __u16 rx_pad_end_addr_align; + __u8 reserved2[6]; + struct ibv_exp_lso_caps_resp tso_caps; + struct ibv_exp_packet_pacing_caps_resp packet_pacing_caps; +}; + +struct ibv_exp_create_dct { + struct ex_hdr hdr; + __u64 comp_mask; + __u64 user_handle; + __u32 pd_handle; + __u32 cq_handle; + __u32 srq_handle; + __u32 access_flags; + __u64 dc_key; + __u32 flow_label; + __u8 min_rnr_timer; + __u8 tclass; + __u8 port; + __u8 pkey_index; + __u8 gid_index; + __u8 hop_limit; + __u8 mtu; + __u8 rsvd0; + __u32 create_flags; + __u32 inline_size; + __u32 rsvd1; + __u64 driver_data[0]; +}; + +struct ibv_exp_create_dct_resp { + __u32 dct_handle; + __u32 dct_num; + __u32 inline_size; + __u32 rsvd; +}; + +struct ibv_exp_destroy_dct { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 dct_handle; + __u32 rsvd; + __u64 driver_data[0]; +}; + +struct ibv_exp_destroy_dct_resp { + __u32 events_reported; + __u32 reserved; +}; + +struct ibv_exp_query_dct { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 dct_handle; + __u32 reserved; + __u64 driver_data[0]; +}; + +struct ibv_exp_query_dct_resp { + __u64 dc_key; + __u32 access_flags; + __u32 flow_label; + __u32 key_violations; + __u8 port; + __u8 min_rnr_timer; + __u8 tclass; + __u8 mtu; + __u8 pkey_index; + __u8 gid_index; + __u8 hop_limit; + __u8 state; + __u32 rsvd; + __u64 driver_data[0]; +}; + +struct ibv_exp_arm_dct { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 dct_handle; + __u32 reserved; + __u64 driver_data[0]; +}; + +struct ibv_exp_arm_dct_resp { + __u64 reserved; +}; + +struct ibv_exp_modify_cq { + struct ex_hdr hdr; + __u32 cq_handle; + __u32 attr_mask; + __u16 cq_count; + __u16 cq_period; + __u32 cq_cap_flags; + __u32 comp_mask; + __u32 rsvd; +}; + +struct ibv_exp_modify_qp { + struct ex_hdr hdr; + __u32 comp_mask; + struct ibv_qp_dest dest; + struct ibv_qp_dest alt_dest; + __u32 qp_handle; + __u32 attr_mask; + __u32 qkey; + __u32 rq_psn; + __u32 sq_psn; + __u32 dest_qp_num; + __u32 qp_access_flags; + __u16 pkey_index; + __u16 alt_pkey_index; + __u8 qp_state; + __u8 cur_qp_state; + __u8 path_mtu; + __u8 path_mig_state; + __u8 en_sqd_async_notify; + __u8 max_rd_atomic; + __u8 max_dest_rd_atomic; + __u8 min_rnr_timer; + __u8 port_num; + __u8 timeout; + __u8 retry_cnt; + __u8 rnr_retry; + __u8 alt_port_num; + __u8 alt_timeout; + __u8 reserved[6]; + __u64 dct_key; + __u32 exp_attr_mask; + __u32 flow_entropy; + __u64 driver_data[0]; + __u32 rate_limit; + __u32 reserved1; +}; + +enum ibv_exp_create_cq_comp_mask { + IBV_EXP_CREATE_CQ_CAP_FLAGS = (uint64_t)1 << 0, +}; + +struct ibv_exp_create_cq { + struct ex_hdr hdr; + __u64 comp_mask; + __u64 user_handle; + __u32 cqe; + __u32 comp_vector; + __s32 comp_channel; + __u32 reserved; + __u64 create_flags; + __u64 driver_data[0]; +}; + +struct ibv_exp_create_mr { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 pd_handle; + __u32 max_klm_list_size; + __u64 exp_access_flags; + __u32 create_flags; + __u32 reserved; + __u64 driver_data[0]; +}; + +struct ibv_exp_create_mr_resp { + __u64 comp_mask; + __u32 handle; + __u32 lkey; + __u32 rkey; + __u32 reserved; + __u64 driver_data[0]; +}; + +struct ibv_exp_query_mkey { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 handle; + __u32 lkey; + __u32 rkey; + __u32 reserved; + __u64 driver_data[0]; +}; + +struct ibv_exp_query_mkey_resp { + __u64 comp_mask; + __u32 max_klm_list_size; + __u32 reserved; + __u64 driver_data[0]; +}; + +enum ibv_exp_reg_mr_comp_mask { + IBV_EXP_REG_MR_EXP_ACCESS_FLAGS = 1ULL << 0, +}; + +struct ibv_exp_reg_mr { + struct ex_hdr hdr; + __u64 start; + __u64 length; + __u64 hca_va; + __u32 pd_handle; + __u32 reserved; + __u64 exp_access_flags; + __u64 comp_mask; +}; + +struct ibv_exp_prefetch_mr { + struct ex_hdr hdr; + __u64 comp_mask; + __u32 mr_handle; + __u32 flags; + __u64 start; + __u64 length; +}; + +struct ibv_exp_reg_mr_resp { + __u32 mr_handle; + __u32 lkey; + __u32 rkey; + __u32 reserved; + __u64 comp_mask; +}; + +struct ibv_exp_rereg_mr { + struct ex_hdr hdr; + __u32 comp_mask; + __u32 mr_handle; + __u32 flags; + __u32 reserved; + __u64 start; + __u64 length; + __u64 hca_va; + __u32 pd_handle; + __u32 access_flags; +}; + +struct ibv_exp_rereg_mr_resp { + __u32 comp_mask; + __u32 lkey; + __u32 rkey; + __u32 reserved; +}; + +struct ibv_exp_cmd_wq_mp_rq { + __u32 use_shift; /* use ibv_exp_mp_rq_shifts */ + __u8 single_wqe_log_num_of_strides; + __u8 single_stride_log_num_of_bytes; + __u16 reserved; +}; + +enum ibv_exp_cmd_create_wq_comp_mask { + IBV_EXP_CMD_CREATE_WQ_MP_RQ = 1 << 0, + IBV_EXP_CMD_CREATE_WQ_VLAN_OFFLOADS = 1 << 1, + IBV_EXP_CMD_CREATE_WQ_FLAGS = 1 << 2, +}; + +struct ibv_exp_create_wq { + struct ex_hdr hdr; + __u32 comp_mask; /* enum ibv_exp_cmd_create_wq_comp_mask */ + __u32 wq_type; /* enum ibv_exp_wq_type */ + __u64 user_handle; + __u32 pd_handle; + __u32 cq_handle; + __u32 srq_handle; + __u32 max_recv_wr; + __u32 max_recv_sge; + __u32 reserved; + struct ibv_exp_cmd_wq_mp_rq mp_rq; + __u16 wq_vlan_offloads; + __u8 reserved1[6]; + __u64 flags; +}; + +struct ibv_exp_create_wq_resp { + __u32 comp_mask; + __u32 response_length; + __u32 wq_handle; + __u32 max_recv_wr; + __u32 max_recv_sge; + __u32 wqn; +}; + +struct ib_exp_destroy_wq { + struct ex_hdr hdr; + __u32 comp_mask; + __u32 wq_handle; +}; + +struct ib_exp_modify_wq { + struct ex_hdr hdr; + __u32 comp_mask; + __u32 wq_handle; + __u32 wq_state; + __u32 curr_wq_state; + __u16 wq_vlan_offloads; + __u8 reserved[6]; +}; + +struct ibv_exp_create_rwq_ind_table { + struct ex_hdr hdr; + __u32 comp_mask; + __u32 pd_handle; + __u32 log_ind_tbl_size; + __u32 reserved; + /* Following are wq handles based on log_ind_tbl_size, must be 64 bytes aligned. + * __u32 wq_handle1 + * __u32 wq_handle2 + */ +}; + +struct ibv_exp_create_rwq_ind_table_resp { + __u32 comp_mask; + __u32 response_length; + __u32 ind_tbl_handle; + __u32 ind_tbl_num; +}; + +struct ibv_exp_destroy_rwq_ind_table { + struct ex_hdr hdr; + __u32 comp_mask; + __u32 ind_tbl_handle; +}; + +struct ibv_exp_kern_ipv6_filter { + __u8 src_ip[16]; + __u8 dst_ip[16]; +}; + +struct ibv_exp_kern_spec_ipv6 { + __u32 type; + __u16 size; + __u16 reserved; + struct ibv_exp_kern_ipv6_filter val; + struct ibv_exp_kern_ipv6_filter mask; +}; + +struct ibv_exp_kern_ipv6_ext_filter { + __u8 src_ip[16]; + __u8 dst_ip[16]; + __u32 flow_label; + __u8 next_hdr; + __u8 traffic_class; + __u8 hop_limit; + __u8 reserved; +}; + +struct ibv_exp_kern_spec_ipv6_ext { + __u32 type; + __u16 size; + __u16 reserved; + struct ibv_exp_kern_ipv6_ext_filter val; + struct ibv_exp_kern_ipv6_ext_filter mask; +}; + +struct ibv_exp_kern_ipv4_ext_filter { + __u32 src_ip; + __u32 dst_ip; + __u8 proto; + __u8 tos; + __u8 ttl; + __u8 flags; +}; + +struct ibv_exp_kern_spec_ipv4_ext { + __u32 type; + __u16 size; + __u16 reserved; + struct ibv_exp_kern_ipv4_ext_filter val; + struct ibv_exp_kern_ipv4_ext_filter mask; +}; + +struct ibv_exp_kern_tunnel_filter { + __u32 tunnel_id; +}; + +struct ibv_exp_kern_spec_tunnel { + __u32 type; + __u16 size; + __u16 reserved; + struct ibv_exp_kern_tunnel_filter val; + struct ibv_exp_kern_tunnel_filter mask; +}; + +struct ibv_exp_kern_spec_action_tag { + __u32 type; + __u16 size; + __u16 reserved; + __u32 tag_id; + __u32 reserved1; +}; + +struct ibv_exp_kern_spec { + union { + struct { + __u32 type; + __u16 size; + __u16 reserved; + } hdr; + struct ibv_kern_spec_ib ib; + struct ibv_kern_spec_eth eth; + struct ibv_kern_spec_ipv4 ipv4; + struct ibv_exp_kern_spec_ipv4_ext ipv4_ext; + struct ibv_kern_spec_tcp_udp tcp_udp; + struct ibv_exp_kern_spec_ipv6 ipv6; + struct ibv_exp_kern_spec_ipv6_ext ipv6_ext; + struct ibv_exp_kern_spec_tunnel tunnel; + struct ibv_exp_kern_spec_action_tag flow_tag; + }; +}; +#endif /* KERN_ABI_EXP_H */ |