# Copyright 2019 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found
# in the LICENSE file.

# TODO: This needs some fixups according to PR review:
# https://github.com/google/syzkaller/pull/1053
# In the meantime, add it as is.

include <uapi/linux/fcntl.h>
include <rdma/ib_verbs.h>
include <rdma/rdma_user_ioctl.h>
include <rdma/ib_user_ioctl_verbs.h>
include <rdma/mlx5-abi.h>
include <uapi/rdma/ib_user_ioctl_cmds.h>
include <uapi/rdma/mlx5_user_ioctl_cmds.h>

# resources
resource fd_rdma[fd]
resource pd_handle[int32]
resource ah_handle[int32]
resource mr_handle[int32]
resource mr_rkey[int32]
resource mr_lkey[int32]
resource cq_handle[int32]
resource qp_handle[int32]
resource qp_number[int32]
resource mw_handle[int32]
resource srq_handle[int32]
resource xrcd_handle[int32]
resource wq_handle[int32]
resource ind_tbl_handle[int32]
resource flow_handle[int32]

# defines
define IB_USER_VERBS_EX_CMD_QUERY_DEVICE	0x80000001
define IB_USER_VERBS_EX_CMD_CREATE_FLOW	0x80000032
define IB_USER_VERBS_EX_CMD_DESTROY_FLOW	0x80000033
define MLX5_CREATE_DCT	0x8
define MLX5_CREATE_DCI	0x16
define IB_USER_VERBS_CMD_FLAG_EXTENDED	0x80000000
define IB_USER_VERBS_CMD_FLAGS_SHIFT	24
define IB_USER_VERBS_CMD_THRESHOLD	50
define IB_USER_VERBS_CMD_CREATE_CQ	0x12
define IB_USER_VERBS_CMD_CREATE_QP	0x18
define EX_CREATE_CQ_CMD	IB_USER_VERBS_CMD_FLAG_EXTENDED | IB_USER_VERBS_CMD_CREATE_CQ
define EX_CREATE_QP_CMD	IB_USER_VERBS_CMD_FLAG_EXTENDED | IB_USER_VERBS_CMD_CREATE_QP

# flags
rdma_dev_open_flags = O_RDWR, O_CLOEXEC
ib_access_flags = IB_ACCESS_LOCAL_WRITE, IB_ACCESS_REMOTE_WRITE, IB_ACCESS_REMOTE_READ, IB_ACCESS_REMOTE_ATOMIC, IB_ACCESS_MW_BIND, IB_ZERO_BASED, IB_ACCESS_ON_DEMAND
ib_mr_rereg_flags = IB_MR_REREG_TRANS, IB_MR_REREG_PD, IB_MR_REREG_ACCESS, IB_MR_REREG_SUPPORTED
ib_qp_type = IB_QPT_SMI, IB_QPT_GSI, IB_QPT_RC, IB_QPT_UC, IB_QPT_UD, IB_QPT_RAW_IPV6, IB_QPT_RAW_ETHERTYPE, IB_QPT_RAW_PACKET, IB_QPT_XRC_INI, IB_QPT_XRC_TGT
ib_qp_create_flags = IB_QP_CREATE_IPOIB_UD_LSO, IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK, IB_QP_CREATE_CROSS_CHANNEL, IB_QP_CREATE_MANAGED_SEND, IB_QP_CREATE_MANAGED_RECV, IB_QP_CREATE_NETIF_QP, IB_QP_CREATE_INTEGRITY_EN, IB_QP_CREATE_SCATTER_FCS
ib_send_flags = IB_SEND_FENCE, IB_SEND_SIGNALED, IB_SEND_SOLICITED, IB_SEND_INLINE, IB_SEND_IP_CSUM
ib_flow_flags = IB_FLOW_ATTR_FLAGS_DONT_TRAP
ib_ipv4_flags = IB_IPV4_DONT_FRAG, IB_IPV4_MORE_FRAG
mlx5_create_qp_flags = MLX5_QP_FLAG_SIGNATURE, MLX5_QP_FLAG_SCATTER_CQE, MLX5_QP_FLAG_TUNNEL_OFFLOADS, MLX5_QP_FLAG_BFREG_INDEX, MLX5_CREATE_DCT, MLX5_CREATE_DCI
mlx5_create_cq_flags = 0
create_cq_ex_flags = IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION, IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN
create_cq_ex_mask = 0x0, 0x1
mlx5_comp_cqe_res_format = MLX5_IB_CQE_RES_FORMAT_HASH, MLX5_IB_CQE_RES_FORMAT_CSUM
wq_type = IB_WQT_RQ
create_wq_flags = IB_WQ_FLAGS_CVLAN_STRIPPING, IB_WQ_FLAGS_SCATTER_FCS, IB_WQ_FLAGS_DELAY_DROP, IB_WQ_FLAGS_PCI_WRITE_END_PADDING
modify_wq_attr_flags = IB_WQ_STATE, IB_WQ_CUR_STATE, IB_WQ_FLAGS
modify_wq_flags = IB_WQ_FLAGS_CVLAN_STRIPPING, IB_WQ_FLAGS_SCATTER_FCS, IB_WQ_FLAGS_DELAY_DROP, IB_WQ_FLAGS_PCI_WRITE_END_PADDING
srq_type = IB_SRQT_BASIC, IB_SRQT_XRC, IB_SRQT_TM
create_srq_ex_flags = MLX5_SRQ_FLAG_SIGNATURE

# structs
# =======

# context
# ===========

mlx5_get_context_cmd_resp {
	async_fd			int32
	num_comp_vectors		int32
	qp_tab_size			int32
	bf_reg_size			int32
	tot_uuars			int32
	cache_line_size			int32
	max_sq_desc_sz			int16
	max_rq_desc_sz			int16
	max_send_wqebb			int32
	max_recv_wr			int32
	max_srq_recv_wr			int32
	num_ports			int16
	reserved1			const[0x0, int16]
	comp_mask			int32[0:1]
	response_length			int32
	cqe_version_cmds_supp_uhw	int16
	reserved2			const[0x0, int16]
	hca_core_clock_offset		int64
	log_uar_size			int32
	num_uars_per_page		int32
	num_dyn_bfregs			int32
	reserved3			const[0x0, int32]
}

mlx5_get_context_cmd {
	command			const[0x0, int32]
	in_words		const[0xc, int16]
	out_words		const[0x12, int16]
	response		ptr[out, mlx5_get_context_cmd_resp]
	total_num_uuars		int32
	num_low_latency_uuars	int32
	flags			int32
	comp_mask		int32
	cqe_version		int16
	reserved1		const[0x0, int16]
	reserved2		const[0x0, int32]
	lib_caps		int64
}

# query_device
# ================

query_device_resp_ex {
	fw_ver				int64
	node_guid			int64
	sys_image_guid			int64
	max_mr_size			int64
	page_size_cap			int64
	vendor_id			int32
	vendor_part_id			int32
	hw_ver				int32
	max_qp				int32
	max_qp_wr			int32
	device_cap_flags		int32
	max_sge				int32
	max_sge_rd			int32
	max_cq				int32
	max_cqe				int32
	max_mr				int32
	max_qp_rd_atom			int32
	max_ee_rd_atom			int32
	max_res_rd_atom			int32
	max_qp_init_rd_atom		int32
	max_ee_init_rd_atom		int32
	atomic_cap			int32
	max_ee				int32
	max_rdd				int32
	max_mw				int32
	max_raw_ipv6_qp			int32
	max_raw_ethy_qp			int32
	max_mcast_grp			int32
	max_mcast_qp_attach		int32
	max_total_mcast_qp_attach	int32
	max_ah				int32
	max_fmr				int32
	max_map_per_fmr			int32
	max_srq				int32
	max_srq_wr			int32
	max_srq_sge			int32
	max_pkeys			int16
	local_ca_ack_delay		int8
	phys_port_cnt			int8
	reserved			const[0x0, int32]
	comp_mask			const[0x0, int32]
	response_length			int32
	general_caps			int64
	rc_odp_caps			int32
	uc_odp_caps			int32
	ud_odp_caps			int32
	reserved_odp			const[0x0, int32]
	timestamp_mask			int64
	hca_core_clock			int64
	device_cap_flags_ex		int64
	supported_qpts			int32
	max_rwq_indirection_tables	int32
	max_rwq_indirection_table_size	int32
	reserved_rss			const[0x0, int32]
	max_wq_type_rq			int32
	raw_packet_caps			int32
	max_rndv_hdr_size		int32
	max_num_tags			int32
	flags				int32
	max_ops				int32
	max_sge_tm			int32
	reserved_tm			int32
	max_cq_moderation_count		int16
	max_cq_moderation_period	int16
	reserved_cq_mod			int32
	max_dm_size			int64
}

query_device_cmd_ex {
	command			const[IB_USER_VERBS_EX_CMD_QUERY_DEVICE, int32]
	in_words		const[0x1, int16]
	out_words		bytesize4[response, int16]
	response		ptr[out, query_device_resp_ex]
	provider_in_words	const[0x0, int16]
	provider_out_words	const[0x8, int16]
	reserved		const[0x0, int32]
	comp_mask		const[0x0, int32]
	reserved1		const[0x0, int32]
}

# query_port
# ==============

query_port_cmd {
	command		const[0x2, int32]
	in_words	const[0x6, int16]
	out_words	const[0xa, int16]
	response	int64
	port_num	const[0x1, int8]
	reserved	array[int8, 7]
	driver_data	array[int64]
}

# pd
# ======

alloc_pd_cmd {
	command		const[0x3, int32]
	in_words	bytesize4[parent, int16]
	out_words	bytesize4[response, int16]
	response	ptr[out, alloc_pd_cmd_resp]
	driver_data	array[int64]
}

mlx5_alloc_pd_cmd {
	command		const[0x3, int32]
	in_words	bytesize4[parent, int16]
	out_words	bytesize4[response, int16]
	response	ptr[out, mlx5_alloc_pd_cmd_resp]
	driver_data	array[int64]
}

alloc_pd_cmd_resp {
	pd_handle	pd_handle
}

mlx5_alloc_pd_cmd_resp {
	pd_handle	pd_handle
	pdn		int32
}

dealloc_pd_cmd {
	command		const[0x4, int32]
	in_words	const[0x6, int16]
	out_words	const[0, int16]
	pd_handle	pd_handle
}

# ah
# ===

create_ah_cmd_resp {
	ah_handle	ah_handle
}

create_ah_cmd {
	command		const[0x5, int32]
	in_words	bytesize4[parent, int16]
	out_words	bytesize4[response, int16]
	response	ptr[out, create_ah_cmd_resp]
	user_handle	int64
	pd_handle	pd_handle
	reserved	const[0x0, int32]
	dgid		array[int8, 16]
	flow_label	int32
	sgid_index	const[0x0, int8]
	hop_limit	int8
	traffic_class	int8
	reserved1	int8
	dlid		int16
	sl		int8
	src_path_bits	int8
	static_rate	int8
	is_global	int8
	port_num	const[0x1, int8]
	reserved2	int8
}

destroy_ah_cmd {
	command		const[0x8, int32]
	in_words	bytesize4[parent, int16]
	out_words	const[0x0, int16]
}

# mr
# ======

reg_mr_resp {
	mr_handle	mr_handle
	lkey		mr_lkey
	rkey		mr_rkey
}

reg_mr_cmd {
	command		const[0x9, int32]
	in_words	const[0xc, int16]
	out_words	const[0x3, int16]
	response	ptr[out, reg_mr_resp]
	start		ptr[in, int64]
	length		len[start, int64]
	hca_va		ptr[out, int64]
	pd_handle	pd_handle
	access_flags	flags[ib_access_flags, int32]
	driver_data	array[int64]
}

rereg_mr_resp {
	lkey	mr_lkey
	rkey	mr_rkey
}

rereg_mr_cmd {
	command		const[0xb, int32]
	in_words	const[0xe, int16]
	out_words	const[0x2, int16]
	response	ptr[out, rereg_mr_resp]
	mr_handle	mr_handle
	flags		flags[ib_mr_rereg_flags, int32]
	start		ptr[in, int64]
	length		len[start, int64]
	hca_va		ptr[out, int64]
	pd_handle	pd_handle
	access_flags	flags[ib_access_flags, int32]
	driver_data	array[int64]
}

dereg_mr_cmd {
	command		const[0xd, int32]
	in_words	const[0x3, int16]
	out_words	const[0x0, int16]
	mr_handle	mr_handle
}

alloc_mw_resp {
	mw_handle	mw_handle
	rkey		mr_rkey
}

alloc_mw_cmd {
	command		const[0xe, int32]
	in_words	const[0x6, int16]
	out_words	const[0x2, int16]
	response	ptr[out, alloc_mw_resp]
	pd_handle	pd_handle
	mw_type		int8[1:2]
	reserved0	const[0x0, int8]
	reserved1	const[0x0, int16]
}

dealloc_mw_cmd {
	command		const[0x10, int32]
	in_words	const[0x4, int16]
	out_words	const[0x0, int16]
	mw_handle	mw_handle
	reserved	const[0x0, int32]
}

# completion channel
# ==================

create_comp_channel_resp {
	fd	int32
}

create_comp_channel_cmd {
	command		const[0x11, int32]
	in_words	const[0x6, int16]
	out_words	const[0x1, int16]
	response	ptr[out, create_comp_channel_resp]
}

# cq
# ======

create_cq_resp {
	cq_handle	cq_handle
	cqe		int32
}

mlx5_create_cq_cmd {
	command			const[EX_CREATE_CQ_CMD, int32]
	in_words		bytesize4[parent, int16]
	out_words		bytesize4[response, int16]
	response		ptr[out, create_cq_resp]
	provider_in_words	const[0x5, int16]
	provider_out_words	const[0x1, int16]
	reserved0		const[0x0, int32]
	user_handle		int64
	cqe			int32
	comp_vector		int32
	comp_channel		const[0xffffffff, int32]
	comp_mask		flags[create_cq_ex_mask, int32]
	reserved1		const[0x0, int32]
	buf_addr		ptr[in, array[int8, 4096]]
	db_addr			ptr[in, array[int8, 4096]]
	cqe_size		const[0x40, int32]
	cqe_comp_en		int8[0:1]
	cqe_comp_res_format	flags[mlx5_comp_cqe_res_format, int8]
	flags			flags[mlx5_create_cq_flags, int16]
}

# this fails a lot on Mellanox HW. Leaving for others providers' sake and
# adding mlx5_create_cq instead, which defines driver data properly.
create_cq_cmd {
	command		const[0x12, int32]
	in_words	const[0x10, int16]
	out_words	const[0x3, int16]
	reponse		ptr[out, create_cq_resp]
	user_handle	int64
	cqe		int32
	comp_vector	int32
	comp_channel	int32
	reserved	const[0x0, int32]
	driver_data	array[int64]
}

create_cq_ex_cmd {
	command			const[EX_CREATE_CQ_CMD, int32]
	in_words		const[0x4, int16]
	out_words		const[0x2, int16]
	response		ptr[out, create_cq_resp]
	provider_in_words	const[0x5, int16]
	provider_out_words	const[0x1, int16]
	reserved0		const[0x0, int32]
	user_handle		int64
	cqe			int32
	comp_vector		const[0x0, int32]
	comp_channel		const[0xffffffff, int32]
	comp_mask		flags[create_cq_ex_mask, int32]
	flags			flags[create_cq_ex_flags, int32]
	reserved1		const[0x0, int32]
}

resize_cq_resp {
	cqe		int32
	reserved	const[0x0, int32]
	driver_data	array[int64]
}

resize_cq_cmd {
	command		const[0x13, int32]
	in_words	const[0xa, int16]
	out_words	const[0x2, int16]
	response	ptr[out, resize_cq_resp]
	cq_handle	cq_handle
	cqe		int32
	driver_data	array[int64]
}

destroy_cq_resp {
	comp_events_reported	int32
	async_events_reported	int32
}

destroy_cq_cmd {
	command		const[0x14, int32]
	in_words	const[0x6, int16]
	out_words	const[0x2, int16]
	response	ptr[out, destroy_cq_resp]
	cq_handle	cq_handle
	reserved	const[0x0, int32]
}

kern_wc {
	wr_id		int64
	status		int32
	opcode		int32
	vendor_err	int32
	byte_len	int32
	imm_data	int32
	qp_num		int32
	src_qp		int32
	wc_flags	int32
	pkey_index	int16
	slid		int16
	sl		int8
	dlid_path_bits	int8
	port_num	int8
	reserved	const[0x0, int8]
}

poll_cq_resp {
	count		int32
	reserved	const[0x0, int32]
	wc		array[kern_wc]
}

poll_cq_cmd {
	command		const[0x15, int32]
	in_words	const[0x6, int16]
	out_words	const[0x2, int16]
	response	ptr[out, poll_cq_resp]
	cq_handle	cq_handle
	ne		int32
}

req_notify_cq_cmd {
	command		const[0x17, int32]
	in_words	const[0x4, int16]
	out_words	const[0x0, int16]
	cq_handle	cq_handle
	solicited	int32[0x0:0x1]
}

# qp_ex
# =========

create_qp_resp {
	qp_handle	qp_handle
	qpn		qp_number
	max_send_wr	int32
	max_recv_wr	int32
	max_send_sge	int32
	max_recv_sge	int32
	max_inline_data	int32
	reserved	const[0x0, int32]
}

create_qp_cmd {
	command		const[0x18, int32]
	in_words	bytesize4[parent, int16]
	out_words	bytesize4[response, int16]
	response	ptr[out, create_qp_resp]
	user_handle	int64
	pd_handle	pd_handle
	send_cq_handle	cq_handle
	recv_cq_handle	cq_handle
	srq_handle	srq_handle
	max_send_wr	int32
	max_recv_wr	int32
	max_send_sge	int32
	max_recv_sge	int32
	max_inline_data	int32
	sq_sig_all	int8
	qp_type		flags[ib_qp_type, int8]
	is_srq		int8[0:1]
	reserved1	const[0x0, int8]
	driver_data	array[int64]
}

mlx5_create_qp_cmd {
	command		const[EX_CREATE_QP_CMD, int32]
	in_words	bytesize4[parent, int16]
	out_words	bytesize4[response, int16]
	response	ptr[out, create_qp_resp]
	user_handle	int64
	pd_handle	pd_handle
	send_cq_handle	cq_handle
	recv_cq_handle	cq_handle
	srq_handle	srq_handle
	max_send_wr	int32
	max_recv_wr	int32
	max_send_sge	int32
	max_recv_sge	int32
	max_inline_data	int32
	sq_sig_all	int8
	qp_type		flags[ib_qp_type, int8]
	is_srq		int8[0:1]
	reserved0	const[0x0, int8]
	buf_addr	ptr[in, array[int8, 4096]]
	db_addr		ptr[in, array[int8, 4096]]
	sq_wqe_count	int32
	rq_wqe_count	int32
	rq_wqe_shift	int32
	flags		flags[mlx5_create_qp_flags, int32]
	uidx		int32
	bfreg_index	int32
	sq_buf_addr	ptr[in, array[int8, 4096]]
} [packed]

mlx5_create_qp_resp {
	qp_handle	qp_handle
	qpn		qp_number
	max_send_wr	int32
	max_recv_wr	int32
	max_send_sge	int32
	max_recv_sge	int32
	max_inline_data	int32
	reserved0	const[0x0, int32]
	uuar_index	int32
}

mlx5_create_dv_qp_cmd {
	command		const[0x18, int32]
	in_words	const[0x1c, int16]
	out_words	const[0x9, int16]
	response	ptr[out, mlx5_create_qp_resp]
	user_handle	int64
	pd_handle	pd_handle
	send_cq_handle	cq_handle
	recv_cq_handle	cq_handle
	srq_handle	srq_handle
	max_send_wr	int32
	max_recv_wr	int32
	max_send_sge	int32
	max_recv_sge	int32
	max_inline_data	int32
	sq_sig_all	int8
	qp_type		const[0xff, int8]
	is_srq		int8
	reserved0	const[0x0, int8]
	driver_data	array[int64]
	buf_addr	ptr[in, array[int8, 4096]]
	db_addr		ptr[in, array[int8, 4096]]
	sq_wqe_count	int32
	rq_wqe_count	int32
	rq_wqe_shift	int32
	flags		int32
	uidx		int32
	reserved1	const[0x0, int32]
	access_key	int64
} [packed]

destroy_qp_resp {
	events_reported	int32
}

destroy_qp_cmd {
	command		const[0x1b, int32]
	in_words	const[0x6, int16]
	out_words	const[0x1, int16]
	response	ptr[out, destroy_qp_resp]
	qp_handle	qp_handle
	reserved	const[0x0, int32]
}

query_qp_resp {
	dest_dgid		array[int8, 16]
	dest_flow_label		int32
	dest_dlid		int16
	dest_reserved		const[0x0, int16]
	dest_sgid_index		int8
	dest_hop_limit		int8
	dest_traffic_class	int8
	dest_sl			int8
	dest_src_path_bits	int8
	dest_static_rate	int8
	dest_is_global		int8
	dest_port_num		int8
	alt_dest_dgid		array[int8, 16]
	alt_dest_flow_label	int32
	alt_dest_dlid		int16
	alt_dest_reserved	const[0x0, int16]
	alt_dest_sgid_index	int8
	alt_dest_hop_limit	int8
	alt_dest_traffic_class	int8
	alt_dest_sl		int8
	alt_dest_src_path_bits	int8
	alt_dest_static_rate	int8
	alt_dest_is_global	int8
	alt_dest_port_num	int8
	max_send_wr		int32
	max_recv_wr		int32
	max_send_sge		int32
	max_recv_sge		int32
	max_inline_data		int32
	qkey			int32
	rq_psn			int32
	sq_psn			int32
	dest_qp_num		int32
	qp_access_flags		int32
	pkey_index		int16
	alt_pkey_index		int16
	qp_state		int8
	cur_qp_state		int8
	path_mtu		int8
	path_mig_state		int8
	sq_draining		int8
	max_rd_atomic		int8
	max_dest_rd_atomic	int8
	min_rnr_timer		int8
	port_num		int8
	timeout			int8
	retry_cnt		int8
	rnr_retry		int8
	alt_port_num		int8
	alt_timeout		int8
	sq_sig_all		int8
	reserved0		const[0x0, int8]
	reserved1		const[0x0, int32]
	driver_data		array[int64]
}

query_qp_cmd {
	command		const[0x19, int32]
	in_words	const[0x6, int16]
	out_words	const[0x20, int16]
	response	ptr[out, query_qp_resp]
	qp_handle	qp_handle
	attr_mask	flags[ib_qp_create_flags, int32]
	driver_data	array[int64]
}

modify_qp_cmd {
	command			const[0x1a, int32]
	in_words		const[0x1e, int16]
	out_words		const[0x0, int16]
	dest_dgid		array[int8, 16]
	dest_flow_label		int32
	dest_dlid		int16
	dest_reserved		int16
	dest_sgid_index		int8
	dest_hop_limit		int8
	dest_traffic_class	int8
	dest_sl			int8
	dest_src_path_bits	int8
	dest_static_rate	int8
	dest_is_global		int8
	dest_port_num		int8
	alt_dest_dgid		array[int8, 16]
	alt_dest_flow_label	int32
	alt_dest_dlid		int16
	alt_dest_reserved	int16
	alt_dest_sgid_index	int8
	alt_dest_hop_limit	int8
	alt_dest_traffic_class	int8
	alt_dest_sl		int8
	alt_dest_src_path_bits	int8
	alt_dest_static_rate	int8
	alt_dest_is_global	int8
	alt_dest_port_num	int8
	qp_handle		int32
	attr_mask		int32
	qkey			int32
	rq_psn			int32
	sq_psn			int32
	dest_qp_num		int32
	qp_access_flags		int32
	pkey_index		int16
	alt_pkey_index		int16
	qp_state		int8
	cur_qp_state		int8
	path_mtu		int8
	path_mig_state		int8
	en_sqd_async_notify	int8
	max_rd_atomic		int8
	max_dest_rd_atomic	int8
	min_rnr_timer		int8
	port_num		int8
	timeout			int8
	retry_cnt		int8
	rnr_retry		int8
	alt_port_num		int8
	alt_timeout		int8
	reserved		const[0x0, int16]
}

# wq
#====

create_wq_resp {
	comp_mask	int32
	response_length	int32
	wq_handle	wq_handle
	max_wr		int32
	max_sge		int32
	wqn		int32
}

create_wq_cmd {
	command			const[0x80000034, int32]
	in_words		const[0x5, int16]
	out_words		bytesize4[response, int16]
	response		ptr[out, create_wq_resp]
	provider_in_words	const[0x6, int16]
	provider_out_words	const[0x1, int16]
	cmd_hdr_reserved	const[0x0, int32]
	comp_mask		const[0x0, int32]
	wq_type			flags[wq_type, int32]
	user_handle		int64
	pd_handle		pd_handle
	cq_handle		cq_handle
	max_wr			int32
	max_sge			int32
	create_flags		flags[create_wq_flags, int32]
	reserved		const[0x0, int32]
}

mlx5_create_wq_resp {
	comp_mask		int32
	response_length		const[0x6, int32]
	wq_handle		wq_handle
	max_wr			int32
	max_sge			int32
	wqn			int32
	mlx5_response_length	bytesize4[parent, int32]
	reserver		const[0x0, int32]
}

mlx5_create_wq_cmd {
	command				const[0x80000034, int32]
	in_words			const[0x5, int16]
	out_words			bytesize4[response, int16]
	response			ptr[out, mlx5_create_wq_resp]
	provider_in_words		const[0x6, int16]
	provider_out_words		const[0x1, int16]
	cmd_hdr_reserved		const[0x0, int32]
	comp_mask			const[0x0, int32]
	wq_type				flags[wq_type, int32]
	user_handle			int64
	pd_handle			pd_handle
	cq_handle			cq_handle
	max_wr				int32
	max_sge				int32
	create_flags			flags[create_wq_flags, int32]
	reserved			const[0x0, int32]
	buf_addr			ptr[in, array[int8, 4096]]
	db_addr				ptr[in, array[int8, 4096]]
	rq_wqe_count			int32
	rq_wqe_shift			int32
	user_index			int32
	flags				const[0x0, int32]
	provider_comp_mask		const[0x0, int32]
	single_stride_log_num_of_bytes	const[0x0, int32]
	single_wqe_log_num_of_strides	const[0x0, int32]
	two_byte_shift_en		int32[0:1]
}

destroy_wq_resp {
	comp_mask	int32
	response_length	int32
	events_reported	int32
	reserved	const[0x0, int32]
}

destroy_wq_cmd {
	command			const[0x80000036, int32]
	in_words		const[0x1, int16]
	out_words		const[0x2, int16]
	response		ptr[out, destroy_wq_resp]
	provider_in_words	const[0x0, int16]
	provider_out_words	const[0x0, int16]
	cmd_hdr_reserved	const[0x0, int32]
	comp_mask		int32[0x0:0xf]
	wq_handle		wq_handle
}

mlx5_modify_wq_cmd {
	command			const[0x80000035, int32]
	in_words		const[0x3, int16]
	out_words		const[0x0, int16]
	response		const[0x0, int64]
	provider_in_words	const[0x1, int16]
	provider_out_words	const[0x0, int16]
	cmd_hdr_reserved	const[0x0, int32]
	attr_mask		flags[modify_wq_attr_flags, int32]
	wq_handle		wq_handle
	wq_state		int32[0:3]
	current_wq_state	int32[0:3]
	flags			flags[modify_wq_flags, int32]
	flags_mask		flags[modify_wq_flags, int32]
	comp_mask		const[0x0, int32]
	reserved		const[0x0, int32]
}

# RSS (indirection table)
#========================

create_rwq_ind_table_resp {
	comp_mask	int32
	response_length	bytesize4[parent, int32]
	ind_tbl_handle	ind_tbl_handle
	ind_tbl_num	int32
}

# currently hard coded to use 2 WQs. Need to figure out how to
# make it a variable.
create_rwq_ind_table_cmd {
	command			const[0x80000037, int32]
	in_words		const[0x2, int16]
	out_words		const[0x2, int16]
	response		ptr[out, create_rwq_ind_table_resp]
	provider_in_words	const[0x0, int16]
	provider_out_words	const[0x0, int16]
	cmd_hdr_reserved	const[0x0, int32]
	comp_mask		const[0x0, int32]
	log_ind_tbl_size	int32[1]
	wq_handles		array[wq_handle, 2]
}

destroy_rwq_ind_table_cmd {
	comp_mask	int32
	ind_tbl_handle	ind_tbl_handle
}

# Send WR
#========

rdma {
	remote_addr	int64
	rkey		mr_rkey
	reserved	const[0x0, int32]
}

atomic {
	remote_addr	int64
	compare_add	int64
	swap		int64
	rkey		mr_rkey
	reserved	const[0x0, int32]
}

ud {
	ah		int32
	remote_qpn	int32
	remote_qkey	int32
	reserved	const[0x0, int32]
}

xrc {
	remote_srqn	int32
}

wr [
	rdma	rdma
	atomic	atomic
	ud	ud
]

kern_send_wr {
	wr_id		int64
	num_sge		int32
	opcode		int32[0:20]
	send_flags	flags[ib_send_flags, int32]
	imm_data	int32
	wr		wr
	qp_type		xrc
}

post_send_cmd {
	command		const[0x1c, int32]
	in_words	const[0x8, int16]
	out_words	const[0x1, int16]
	response	ptr[out, post_send_resp]
	qp_handle	qp_handle
	wr_count	int32
	sge_count	int32
	wqe_size	int32
	send_wr		array[kern_send_wr]
}

post_send_resp {
	bad_wr	int32
}

post_recv_cmd {
	command		const[0x1d, int32]
	in_words	const[0x8, int16]
	out_words	const[0x1, int16]
	response	ptr[out, post_recv_resp]
	qp_handle	qp_handle
	wr_count	int32
	sge_count	int32
	wqe_size	int32
	recv_wr		array[kern_recv_wr]
}

post_recv_resp {
	bad_wr	int32
}

attach_mcast_cmd {
	command		const[0x1e, int32]
	in_words	const[0x8, int16]
	out_words	const[0x0, int16]
	gid		array[int8, 0x10]
	qp_handle	qp_handle
	mlid		int16
	reserved	const[0x0, int16]
	driver_data	array[int64]
}

detach_mcast_cmd {
	command		const[0x1f, int32]
	in_words	const[0x8, int16]
	out_words	const[0x0, int16]
	gid		array[int8, 0x10]
	qp_handle	qp_handle
	mlid		int16
	reserved	const[0x0, int16]
	driver_data	array[int64]
}

create_srq_resp {
	srq_handle	srq_handle
	max_wr		int32
	max_sge		int32
	srqn		int32
}

create_srq_cmd {
	command		const[0x20, int32]
	in_words	const[0xa, int16]
	out_words	const[0x4, int16]
	response	ptr[out, create_srq_resp]
	user_handle	int64
	pd_handle	pd_handle
	max_wr		int32
	max_sge		int32
	srq_limit	int32
	driver_data	array[int64]
}

mlx5_ib_create_srq_resp {
	srqn		int32
	reserved	const[0x0, int32]
}

mlx5_create_srq_cmd {
	command		const[0x27, int32]
	in_words	const[0x16, int16]
	out_words	const[0x6, int16]
	reserved0	const[0x0, int32]
	response	ptr[out, mlx5_ib_create_srq_resp]
	user_handle	int64
	srq_type	flags[srq_type, int32]
	pd_handle	pd_handle
	max_wr		int32
	max_sge		int32
	srq_limit	int32
	max_num_tags	int32
	xrcd_handle	xrcd_handle
	cq_handle	cq_handle
	buf_addr	ptr[in, int64]
	db_addr		ptr[in, int64]
	flags		flags[create_srq_ex_flags, int32]
	reserved1	const[0x0, int32]
	uidx		int32
	reserved2	const[0x0, int32]
}

modify_srq_cmd {
	command		const[0x21, int32]
	in_words	const[0x6, int16]
	out_words	const[0x0, int16]
	srq_handle	srq_handle
	attr_mask	int32[0x0:0x10]
	max_wr		int32
	srq_limit	int32
	driver_data	array[int64]
}

query_srq_resp {
	max_wr		int32
	max_sge		int32
	srq_limit	int32
	reserved	const[0x0, int32]
}

query_srq_cmd {
	command		const[0x22, int32]
	in_words	const[0x6, int16]
	out_words	const[0x4, int16]
	response	ptr[out, query_srq_resp]
	srq_handle	srq_handle
	reserved	const[0x0, int32]
	driver_data	array[int64]
}

destroy_srq_resp {
	events_reported	int32
}

destroy_srq_cmd {
	command		const[0x23, int32]
	in_words	const[0x6, int16]
	out_words	const[0x1, int16]
	response	ptr[out, destroy_srq_resp]
	srq_handle	srq_handle
	reserved	const[0x0, int32]
}

kern_recv_wr {
	wr_id		int64
	num_sge		int32
	reserved	const[0x0, int32]
}

post_srq_recv_resp {
	bad_wr	int32
}

post_srq_recv_cmd {
	command		const[0x24, int32]
	in_words	const[0x7, int16]
	out_words	const[0x1, int16]
	response	ptr[out, post_srq_recv_resp]
	wr_count	int32
	sge_count	int32
	wqe_size	int32
	recv_wr		array[kern_recv_wr]
}

open_xrcd_resp {
	xrcd_handle	xrcd_handle
}

open_xrcd_cmd {
	command		const[0x25, int32]
	in_words	const[0x6, int16]
	out_words	const[0x1, int16]
	response	ptr[out, open_xrcd_resp]
	fd		int32
	oflags		int32
	driver_data	array[int64]
}

close_xrcd_cmd {
	command		const[0x26, int32]
	in_words	const[0x3, int16]
	out_words	const[0x0, int16]
	xrcd_handle	xrcd_handle
}

# create_flow
# ===============

ib_flow_eth_filter {
	dst_mac		array[int8, 0x6]
	src_mac		array[int8, 0x6]
	ether_type	int16
	vlan_tag	int16
}

ib_flow_spec_eth {
	type		const[IB_FLOW_SPEC_ETH, int32]
	size		const[0x10, int16]
	reserved	const[0x0, int16]
	val		ib_flow_eth_filter
	mask		ib_flow_eth_filter
}

ib_flow_ipv4_filter {
	src_ip	int32
	dst_ip	int32
	proto	int8
	tos	int8
	ttl	int8
	flags	flags[ib_ipv4_flags, int8]
}

ib_flow_spec_ipv4 {
	type		const[IB_FLOW_SPEC_IPV4, int32]
	size		const[0x20, int16]
	reserved	const[0x0, int16]
	val		ib_flow_ipv4_filter
	mask		ib_flow_ipv4_filter
}

ib_flow_ipv6_filter {
	src_ip		array[int8, 0x10]
	dst_ip		array[int8, 0x10]
	flow_label	int32
	next_hdr	int8
	traffic_class	int8
	hop_limit	int8
	reserved	const[0x0, int8]
}

ib_flow_spec_ipv6 {
	type		const[IB_FLOW_SPEC_IPV6, int32]
	size		const[0x58, int16]
	reserved	const[0x0, int16]
	val		ib_flow_ipv6_filter
	mask		ib_flow_ipv6_filter
}

ib_flow_tcp_udp_filter {
	dst_port	int16
	src_port	int16
}

ib_flow_spec_tcp_udp {
	type		int32[0x40:0x41]
	size		const[0x10, int16]
	reserved	const[0x0, int16]
	val		ib_flow_tcp_udp_filter
	mask		ib_flow_tcp_udp_filter
}

ib_flow_esp_filter {
	spi	int32
	seq	int32
}

ib_flow_spec_esp {
	type		const[IB_FLOW_SPEC_ESP, int32]
	size		const[0x18, int16]
	reserved	const[0x0, int16]
	val		ib_flow_esp_filter
	mask		ib_flow_esp_filter
}

ib_flow_tunnel_filter {
	tunnel_id	int32
}

ib_flow_spec_tunnel {
	type		const[IB_FLOW_SPEC_VXLAN_TUNNEL, int32]
	size		const[0x10, int16]
	reserved	const[0x0, int16]
	val		ib_flow_tunnel_filter
	mask		ib_flow_tunnel_filter
}

ib_flow_gre_filter {
	c_ks_res0_ver	int16
	protocol	int16
	key		int32
}

ib_flow_spec_gre {
	type		const[IB_FLOW_SPEC_GRE, int32]
	size		const[0x18, int16]
	reserved	const[0x0, int16]
	val		ib_flow_gre_filter
	mask		ib_flow_gre_filter
}

ib_flow_mpls_filter {
	tag	int32
}

ib_flow_spec_mpls {
	type		const[IB_FLOW_SPEC_MPLS, int32]
	size		const[0x10, int16]
	reserved	const[0x0, int16]
	val		ib_flow_mpls_filter
	mask		ib_flow_mpls_filter
}

ib_flow_spec_action_tag {
	type		const[IB_FLOW_SPEC_ACTION_TAG, int32]
	size		const[0x10, int16]
	reserved	const[0x0, int16]
	tag_id		int32
	reserved2	const[0x0, int32]
}

ib_flow_spec_action_drop {
	type		const[IB_FLOW_SPEC_ACTION_DROP, int32]
	size		const[0x8, int16]
	reserved	const[0x0, int16]
}

ib_uverbs_flow_spec_action_count {
	type		const[IB_FLOW_SPEC_ACTION_COUNT, int32]
	size		const[0x10, int16]
	reserved0	const[0x0, int16]
	handle		vcontext_handle
	reserved1	const[0x0, int32]
}

union_ib_flow_spec [
	eth	ib_flow_spec_eth
	ipv6	ib_flow_spec_ipv6
	ipv4	ib_flow_spec_ipv4
	tcp_udp	ib_flow_spec_tcp_udp
	tunnel	ib_flow_spec_tunnel
	gre	ib_flow_spec_gre
	esp	ib_flow_spec_esp
	mpls	ib_flow_spec_mpls
	tag	ib_flow_spec_action_tag
	drop	ib_flow_spec_action_drop
	count	ib_uverbs_flow_spec_action_count
]

ib_uverbs_flow_attr {
	type		int32[0:3]
	size		bytesize[flow_specs, int16]
	priority	int16[0:7]
	num_of_specs	len[flow_specs, int8]
	reserved1	const[0x0, int8]
	reserved2	const[0x0, int8]
	port		int8
	flags		flags[ib_flow_flags, int32]
	flow_specs	array[union_ib_flow_spec]
}

create_flow_cmd_ex {
	comp_mask	const[0x0, int32]
	qp_handle	qp_handle
	flow_attr	ib_uverbs_flow_attr
}

create_flow_resp {
	comp_mask	int32
	flow_handle	flow_handle
}

create_flow_cmd {
	command			const[IB_USER_VERBS_EX_CMD_CREATE_FLOW, int32]
	in_words		bytesize8[flow_ex, int16]
	out_words		const[0x1, int16]
	response		ptr[out, create_flow_resp]
	provider_in_words	const[0x0, int16]
	provider_out_words	const[0x0, int16]
	reserved		const[0x0, int32]
	flow_ex			create_flow_cmd_ex
}

destroy_flow_cmd {
	command			const[IB_USER_VERBS_EX_CMD_DESTROY_FLOW, int32]
	in_words		const[0x6, int16]
	out_words		const[0x0, int16]
	response		const[0x0, int64]
	provider_in_words	const[0x0, int16]
	provider_out_words	const[0x0, int16]
	reserved		const[0x0, int32]
	comp_mask		const[0x0, int32]
	flow_handle		flow_handle
}

# ioctl interface

ib_uverbs_attr_flags = UVERBS_ATTR_F_MANDATORY
ib_read_counters_flags = IB_UVERBS_READ_COUNTERS_PREFER_CACHED
resource vcontext_handle[int32]

ib_uverbs_create_counters_cmd {
	length		bytesize8[ib_uverbs_create_counters_cmd, int16]
	object_id	const[UVERBS_OBJECT_COUNTERS, int16]
	method_id	const[UVERBS_METHOD_COUNTERS_CREATE, int16]
	num_attrs	const[1, int16]
	reserved0	const[0x0, int64]
	driver_id	const[RDMA_DRIVER_MLX5, int32]
	reserved1	const[0x0, int32]

	attr_id		const[UVERBS_ATTR_CREATE_COUNTERS_HANDLE, int16]
	len		int16
	flags		flags[ib_uverbs_attr_flags, int16]
	elem_id		int8
	reserved2	const[0x0, int8]
	reserved3	const[0x0, int16]
	vcontext_handle	vcontext_handle[opt]
	more_data	int32
}

ib_uverbs_destroy_counters_cmd {
	length		bytesize8[ib_uverbs_destroy_counters_cmd, int16]
	object_id	const[UVERBS_OBJECT_COUNTERS, int16]
	method_id	const[UVERBS_METHOD_COUNTERS_DESTROY, int16]
	num_attrs	const[1, int16]
	reserved0	const[0x0, int64]
	driver_id	const[RDMA_DRIVER_MLX5, int32]
	reserved1	const[0x0, int32]

	attr_id		const[UVERBS_ATTR_DESTROY_COUNTERS_HANDLE, int16]
	len		int16
	flags		flags[ib_uverbs_attr_flags, int16]
	elem_id		int8
	reserved2	const[0x0, int8]
	reserved3	const[0x0, int16]
	vcontext_handle	vcontext_handle
	more_data	int32
}

# in UVERBS_ATTR_READ_COUNTERS_FLAGS, assuming that sizeof(uint32_t is 4)
ib_uverbs_read_counters_cmd {
	length		bytesize8[ib_uverbs_read_counters_cmd, int16]
	object_id	const[UVERBS_OBJECT_COUNTERS, int16]
	method_id	const[UVERBS_METHOD_COUNTERS_READ, int16]
	num_attrs	const[0x3, int16]
	reserved0	const[0x0, int64]
	driver_id	const[RDMA_DRIVER_MLX5, int32]
	reserved1	const[0x0, int32]

	attr_id0	const[UVERBS_ATTR_READ_COUNTERS_HANDLE, int16]
	len0		int16
	flags0		flags[ib_uverbs_attr_flags, int16]
	reserved2	const[0x0, int16]
	vcontext_handle	vcontext_handle
	more_data0	int32

	attr_id1	const[UVERBS_ATTR_READ_COUNTERS_BUFF, int16]
	len1		bytesize8[data, int16]
	flags1		flags[ib_uverbs_attr_flags, int16]
	reserved3	const[0x0, int16]
	data		buffer[out]

	attr_id2	const[UVERBS_ATTR_READ_COUNTERS_FLAGS, int16]
	len2		const[0x4, int16]
	flags2		flags[ib_uverbs_attr_flags, int16]
	reserved4	const[0x0, int16]
	flags		flags[ib_read_counters_flags, int32]
	more_data1	int32
}

# commands
ioctl$CREATE_COUNTERS(fd fd_rdma, cmd const[RDMA_VERBS_IOCTL], arg ptr[inout, ib_uverbs_create_counters_cmd])
ioctl$DESTROY_COUNTERS(fd fd_rdma, cmd const[RDMA_VERBS_IOCTL], arg ptr[in, ib_uverbs_destroy_counters_cmd])
ioctl$READ_COUNTERS(fd fd_rdma, cmd const[RDMA_VERBS_IOCTL], arg ptr[inout, ib_uverbs_read_counters_cmd])

# device
syz_open_dev$ibv_device(dev ptr[in, string["/dev/infiniband/uverbs0"]], id intptr, flags flags[rdma_dev_open_flags]) fd_rdma
write$MLX5_GET_CONTEXT(fd fd_rdma, buf ptr[inout, mlx5_get_context_cmd], len len[buf])
close$ibv_device(fd fd_rdma)
write$QUERY_DEVICE_EX(fd fd_rdma, buf ptr[inout, query_device_cmd_ex], len len[buf])

# query_port
write$QUERY_PORT(fd fd_rdma, buf ptr[inout, query_port_cmd], len len[buf])

# pd
write$ALLOC_PD(fd fd_rdma, buf ptr[inout, alloc_pd_cmd], len len[buf])
write$MLX5_ALLOC_PD(fd fd_rdma, buf ptr[inout, mlx5_alloc_pd_cmd], len len[buf])
#dealloc_pd
write$DEALLOC_PD(fd fd_rdma, buf ptr[inout, dealloc_pd_cmd], len len[buf])

#ah
write$CREATE_AH(fd fd_rdma, buf ptr[inout, create_ah_cmd], len len[buf])
write$DESTROY_AH(fd fd_rdma, buf ptr[inout, destroy_ah_cmd], len len[buf])

# mr
write$REG_MR(fd fd_rdma, buf ptr[inout, reg_mr_cmd], len len[buf])
write$DEREG_MR(fd fd_rdma, buf ptr[inout, rereg_mr_cmd], len len[buf])
write$REREG_MR(fd fd_rdma, buf ptr[inout, dereg_mr_cmd], len len[buf])

# mw
write$ALLOC_MW(fd fd_rdma, buf ptr[inout, alloc_mw_cmd], len len[buf])
write$DEALLOC_MW(fd fd_rdma, buf ptr[inout, dealloc_mw_cmd], len len[buf])

#comp_channel
write$CREATE_COMP_CHANNEL(fd fd_rdma, buf ptr[inout, create_comp_channel_cmd], len len[buf])

# cq
write$CREATE_CQ(fd fd_rdma, buf ptr[inout, create_cq_cmd], len len[buf])
write$MLX5_CREATE_CQ(fd fd_rdma, buf ptr[inout, mlx5_create_cq_cmd], len len[buf])
write$CREATE_CQ_EX(fd fd_rdma, buf ptr[inout, create_cq_ex_cmd], len len[buf])
write$RESIZE_CQ(fd fd_rdma, buf ptr[inout, resize_cq_cmd], len len[buf])
write$DESTROY_CQ(fd fd_rdma, buf ptr[inout, destroy_cq_cmd], len len[buf])
write$POLL_CQ(fd fd_rdma, buf ptr[inout, poll_cq_cmd], len len[buf])
write$REQ_NOTIFY_CQ(fd fd_rdma, buf ptr[inout, req_notify_cq_cmd], len len[buf])

# qp
write$CREATE_QP(fd fd_rdma, buf ptr[inout, create_qp_cmd], len len[buf])

# qp_ex
write$MLX5_CREATE_QP(fd fd_rdma, buf ptr[inout, mlx5_create_qp_cmd], len len[buf])
write$MLX5_CREATE_DV_QP(fd fd_rdma, buf ptr[inout, mlx5_create_dv_qp_cmd], len len[buf])
write$DESTROY_QP(fd fd_rdma, buf ptr[inout, destroy_qp_cmd], len len[buf])
write$QUERY_QP(fd fd_rdma, buf ptr[inout, query_qp_cmd], len len[buf])
write$MODIFY_QP(fd fd_rdma, buf ptr[inout, modify_qp_cmd], len len[buf])
write$POST_SEND(fd fd_rdma, buf ptr[inout, post_send_cmd], len len[buf])
write$POST_RECV(fd fd_rdma, buf ptr[inout, post_recv_cmd], len len[buf])
write$ATTACH_MCAST(fd fd_rdma, buf ptr[in, attach_mcast_cmd], len len[buf])
write$DETACH_MCAST(fd fd_rdma, buf ptr[in, detach_mcast_cmd], len len[buf])
write$CREATE_SRQ(fd fd_rdma, buf ptr[inout, create_srq_cmd], len len[buf])
write$MLX5_CREATE_SRQ(fd fd_rdma, buf ptr[inout, mlx5_create_srq_cmd], len len[buf])
write$MODIFY_SRQ(fd fd_rdma, buf ptr[in, modify_srq_cmd], len len[buf])
write$QUERY_SRQ(fd fd_rdma, buf ptr[inout, query_srq_cmd], len len[buf])
write$DESTROY_SRQ(fd fd_rdma, buf ptr[inout, destroy_srq_cmd], len len[buf])
write$POST_SRQ_RECV(fd fd_rdma, buf ptr[inout, post_srq_recv_cmd], len len[buf])
write$OPEN_XRCD(fd fd_rdma, buf ptr[inout, open_xrcd_cmd], len len[buf])
write$CLOSE_XRCD(fd fd_rdma, buf ptr[inout, close_xrcd_cmd], len len[buf])

# wq
write$CREATE_WQ(fd fd_rdma, buf ptr[inout, create_wq_cmd], len len[buf])
write$MLX5_CREATE_WQ(fd fd_rdma, buf ptr[inout, mlx5_create_wq_cmd], len len[buf])
write$MLX5_MODIFY_WQ(fd fd_rdma, buf ptr[inout, mlx5_modify_wq_cmd], len len[buf])
write$DESTROY_WQ(fd fd_rdma, buf ptr[inout, destroy_wq_cmd], len len[buf])

# RSS
write$CREATE_RWQ_IND_TBL(fd fd_rdma, buf ptr[inout, create_rwq_ind_table_cmd], len len[buf])
write$DESTROY_RWQ_IND_TBL(fd fd_rdma, buf ptr[inout, destroy_rwq_ind_table_cmd], len len[buf])

# create_flow
write$CREATE_FLOW(fd fd_rdma, buf ptr[inout, create_flow_cmd], len len[buf])
write$DESTROY_FLOW(fd fd_rdma, buf ptr[inout, destroy_flow_cmd], len len[buf])
