18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2005 Topspin Communications. All rights reserved. 48c2ecf20Sopenharmony_ci * Copyright (c) 2005, 2006 Cisco Systems. All rights reserved. 58c2ecf20Sopenharmony_ci * Copyright (c) 2005 PathScale, Inc. All rights reserved. 68c2ecf20Sopenharmony_ci * Copyright (c) 2006 Mellanox Technologies. All rights reserved. 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * This software is available to you under a choice of one of two 98c2ecf20Sopenharmony_ci * licenses. You may choose to be licensed under the terms of the GNU 108c2ecf20Sopenharmony_ci * General Public License (GPL) Version 2, available from the file 118c2ecf20Sopenharmony_ci * COPYING in the main directory of this source tree, or the 128c2ecf20Sopenharmony_ci * OpenIB.org BSD license below: 138c2ecf20Sopenharmony_ci * 148c2ecf20Sopenharmony_ci * Redistribution and use in source and binary forms, with or 158c2ecf20Sopenharmony_ci * without modification, are permitted provided that the following 168c2ecf20Sopenharmony_ci * conditions are met: 178c2ecf20Sopenharmony_ci * 188c2ecf20Sopenharmony_ci * - Redistributions of source code must retain the above 198c2ecf20Sopenharmony_ci * copyright notice, this list of conditions and the following 208c2ecf20Sopenharmony_ci * disclaimer. 218c2ecf20Sopenharmony_ci * 228c2ecf20Sopenharmony_ci * - Redistributions in binary form must reproduce the above 238c2ecf20Sopenharmony_ci * copyright notice, this list of conditions and the following 248c2ecf20Sopenharmony_ci * disclaimer in the documentation and/or other materials 258c2ecf20Sopenharmony_ci * provided with the distribution. 268c2ecf20Sopenharmony_ci * 278c2ecf20Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 288c2ecf20Sopenharmony_ci * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 298c2ecf20Sopenharmony_ci * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 308c2ecf20Sopenharmony_ci * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 318c2ecf20Sopenharmony_ci * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 328c2ecf20Sopenharmony_ci * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 338c2ecf20Sopenharmony_ci * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 348c2ecf20Sopenharmony_ci * SOFTWARE. 358c2ecf20Sopenharmony_ci */ 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci#ifndef IB_USER_VERBS_H 388c2ecf20Sopenharmony_ci#define IB_USER_VERBS_H 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci#include <linux/types.h> 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci/* 438c2ecf20Sopenharmony_ci * Increment this value if any changes that break userspace ABI 448c2ecf20Sopenharmony_ci * compatibility are made. 458c2ecf20Sopenharmony_ci */ 468c2ecf20Sopenharmony_ci#define IB_USER_VERBS_ABI_VERSION 6 478c2ecf20Sopenharmony_ci#define IB_USER_VERBS_CMD_THRESHOLD 50 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_cienum ib_uverbs_write_cmds { 508c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_GET_CONTEXT, 518c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_DEVICE, 528c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_PORT, 538c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_ALLOC_PD, 548c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DEALLOC_PD, 558c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_AH, 568c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_MODIFY_AH, 578c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_AH, 588c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DESTROY_AH, 598c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_REG_MR, 608c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_REG_SMR, 618c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_REREG_MR, 628c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_MR, 638c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DEREG_MR, 648c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_ALLOC_MW, 658c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_BIND_MW, 668c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DEALLOC_MW, 678c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL, 688c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_CQ, 698c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_RESIZE_CQ, 708c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DESTROY_CQ, 718c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_POLL_CQ, 728c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_PEEK_CQ, 738c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_REQ_NOTIFY_CQ, 748c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_QP, 758c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_QP, 768c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_MODIFY_QP, 778c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DESTROY_QP, 788c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_POST_SEND, 798c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_POST_RECV, 808c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_ATTACH_MCAST, 818c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DETACH_MCAST, 828c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_SRQ, 838c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_MODIFY_SRQ, 848c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_QUERY_SRQ, 858c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_DESTROY_SRQ, 868c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_POST_SRQ_RECV, 878c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_OPEN_XRCD, 888c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CLOSE_XRCD, 898c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_CREATE_XSRQ, 908c2ecf20Sopenharmony_ci IB_USER_VERBS_CMD_OPEN_QP, 918c2ecf20Sopenharmony_ci}; 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_cienum { 948c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE, 958c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ, 968c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP, 978c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP, 988c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD, 998c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_DESTROY_FLOW, 1008c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_CREATE_WQ, 1018c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_MODIFY_WQ, 1028c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_DESTROY_WQ, 1038c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_CREATE_RWQ_IND_TBL, 1048c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_DESTROY_RWQ_IND_TBL, 1058c2ecf20Sopenharmony_ci IB_USER_VERBS_EX_CMD_MODIFY_CQ 1068c2ecf20Sopenharmony_ci}; 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci/* 1098c2ecf20Sopenharmony_ci * Make sure that all structs defined in this file remain laid out so 1108c2ecf20Sopenharmony_ci * that they pack the same way on 32-bit and 64-bit architectures (to 1118c2ecf20Sopenharmony_ci * avoid incompatibility between 32-bit userspace and 64-bit kernels). 1128c2ecf20Sopenharmony_ci * Specifically: 1138c2ecf20Sopenharmony_ci * - Do not use pointer types -- pass pointers in __u64 instead. 1148c2ecf20Sopenharmony_ci * - Make sure that any structure larger than 4 bytes is padded to a 1158c2ecf20Sopenharmony_ci * multiple of 8 bytes. Otherwise the structure size will be 1168c2ecf20Sopenharmony_ci * different between 32-bit and 64-bit architectures. 1178c2ecf20Sopenharmony_ci */ 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_cistruct ib_uverbs_async_event_desc { 1208c2ecf20Sopenharmony_ci __aligned_u64 element; 1218c2ecf20Sopenharmony_ci __u32 event_type; /* enum ib_event_type */ 1228c2ecf20Sopenharmony_ci __u32 reserved; 1238c2ecf20Sopenharmony_ci}; 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_cistruct ib_uverbs_comp_event_desc { 1268c2ecf20Sopenharmony_ci __aligned_u64 cq_handle; 1278c2ecf20Sopenharmony_ci}; 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_cistruct ib_uverbs_cq_moderation_caps { 1308c2ecf20Sopenharmony_ci __u16 max_cq_moderation_count; 1318c2ecf20Sopenharmony_ci __u16 max_cq_moderation_period; 1328c2ecf20Sopenharmony_ci __u32 reserved; 1338c2ecf20Sopenharmony_ci}; 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci/* 1368c2ecf20Sopenharmony_ci * All commands from userspace should start with a __u32 command field 1378c2ecf20Sopenharmony_ci * followed by __u16 in_words and out_words fields (which give the 1388c2ecf20Sopenharmony_ci * length of the command block and response buffer if any in 32-bit 1398c2ecf20Sopenharmony_ci * words). The kernel driver will read these fields first and read 1408c2ecf20Sopenharmony_ci * the rest of the command struct based on these value. 1418c2ecf20Sopenharmony_ci */ 1428c2ecf20Sopenharmony_ci 1438c2ecf20Sopenharmony_ci#define IB_USER_VERBS_CMD_COMMAND_MASK 0xff 1448c2ecf20Sopenharmony_ci#define IB_USER_VERBS_CMD_FLAG_EXTENDED 0x80000000u 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_cistruct ib_uverbs_cmd_hdr { 1478c2ecf20Sopenharmony_ci __u32 command; 1488c2ecf20Sopenharmony_ci __u16 in_words; 1498c2ecf20Sopenharmony_ci __u16 out_words; 1508c2ecf20Sopenharmony_ci}; 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_cistruct ib_uverbs_ex_cmd_hdr { 1538c2ecf20Sopenharmony_ci __aligned_u64 response; 1548c2ecf20Sopenharmony_ci __u16 provider_in_words; 1558c2ecf20Sopenharmony_ci __u16 provider_out_words; 1568c2ecf20Sopenharmony_ci __u32 cmd_hdr_reserved; 1578c2ecf20Sopenharmony_ci}; 1588c2ecf20Sopenharmony_ci 1598c2ecf20Sopenharmony_cistruct ib_uverbs_get_context { 1608c2ecf20Sopenharmony_ci __aligned_u64 response; 1618c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 1628c2ecf20Sopenharmony_ci}; 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_cistruct ib_uverbs_get_context_resp { 1658c2ecf20Sopenharmony_ci __u32 async_fd; 1668c2ecf20Sopenharmony_ci __u32 num_comp_vectors; 1678c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 1688c2ecf20Sopenharmony_ci}; 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_cistruct ib_uverbs_query_device { 1718c2ecf20Sopenharmony_ci __aligned_u64 response; 1728c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 1738c2ecf20Sopenharmony_ci}; 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_cistruct ib_uverbs_query_device_resp { 1768c2ecf20Sopenharmony_ci __aligned_u64 fw_ver; 1778c2ecf20Sopenharmony_ci __be64 node_guid; 1788c2ecf20Sopenharmony_ci __be64 sys_image_guid; 1798c2ecf20Sopenharmony_ci __aligned_u64 max_mr_size; 1808c2ecf20Sopenharmony_ci __aligned_u64 page_size_cap; 1818c2ecf20Sopenharmony_ci __u32 vendor_id; 1828c2ecf20Sopenharmony_ci __u32 vendor_part_id; 1838c2ecf20Sopenharmony_ci __u32 hw_ver; 1848c2ecf20Sopenharmony_ci __u32 max_qp; 1858c2ecf20Sopenharmony_ci __u32 max_qp_wr; 1868c2ecf20Sopenharmony_ci __u32 device_cap_flags; 1878c2ecf20Sopenharmony_ci __u32 max_sge; 1888c2ecf20Sopenharmony_ci __u32 max_sge_rd; 1898c2ecf20Sopenharmony_ci __u32 max_cq; 1908c2ecf20Sopenharmony_ci __u32 max_cqe; 1918c2ecf20Sopenharmony_ci __u32 max_mr; 1928c2ecf20Sopenharmony_ci __u32 max_pd; 1938c2ecf20Sopenharmony_ci __u32 max_qp_rd_atom; 1948c2ecf20Sopenharmony_ci __u32 max_ee_rd_atom; 1958c2ecf20Sopenharmony_ci __u32 max_res_rd_atom; 1968c2ecf20Sopenharmony_ci __u32 max_qp_init_rd_atom; 1978c2ecf20Sopenharmony_ci __u32 max_ee_init_rd_atom; 1988c2ecf20Sopenharmony_ci __u32 atomic_cap; 1998c2ecf20Sopenharmony_ci __u32 max_ee; 2008c2ecf20Sopenharmony_ci __u32 max_rdd; 2018c2ecf20Sopenharmony_ci __u32 max_mw; 2028c2ecf20Sopenharmony_ci __u32 max_raw_ipv6_qp; 2038c2ecf20Sopenharmony_ci __u32 max_raw_ethy_qp; 2048c2ecf20Sopenharmony_ci __u32 max_mcast_grp; 2058c2ecf20Sopenharmony_ci __u32 max_mcast_qp_attach; 2068c2ecf20Sopenharmony_ci __u32 max_total_mcast_qp_attach; 2078c2ecf20Sopenharmony_ci __u32 max_ah; 2088c2ecf20Sopenharmony_ci __u32 max_fmr; 2098c2ecf20Sopenharmony_ci __u32 max_map_per_fmr; 2108c2ecf20Sopenharmony_ci __u32 max_srq; 2118c2ecf20Sopenharmony_ci __u32 max_srq_wr; 2128c2ecf20Sopenharmony_ci __u32 max_srq_sge; 2138c2ecf20Sopenharmony_ci __u16 max_pkeys; 2148c2ecf20Sopenharmony_ci __u8 local_ca_ack_delay; 2158c2ecf20Sopenharmony_ci __u8 phys_port_cnt; 2168c2ecf20Sopenharmony_ci __u8 reserved[4]; 2178c2ecf20Sopenharmony_ci}; 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_cistruct ib_uverbs_ex_query_device { 2208c2ecf20Sopenharmony_ci __u32 comp_mask; 2218c2ecf20Sopenharmony_ci __u32 reserved; 2228c2ecf20Sopenharmony_ci}; 2238c2ecf20Sopenharmony_ci 2248c2ecf20Sopenharmony_cistruct ib_uverbs_odp_caps { 2258c2ecf20Sopenharmony_ci __aligned_u64 general_caps; 2268c2ecf20Sopenharmony_ci struct { 2278c2ecf20Sopenharmony_ci __u32 rc_odp_caps; 2288c2ecf20Sopenharmony_ci __u32 uc_odp_caps; 2298c2ecf20Sopenharmony_ci __u32 ud_odp_caps; 2308c2ecf20Sopenharmony_ci } per_transport_caps; 2318c2ecf20Sopenharmony_ci __u32 reserved; 2328c2ecf20Sopenharmony_ci}; 2338c2ecf20Sopenharmony_ci 2348c2ecf20Sopenharmony_cistruct ib_uverbs_rss_caps { 2358c2ecf20Sopenharmony_ci /* Corresponding bit will be set if qp type from 2368c2ecf20Sopenharmony_ci * 'enum ib_qp_type' is supported, e.g. 2378c2ecf20Sopenharmony_ci * supported_qpts |= 1 << IB_QPT_UD 2388c2ecf20Sopenharmony_ci */ 2398c2ecf20Sopenharmony_ci __u32 supported_qpts; 2408c2ecf20Sopenharmony_ci __u32 max_rwq_indirection_tables; 2418c2ecf20Sopenharmony_ci __u32 max_rwq_indirection_table_size; 2428c2ecf20Sopenharmony_ci __u32 reserved; 2438c2ecf20Sopenharmony_ci}; 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_cistruct ib_uverbs_tm_caps { 2468c2ecf20Sopenharmony_ci /* Max size of rendezvous request message */ 2478c2ecf20Sopenharmony_ci __u32 max_rndv_hdr_size; 2488c2ecf20Sopenharmony_ci /* Max number of entries in tag matching list */ 2498c2ecf20Sopenharmony_ci __u32 max_num_tags; 2508c2ecf20Sopenharmony_ci /* TM flags */ 2518c2ecf20Sopenharmony_ci __u32 flags; 2528c2ecf20Sopenharmony_ci /* Max number of outstanding list operations */ 2538c2ecf20Sopenharmony_ci __u32 max_ops; 2548c2ecf20Sopenharmony_ci /* Max number of SGE in tag matching entry */ 2558c2ecf20Sopenharmony_ci __u32 max_sge; 2568c2ecf20Sopenharmony_ci __u32 reserved; 2578c2ecf20Sopenharmony_ci}; 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_cistruct ib_uverbs_ex_query_device_resp { 2608c2ecf20Sopenharmony_ci struct ib_uverbs_query_device_resp base; 2618c2ecf20Sopenharmony_ci __u32 comp_mask; 2628c2ecf20Sopenharmony_ci __u32 response_length; 2638c2ecf20Sopenharmony_ci struct ib_uverbs_odp_caps odp_caps; 2648c2ecf20Sopenharmony_ci __aligned_u64 timestamp_mask; 2658c2ecf20Sopenharmony_ci __aligned_u64 hca_core_clock; /* in KHZ */ 2668c2ecf20Sopenharmony_ci __aligned_u64 device_cap_flags_ex; 2678c2ecf20Sopenharmony_ci struct ib_uverbs_rss_caps rss_caps; 2688c2ecf20Sopenharmony_ci __u32 max_wq_type_rq; 2698c2ecf20Sopenharmony_ci __u32 raw_packet_caps; 2708c2ecf20Sopenharmony_ci struct ib_uverbs_tm_caps tm_caps; 2718c2ecf20Sopenharmony_ci struct ib_uverbs_cq_moderation_caps cq_moderation_caps; 2728c2ecf20Sopenharmony_ci __aligned_u64 max_dm_size; 2738c2ecf20Sopenharmony_ci __u32 xrc_odp_caps; 2748c2ecf20Sopenharmony_ci __u32 reserved; 2758c2ecf20Sopenharmony_ci}; 2768c2ecf20Sopenharmony_ci 2778c2ecf20Sopenharmony_cistruct ib_uverbs_query_port { 2788c2ecf20Sopenharmony_ci __aligned_u64 response; 2798c2ecf20Sopenharmony_ci __u8 port_num; 2808c2ecf20Sopenharmony_ci __u8 reserved[7]; 2818c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 2828c2ecf20Sopenharmony_ci}; 2838c2ecf20Sopenharmony_ci 2848c2ecf20Sopenharmony_cistruct ib_uverbs_query_port_resp { 2858c2ecf20Sopenharmony_ci __u32 port_cap_flags; /* see ib_uverbs_query_port_cap_flags */ 2868c2ecf20Sopenharmony_ci __u32 max_msg_sz; 2878c2ecf20Sopenharmony_ci __u32 bad_pkey_cntr; 2888c2ecf20Sopenharmony_ci __u32 qkey_viol_cntr; 2898c2ecf20Sopenharmony_ci __u32 gid_tbl_len; 2908c2ecf20Sopenharmony_ci __u16 pkey_tbl_len; 2918c2ecf20Sopenharmony_ci __u16 lid; 2928c2ecf20Sopenharmony_ci __u16 sm_lid; 2938c2ecf20Sopenharmony_ci __u8 state; 2948c2ecf20Sopenharmony_ci __u8 max_mtu; 2958c2ecf20Sopenharmony_ci __u8 active_mtu; 2968c2ecf20Sopenharmony_ci __u8 lmc; 2978c2ecf20Sopenharmony_ci __u8 max_vl_num; 2988c2ecf20Sopenharmony_ci __u8 sm_sl; 2998c2ecf20Sopenharmony_ci __u8 subnet_timeout; 3008c2ecf20Sopenharmony_ci __u8 init_type_reply; 3018c2ecf20Sopenharmony_ci __u8 active_width; 3028c2ecf20Sopenharmony_ci __u8 active_speed; 3038c2ecf20Sopenharmony_ci __u8 phys_state; 3048c2ecf20Sopenharmony_ci __u8 link_layer; 3058c2ecf20Sopenharmony_ci __u8 flags; /* see ib_uverbs_query_port_flags */ 3068c2ecf20Sopenharmony_ci __u8 reserved; 3078c2ecf20Sopenharmony_ci}; 3088c2ecf20Sopenharmony_ci 3098c2ecf20Sopenharmony_cistruct ib_uverbs_alloc_pd { 3108c2ecf20Sopenharmony_ci __aligned_u64 response; 3118c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3128c2ecf20Sopenharmony_ci}; 3138c2ecf20Sopenharmony_ci 3148c2ecf20Sopenharmony_cistruct ib_uverbs_alloc_pd_resp { 3158c2ecf20Sopenharmony_ci __u32 pd_handle; 3168c2ecf20Sopenharmony_ci __u32 driver_data[0]; 3178c2ecf20Sopenharmony_ci}; 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_cistruct ib_uverbs_dealloc_pd { 3208c2ecf20Sopenharmony_ci __u32 pd_handle; 3218c2ecf20Sopenharmony_ci}; 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_cistruct ib_uverbs_open_xrcd { 3248c2ecf20Sopenharmony_ci __aligned_u64 response; 3258c2ecf20Sopenharmony_ci __u32 fd; 3268c2ecf20Sopenharmony_ci __u32 oflags; 3278c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3288c2ecf20Sopenharmony_ci}; 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_cistruct ib_uverbs_open_xrcd_resp { 3318c2ecf20Sopenharmony_ci __u32 xrcd_handle; 3328c2ecf20Sopenharmony_ci __u32 driver_data[0]; 3338c2ecf20Sopenharmony_ci}; 3348c2ecf20Sopenharmony_ci 3358c2ecf20Sopenharmony_cistruct ib_uverbs_close_xrcd { 3368c2ecf20Sopenharmony_ci __u32 xrcd_handle; 3378c2ecf20Sopenharmony_ci}; 3388c2ecf20Sopenharmony_ci 3398c2ecf20Sopenharmony_cistruct ib_uverbs_reg_mr { 3408c2ecf20Sopenharmony_ci __aligned_u64 response; 3418c2ecf20Sopenharmony_ci __aligned_u64 start; 3428c2ecf20Sopenharmony_ci __aligned_u64 length; 3438c2ecf20Sopenharmony_ci __aligned_u64 hca_va; 3448c2ecf20Sopenharmony_ci __u32 pd_handle; 3458c2ecf20Sopenharmony_ci __u32 access_flags; 3468c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3478c2ecf20Sopenharmony_ci}; 3488c2ecf20Sopenharmony_ci 3498c2ecf20Sopenharmony_cistruct ib_uverbs_reg_mr_resp { 3508c2ecf20Sopenharmony_ci __u32 mr_handle; 3518c2ecf20Sopenharmony_ci __u32 lkey; 3528c2ecf20Sopenharmony_ci __u32 rkey; 3538c2ecf20Sopenharmony_ci __u32 driver_data[0]; 3548c2ecf20Sopenharmony_ci}; 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_cistruct ib_uverbs_rereg_mr { 3578c2ecf20Sopenharmony_ci __aligned_u64 response; 3588c2ecf20Sopenharmony_ci __u32 mr_handle; 3598c2ecf20Sopenharmony_ci __u32 flags; 3608c2ecf20Sopenharmony_ci __aligned_u64 start; 3618c2ecf20Sopenharmony_ci __aligned_u64 length; 3628c2ecf20Sopenharmony_ci __aligned_u64 hca_va; 3638c2ecf20Sopenharmony_ci __u32 pd_handle; 3648c2ecf20Sopenharmony_ci __u32 access_flags; 3658c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3668c2ecf20Sopenharmony_ci}; 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_cistruct ib_uverbs_rereg_mr_resp { 3698c2ecf20Sopenharmony_ci __u32 lkey; 3708c2ecf20Sopenharmony_ci __u32 rkey; 3718c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3728c2ecf20Sopenharmony_ci}; 3738c2ecf20Sopenharmony_ci 3748c2ecf20Sopenharmony_cistruct ib_uverbs_dereg_mr { 3758c2ecf20Sopenharmony_ci __u32 mr_handle; 3768c2ecf20Sopenharmony_ci}; 3778c2ecf20Sopenharmony_ci 3788c2ecf20Sopenharmony_cistruct ib_uverbs_alloc_mw { 3798c2ecf20Sopenharmony_ci __aligned_u64 response; 3808c2ecf20Sopenharmony_ci __u32 pd_handle; 3818c2ecf20Sopenharmony_ci __u8 mw_type; 3828c2ecf20Sopenharmony_ci __u8 reserved[3]; 3838c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3848c2ecf20Sopenharmony_ci}; 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_cistruct ib_uverbs_alloc_mw_resp { 3878c2ecf20Sopenharmony_ci __u32 mw_handle; 3888c2ecf20Sopenharmony_ci __u32 rkey; 3898c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 3908c2ecf20Sopenharmony_ci}; 3918c2ecf20Sopenharmony_ci 3928c2ecf20Sopenharmony_cistruct ib_uverbs_dealloc_mw { 3938c2ecf20Sopenharmony_ci __u32 mw_handle; 3948c2ecf20Sopenharmony_ci}; 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_cistruct ib_uverbs_create_comp_channel { 3978c2ecf20Sopenharmony_ci __aligned_u64 response; 3988c2ecf20Sopenharmony_ci}; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_cistruct ib_uverbs_create_comp_channel_resp { 4018c2ecf20Sopenharmony_ci __u32 fd; 4028c2ecf20Sopenharmony_ci}; 4038c2ecf20Sopenharmony_ci 4048c2ecf20Sopenharmony_cistruct ib_uverbs_create_cq { 4058c2ecf20Sopenharmony_ci __aligned_u64 response; 4068c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 4078c2ecf20Sopenharmony_ci __u32 cqe; 4088c2ecf20Sopenharmony_ci __u32 comp_vector; 4098c2ecf20Sopenharmony_ci __s32 comp_channel; 4108c2ecf20Sopenharmony_ci __u32 reserved; 4118c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 4128c2ecf20Sopenharmony_ci}; 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_cienum ib_uverbs_ex_create_cq_flags { 4158c2ecf20Sopenharmony_ci IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0, 4168c2ecf20Sopenharmony_ci IB_UVERBS_CQ_FLAGS_IGNORE_OVERRUN = 1 << 1, 4178c2ecf20Sopenharmony_ci}; 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_cq { 4208c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 4218c2ecf20Sopenharmony_ci __u32 cqe; 4228c2ecf20Sopenharmony_ci __u32 comp_vector; 4238c2ecf20Sopenharmony_ci __s32 comp_channel; 4248c2ecf20Sopenharmony_ci __u32 comp_mask; 4258c2ecf20Sopenharmony_ci __u32 flags; /* bitmask of ib_uverbs_ex_create_cq_flags */ 4268c2ecf20Sopenharmony_ci __u32 reserved; 4278c2ecf20Sopenharmony_ci}; 4288c2ecf20Sopenharmony_ci 4298c2ecf20Sopenharmony_cistruct ib_uverbs_create_cq_resp { 4308c2ecf20Sopenharmony_ci __u32 cq_handle; 4318c2ecf20Sopenharmony_ci __u32 cqe; 4328c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 4338c2ecf20Sopenharmony_ci}; 4348c2ecf20Sopenharmony_ci 4358c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_cq_resp { 4368c2ecf20Sopenharmony_ci struct ib_uverbs_create_cq_resp base; 4378c2ecf20Sopenharmony_ci __u32 comp_mask; 4388c2ecf20Sopenharmony_ci __u32 response_length; 4398c2ecf20Sopenharmony_ci}; 4408c2ecf20Sopenharmony_ci 4418c2ecf20Sopenharmony_cistruct ib_uverbs_resize_cq { 4428c2ecf20Sopenharmony_ci __aligned_u64 response; 4438c2ecf20Sopenharmony_ci __u32 cq_handle; 4448c2ecf20Sopenharmony_ci __u32 cqe; 4458c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 4468c2ecf20Sopenharmony_ci}; 4478c2ecf20Sopenharmony_ci 4488c2ecf20Sopenharmony_cistruct ib_uverbs_resize_cq_resp { 4498c2ecf20Sopenharmony_ci __u32 cqe; 4508c2ecf20Sopenharmony_ci __u32 reserved; 4518c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 4528c2ecf20Sopenharmony_ci}; 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_cistruct ib_uverbs_poll_cq { 4558c2ecf20Sopenharmony_ci __aligned_u64 response; 4568c2ecf20Sopenharmony_ci __u32 cq_handle; 4578c2ecf20Sopenharmony_ci __u32 ne; 4588c2ecf20Sopenharmony_ci}; 4598c2ecf20Sopenharmony_ci 4608c2ecf20Sopenharmony_cienum ib_uverbs_wc_opcode { 4618c2ecf20Sopenharmony_ci IB_UVERBS_WC_SEND = 0, 4628c2ecf20Sopenharmony_ci IB_UVERBS_WC_RDMA_WRITE = 1, 4638c2ecf20Sopenharmony_ci IB_UVERBS_WC_RDMA_READ = 2, 4648c2ecf20Sopenharmony_ci IB_UVERBS_WC_COMP_SWAP = 3, 4658c2ecf20Sopenharmony_ci IB_UVERBS_WC_FETCH_ADD = 4, 4668c2ecf20Sopenharmony_ci IB_UVERBS_WC_BIND_MW = 5, 4678c2ecf20Sopenharmony_ci IB_UVERBS_WC_LOCAL_INV = 6, 4688c2ecf20Sopenharmony_ci IB_UVERBS_WC_TSO = 7, 4698c2ecf20Sopenharmony_ci}; 4708c2ecf20Sopenharmony_ci 4718c2ecf20Sopenharmony_cistruct ib_uverbs_wc { 4728c2ecf20Sopenharmony_ci __aligned_u64 wr_id; 4738c2ecf20Sopenharmony_ci __u32 status; 4748c2ecf20Sopenharmony_ci __u32 opcode; 4758c2ecf20Sopenharmony_ci __u32 vendor_err; 4768c2ecf20Sopenharmony_ci __u32 byte_len; 4778c2ecf20Sopenharmony_ci union { 4788c2ecf20Sopenharmony_ci __be32 imm_data; 4798c2ecf20Sopenharmony_ci __u32 invalidate_rkey; 4808c2ecf20Sopenharmony_ci } ex; 4818c2ecf20Sopenharmony_ci __u32 qp_num; 4828c2ecf20Sopenharmony_ci __u32 src_qp; 4838c2ecf20Sopenharmony_ci __u32 wc_flags; 4848c2ecf20Sopenharmony_ci __u16 pkey_index; 4858c2ecf20Sopenharmony_ci __u16 slid; 4868c2ecf20Sopenharmony_ci __u8 sl; 4878c2ecf20Sopenharmony_ci __u8 dlid_path_bits; 4888c2ecf20Sopenharmony_ci __u8 port_num; 4898c2ecf20Sopenharmony_ci __u8 reserved; 4908c2ecf20Sopenharmony_ci}; 4918c2ecf20Sopenharmony_ci 4928c2ecf20Sopenharmony_cistruct ib_uverbs_poll_cq_resp { 4938c2ecf20Sopenharmony_ci __u32 count; 4948c2ecf20Sopenharmony_ci __u32 reserved; 4958c2ecf20Sopenharmony_ci struct ib_uverbs_wc wc[0]; 4968c2ecf20Sopenharmony_ci}; 4978c2ecf20Sopenharmony_ci 4988c2ecf20Sopenharmony_cistruct ib_uverbs_req_notify_cq { 4998c2ecf20Sopenharmony_ci __u32 cq_handle; 5008c2ecf20Sopenharmony_ci __u32 solicited_only; 5018c2ecf20Sopenharmony_ci}; 5028c2ecf20Sopenharmony_ci 5038c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_cq { 5048c2ecf20Sopenharmony_ci __aligned_u64 response; 5058c2ecf20Sopenharmony_ci __u32 cq_handle; 5068c2ecf20Sopenharmony_ci __u32 reserved; 5078c2ecf20Sopenharmony_ci}; 5088c2ecf20Sopenharmony_ci 5098c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_cq_resp { 5108c2ecf20Sopenharmony_ci __u32 comp_events_reported; 5118c2ecf20Sopenharmony_ci __u32 async_events_reported; 5128c2ecf20Sopenharmony_ci}; 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_cistruct ib_uverbs_global_route { 5158c2ecf20Sopenharmony_ci __u8 dgid[16]; 5168c2ecf20Sopenharmony_ci __u32 flow_label; 5178c2ecf20Sopenharmony_ci __u8 sgid_index; 5188c2ecf20Sopenharmony_ci __u8 hop_limit; 5198c2ecf20Sopenharmony_ci __u8 traffic_class; 5208c2ecf20Sopenharmony_ci __u8 reserved; 5218c2ecf20Sopenharmony_ci}; 5228c2ecf20Sopenharmony_ci 5238c2ecf20Sopenharmony_cistruct ib_uverbs_ah_attr { 5248c2ecf20Sopenharmony_ci struct ib_uverbs_global_route grh; 5258c2ecf20Sopenharmony_ci __u16 dlid; 5268c2ecf20Sopenharmony_ci __u8 sl; 5278c2ecf20Sopenharmony_ci __u8 src_path_bits; 5288c2ecf20Sopenharmony_ci __u8 static_rate; 5298c2ecf20Sopenharmony_ci __u8 is_global; 5308c2ecf20Sopenharmony_ci __u8 port_num; 5318c2ecf20Sopenharmony_ci __u8 reserved; 5328c2ecf20Sopenharmony_ci}; 5338c2ecf20Sopenharmony_ci 5348c2ecf20Sopenharmony_cistruct ib_uverbs_qp_attr { 5358c2ecf20Sopenharmony_ci __u32 qp_attr_mask; 5368c2ecf20Sopenharmony_ci __u32 qp_state; 5378c2ecf20Sopenharmony_ci __u32 cur_qp_state; 5388c2ecf20Sopenharmony_ci __u32 path_mtu; 5398c2ecf20Sopenharmony_ci __u32 path_mig_state; 5408c2ecf20Sopenharmony_ci __u32 qkey; 5418c2ecf20Sopenharmony_ci __u32 rq_psn; 5428c2ecf20Sopenharmony_ci __u32 sq_psn; 5438c2ecf20Sopenharmony_ci __u32 dest_qp_num; 5448c2ecf20Sopenharmony_ci __u32 qp_access_flags; 5458c2ecf20Sopenharmony_ci 5468c2ecf20Sopenharmony_ci struct ib_uverbs_ah_attr ah_attr; 5478c2ecf20Sopenharmony_ci struct ib_uverbs_ah_attr alt_ah_attr; 5488c2ecf20Sopenharmony_ci 5498c2ecf20Sopenharmony_ci /* ib_qp_cap */ 5508c2ecf20Sopenharmony_ci __u32 max_send_wr; 5518c2ecf20Sopenharmony_ci __u32 max_recv_wr; 5528c2ecf20Sopenharmony_ci __u32 max_send_sge; 5538c2ecf20Sopenharmony_ci __u32 max_recv_sge; 5548c2ecf20Sopenharmony_ci __u32 max_inline_data; 5558c2ecf20Sopenharmony_ci 5568c2ecf20Sopenharmony_ci __u16 pkey_index; 5578c2ecf20Sopenharmony_ci __u16 alt_pkey_index; 5588c2ecf20Sopenharmony_ci __u8 en_sqd_async_notify; 5598c2ecf20Sopenharmony_ci __u8 sq_draining; 5608c2ecf20Sopenharmony_ci __u8 max_rd_atomic; 5618c2ecf20Sopenharmony_ci __u8 max_dest_rd_atomic; 5628c2ecf20Sopenharmony_ci __u8 min_rnr_timer; 5638c2ecf20Sopenharmony_ci __u8 port_num; 5648c2ecf20Sopenharmony_ci __u8 timeout; 5658c2ecf20Sopenharmony_ci __u8 retry_cnt; 5668c2ecf20Sopenharmony_ci __u8 rnr_retry; 5678c2ecf20Sopenharmony_ci __u8 alt_port_num; 5688c2ecf20Sopenharmony_ci __u8 alt_timeout; 5698c2ecf20Sopenharmony_ci __u8 reserved[5]; 5708c2ecf20Sopenharmony_ci}; 5718c2ecf20Sopenharmony_ci 5728c2ecf20Sopenharmony_cistruct ib_uverbs_create_qp { 5738c2ecf20Sopenharmony_ci __aligned_u64 response; 5748c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 5758c2ecf20Sopenharmony_ci __u32 pd_handle; 5768c2ecf20Sopenharmony_ci __u32 send_cq_handle; 5778c2ecf20Sopenharmony_ci __u32 recv_cq_handle; 5788c2ecf20Sopenharmony_ci __u32 srq_handle; 5798c2ecf20Sopenharmony_ci __u32 max_send_wr; 5808c2ecf20Sopenharmony_ci __u32 max_recv_wr; 5818c2ecf20Sopenharmony_ci __u32 max_send_sge; 5828c2ecf20Sopenharmony_ci __u32 max_recv_sge; 5838c2ecf20Sopenharmony_ci __u32 max_inline_data; 5848c2ecf20Sopenharmony_ci __u8 sq_sig_all; 5858c2ecf20Sopenharmony_ci __u8 qp_type; 5868c2ecf20Sopenharmony_ci __u8 is_srq; 5878c2ecf20Sopenharmony_ci __u8 reserved; 5888c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 5898c2ecf20Sopenharmony_ci}; 5908c2ecf20Sopenharmony_ci 5918c2ecf20Sopenharmony_cienum ib_uverbs_create_qp_mask { 5928c2ecf20Sopenharmony_ci IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0, 5938c2ecf20Sopenharmony_ci}; 5948c2ecf20Sopenharmony_ci 5958c2ecf20Sopenharmony_cienum { 5968c2ecf20Sopenharmony_ci IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE, 5978c2ecf20Sopenharmony_ci}; 5988c2ecf20Sopenharmony_ci 5998c2ecf20Sopenharmony_cienum { 6008c2ecf20Sopenharmony_ci /* 6018c2ecf20Sopenharmony_ci * This value is equal to IB_QP_DEST_QPN. 6028c2ecf20Sopenharmony_ci */ 6038c2ecf20Sopenharmony_ci IB_USER_LEGACY_LAST_QP_ATTR_MASK = 1ULL << 20, 6048c2ecf20Sopenharmony_ci}; 6058c2ecf20Sopenharmony_ci 6068c2ecf20Sopenharmony_cienum { 6078c2ecf20Sopenharmony_ci /* 6088c2ecf20Sopenharmony_ci * This value is equal to IB_QP_RATE_LIMIT. 6098c2ecf20Sopenharmony_ci */ 6108c2ecf20Sopenharmony_ci IB_USER_LAST_QP_ATTR_MASK = 1ULL << 25, 6118c2ecf20Sopenharmony_ci}; 6128c2ecf20Sopenharmony_ci 6138c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_qp { 6148c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 6158c2ecf20Sopenharmony_ci __u32 pd_handle; 6168c2ecf20Sopenharmony_ci __u32 send_cq_handle; 6178c2ecf20Sopenharmony_ci __u32 recv_cq_handle; 6188c2ecf20Sopenharmony_ci __u32 srq_handle; 6198c2ecf20Sopenharmony_ci __u32 max_send_wr; 6208c2ecf20Sopenharmony_ci __u32 max_recv_wr; 6218c2ecf20Sopenharmony_ci __u32 max_send_sge; 6228c2ecf20Sopenharmony_ci __u32 max_recv_sge; 6238c2ecf20Sopenharmony_ci __u32 max_inline_data; 6248c2ecf20Sopenharmony_ci __u8 sq_sig_all; 6258c2ecf20Sopenharmony_ci __u8 qp_type; 6268c2ecf20Sopenharmony_ci __u8 is_srq; 6278c2ecf20Sopenharmony_ci __u8 reserved; 6288c2ecf20Sopenharmony_ci __u32 comp_mask; 6298c2ecf20Sopenharmony_ci __u32 create_flags; 6308c2ecf20Sopenharmony_ci __u32 rwq_ind_tbl_handle; 6318c2ecf20Sopenharmony_ci __u32 source_qpn; 6328c2ecf20Sopenharmony_ci}; 6338c2ecf20Sopenharmony_ci 6348c2ecf20Sopenharmony_cistruct ib_uverbs_open_qp { 6358c2ecf20Sopenharmony_ci __aligned_u64 response; 6368c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 6378c2ecf20Sopenharmony_ci __u32 pd_handle; 6388c2ecf20Sopenharmony_ci __u32 qpn; 6398c2ecf20Sopenharmony_ci __u8 qp_type; 6408c2ecf20Sopenharmony_ci __u8 reserved[7]; 6418c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 6428c2ecf20Sopenharmony_ci}; 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_ci/* also used for open response */ 6458c2ecf20Sopenharmony_cistruct ib_uverbs_create_qp_resp { 6468c2ecf20Sopenharmony_ci __u32 qp_handle; 6478c2ecf20Sopenharmony_ci __u32 qpn; 6488c2ecf20Sopenharmony_ci __u32 max_send_wr; 6498c2ecf20Sopenharmony_ci __u32 max_recv_wr; 6508c2ecf20Sopenharmony_ci __u32 max_send_sge; 6518c2ecf20Sopenharmony_ci __u32 max_recv_sge; 6528c2ecf20Sopenharmony_ci __u32 max_inline_data; 6538c2ecf20Sopenharmony_ci __u32 reserved; 6548c2ecf20Sopenharmony_ci __u32 driver_data[0]; 6558c2ecf20Sopenharmony_ci}; 6568c2ecf20Sopenharmony_ci 6578c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_qp_resp { 6588c2ecf20Sopenharmony_ci struct ib_uverbs_create_qp_resp base; 6598c2ecf20Sopenharmony_ci __u32 comp_mask; 6608c2ecf20Sopenharmony_ci __u32 response_length; 6618c2ecf20Sopenharmony_ci}; 6628c2ecf20Sopenharmony_ci 6638c2ecf20Sopenharmony_ci/* 6648c2ecf20Sopenharmony_ci * This struct needs to remain a multiple of 8 bytes to keep the 6658c2ecf20Sopenharmony_ci * alignment of the modify QP parameters. 6668c2ecf20Sopenharmony_ci */ 6678c2ecf20Sopenharmony_cistruct ib_uverbs_qp_dest { 6688c2ecf20Sopenharmony_ci __u8 dgid[16]; 6698c2ecf20Sopenharmony_ci __u32 flow_label; 6708c2ecf20Sopenharmony_ci __u16 dlid; 6718c2ecf20Sopenharmony_ci __u16 reserved; 6728c2ecf20Sopenharmony_ci __u8 sgid_index; 6738c2ecf20Sopenharmony_ci __u8 hop_limit; 6748c2ecf20Sopenharmony_ci __u8 traffic_class; 6758c2ecf20Sopenharmony_ci __u8 sl; 6768c2ecf20Sopenharmony_ci __u8 src_path_bits; 6778c2ecf20Sopenharmony_ci __u8 static_rate; 6788c2ecf20Sopenharmony_ci __u8 is_global; 6798c2ecf20Sopenharmony_ci __u8 port_num; 6808c2ecf20Sopenharmony_ci}; 6818c2ecf20Sopenharmony_ci 6828c2ecf20Sopenharmony_cistruct ib_uverbs_query_qp { 6838c2ecf20Sopenharmony_ci __aligned_u64 response; 6848c2ecf20Sopenharmony_ci __u32 qp_handle; 6858c2ecf20Sopenharmony_ci __u32 attr_mask; 6868c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 6878c2ecf20Sopenharmony_ci}; 6888c2ecf20Sopenharmony_ci 6898c2ecf20Sopenharmony_cistruct ib_uverbs_query_qp_resp { 6908c2ecf20Sopenharmony_ci struct ib_uverbs_qp_dest dest; 6918c2ecf20Sopenharmony_ci struct ib_uverbs_qp_dest alt_dest; 6928c2ecf20Sopenharmony_ci __u32 max_send_wr; 6938c2ecf20Sopenharmony_ci __u32 max_recv_wr; 6948c2ecf20Sopenharmony_ci __u32 max_send_sge; 6958c2ecf20Sopenharmony_ci __u32 max_recv_sge; 6968c2ecf20Sopenharmony_ci __u32 max_inline_data; 6978c2ecf20Sopenharmony_ci __u32 qkey; 6988c2ecf20Sopenharmony_ci __u32 rq_psn; 6998c2ecf20Sopenharmony_ci __u32 sq_psn; 7008c2ecf20Sopenharmony_ci __u32 dest_qp_num; 7018c2ecf20Sopenharmony_ci __u32 qp_access_flags; 7028c2ecf20Sopenharmony_ci __u16 pkey_index; 7038c2ecf20Sopenharmony_ci __u16 alt_pkey_index; 7048c2ecf20Sopenharmony_ci __u8 qp_state; 7058c2ecf20Sopenharmony_ci __u8 cur_qp_state; 7068c2ecf20Sopenharmony_ci __u8 path_mtu; 7078c2ecf20Sopenharmony_ci __u8 path_mig_state; 7088c2ecf20Sopenharmony_ci __u8 sq_draining; 7098c2ecf20Sopenharmony_ci __u8 max_rd_atomic; 7108c2ecf20Sopenharmony_ci __u8 max_dest_rd_atomic; 7118c2ecf20Sopenharmony_ci __u8 min_rnr_timer; 7128c2ecf20Sopenharmony_ci __u8 port_num; 7138c2ecf20Sopenharmony_ci __u8 timeout; 7148c2ecf20Sopenharmony_ci __u8 retry_cnt; 7158c2ecf20Sopenharmony_ci __u8 rnr_retry; 7168c2ecf20Sopenharmony_ci __u8 alt_port_num; 7178c2ecf20Sopenharmony_ci __u8 alt_timeout; 7188c2ecf20Sopenharmony_ci __u8 sq_sig_all; 7198c2ecf20Sopenharmony_ci __u8 reserved[5]; 7208c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 7218c2ecf20Sopenharmony_ci}; 7228c2ecf20Sopenharmony_ci 7238c2ecf20Sopenharmony_cistruct ib_uverbs_modify_qp { 7248c2ecf20Sopenharmony_ci struct ib_uverbs_qp_dest dest; 7258c2ecf20Sopenharmony_ci struct ib_uverbs_qp_dest alt_dest; 7268c2ecf20Sopenharmony_ci __u32 qp_handle; 7278c2ecf20Sopenharmony_ci __u32 attr_mask; 7288c2ecf20Sopenharmony_ci __u32 qkey; 7298c2ecf20Sopenharmony_ci __u32 rq_psn; 7308c2ecf20Sopenharmony_ci __u32 sq_psn; 7318c2ecf20Sopenharmony_ci __u32 dest_qp_num; 7328c2ecf20Sopenharmony_ci __u32 qp_access_flags; 7338c2ecf20Sopenharmony_ci __u16 pkey_index; 7348c2ecf20Sopenharmony_ci __u16 alt_pkey_index; 7358c2ecf20Sopenharmony_ci __u8 qp_state; 7368c2ecf20Sopenharmony_ci __u8 cur_qp_state; 7378c2ecf20Sopenharmony_ci __u8 path_mtu; 7388c2ecf20Sopenharmony_ci __u8 path_mig_state; 7398c2ecf20Sopenharmony_ci __u8 en_sqd_async_notify; 7408c2ecf20Sopenharmony_ci __u8 max_rd_atomic; 7418c2ecf20Sopenharmony_ci __u8 max_dest_rd_atomic; 7428c2ecf20Sopenharmony_ci __u8 min_rnr_timer; 7438c2ecf20Sopenharmony_ci __u8 port_num; 7448c2ecf20Sopenharmony_ci __u8 timeout; 7458c2ecf20Sopenharmony_ci __u8 retry_cnt; 7468c2ecf20Sopenharmony_ci __u8 rnr_retry; 7478c2ecf20Sopenharmony_ci __u8 alt_port_num; 7488c2ecf20Sopenharmony_ci __u8 alt_timeout; 7498c2ecf20Sopenharmony_ci __u8 reserved[2]; 7508c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 7518c2ecf20Sopenharmony_ci}; 7528c2ecf20Sopenharmony_ci 7538c2ecf20Sopenharmony_cistruct ib_uverbs_ex_modify_qp { 7548c2ecf20Sopenharmony_ci struct ib_uverbs_modify_qp base; 7558c2ecf20Sopenharmony_ci __u32 rate_limit; 7568c2ecf20Sopenharmony_ci __u32 reserved; 7578c2ecf20Sopenharmony_ci}; 7588c2ecf20Sopenharmony_ci 7598c2ecf20Sopenharmony_cistruct ib_uverbs_ex_modify_qp_resp { 7608c2ecf20Sopenharmony_ci __u32 comp_mask; 7618c2ecf20Sopenharmony_ci __u32 response_length; 7628c2ecf20Sopenharmony_ci}; 7638c2ecf20Sopenharmony_ci 7648c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_qp { 7658c2ecf20Sopenharmony_ci __aligned_u64 response; 7668c2ecf20Sopenharmony_ci __u32 qp_handle; 7678c2ecf20Sopenharmony_ci __u32 reserved; 7688c2ecf20Sopenharmony_ci}; 7698c2ecf20Sopenharmony_ci 7708c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_qp_resp { 7718c2ecf20Sopenharmony_ci __u32 events_reported; 7728c2ecf20Sopenharmony_ci}; 7738c2ecf20Sopenharmony_ci 7748c2ecf20Sopenharmony_ci/* 7758c2ecf20Sopenharmony_ci * The ib_uverbs_sge structure isn't used anywhere, since we assume 7768c2ecf20Sopenharmony_ci * the ib_sge structure is packed the same way on 32-bit and 64-bit 7778c2ecf20Sopenharmony_ci * architectures in both kernel and user space. It's just here to 7788c2ecf20Sopenharmony_ci * document the ABI. 7798c2ecf20Sopenharmony_ci */ 7808c2ecf20Sopenharmony_cistruct ib_uverbs_sge { 7818c2ecf20Sopenharmony_ci __aligned_u64 addr; 7828c2ecf20Sopenharmony_ci __u32 length; 7838c2ecf20Sopenharmony_ci __u32 lkey; 7848c2ecf20Sopenharmony_ci}; 7858c2ecf20Sopenharmony_ci 7868c2ecf20Sopenharmony_cienum ib_uverbs_wr_opcode { 7878c2ecf20Sopenharmony_ci IB_UVERBS_WR_RDMA_WRITE = 0, 7888c2ecf20Sopenharmony_ci IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1, 7898c2ecf20Sopenharmony_ci IB_UVERBS_WR_SEND = 2, 7908c2ecf20Sopenharmony_ci IB_UVERBS_WR_SEND_WITH_IMM = 3, 7918c2ecf20Sopenharmony_ci IB_UVERBS_WR_RDMA_READ = 4, 7928c2ecf20Sopenharmony_ci IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5, 7938c2ecf20Sopenharmony_ci IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6, 7948c2ecf20Sopenharmony_ci IB_UVERBS_WR_LOCAL_INV = 7, 7958c2ecf20Sopenharmony_ci IB_UVERBS_WR_BIND_MW = 8, 7968c2ecf20Sopenharmony_ci IB_UVERBS_WR_SEND_WITH_INV = 9, 7978c2ecf20Sopenharmony_ci IB_UVERBS_WR_TSO = 10, 7988c2ecf20Sopenharmony_ci IB_UVERBS_WR_RDMA_READ_WITH_INV = 11, 7998c2ecf20Sopenharmony_ci IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12, 8008c2ecf20Sopenharmony_ci IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13, 8018c2ecf20Sopenharmony_ci /* Review enum ib_wr_opcode before modifying this */ 8028c2ecf20Sopenharmony_ci}; 8038c2ecf20Sopenharmony_ci 8048c2ecf20Sopenharmony_cistruct ib_uverbs_send_wr { 8058c2ecf20Sopenharmony_ci __aligned_u64 wr_id; 8068c2ecf20Sopenharmony_ci __u32 num_sge; 8078c2ecf20Sopenharmony_ci __u32 opcode; /* see enum ib_uverbs_wr_opcode */ 8088c2ecf20Sopenharmony_ci __u32 send_flags; 8098c2ecf20Sopenharmony_ci union { 8108c2ecf20Sopenharmony_ci __be32 imm_data; 8118c2ecf20Sopenharmony_ci __u32 invalidate_rkey; 8128c2ecf20Sopenharmony_ci } ex; 8138c2ecf20Sopenharmony_ci union { 8148c2ecf20Sopenharmony_ci struct { 8158c2ecf20Sopenharmony_ci __aligned_u64 remote_addr; 8168c2ecf20Sopenharmony_ci __u32 rkey; 8178c2ecf20Sopenharmony_ci __u32 reserved; 8188c2ecf20Sopenharmony_ci } rdma; 8198c2ecf20Sopenharmony_ci struct { 8208c2ecf20Sopenharmony_ci __aligned_u64 remote_addr; 8218c2ecf20Sopenharmony_ci __aligned_u64 compare_add; 8228c2ecf20Sopenharmony_ci __aligned_u64 swap; 8238c2ecf20Sopenharmony_ci __u32 rkey; 8248c2ecf20Sopenharmony_ci __u32 reserved; 8258c2ecf20Sopenharmony_ci } atomic; 8268c2ecf20Sopenharmony_ci struct { 8278c2ecf20Sopenharmony_ci __u32 ah; 8288c2ecf20Sopenharmony_ci __u32 remote_qpn; 8298c2ecf20Sopenharmony_ci __u32 remote_qkey; 8308c2ecf20Sopenharmony_ci __u32 reserved; 8318c2ecf20Sopenharmony_ci } ud; 8328c2ecf20Sopenharmony_ci } wr; 8338c2ecf20Sopenharmony_ci}; 8348c2ecf20Sopenharmony_ci 8358c2ecf20Sopenharmony_cistruct ib_uverbs_post_send { 8368c2ecf20Sopenharmony_ci __aligned_u64 response; 8378c2ecf20Sopenharmony_ci __u32 qp_handle; 8388c2ecf20Sopenharmony_ci __u32 wr_count; 8398c2ecf20Sopenharmony_ci __u32 sge_count; 8408c2ecf20Sopenharmony_ci __u32 wqe_size; 8418c2ecf20Sopenharmony_ci struct ib_uverbs_send_wr send_wr[0]; 8428c2ecf20Sopenharmony_ci}; 8438c2ecf20Sopenharmony_ci 8448c2ecf20Sopenharmony_cistruct ib_uverbs_post_send_resp { 8458c2ecf20Sopenharmony_ci __u32 bad_wr; 8468c2ecf20Sopenharmony_ci}; 8478c2ecf20Sopenharmony_ci 8488c2ecf20Sopenharmony_cistruct ib_uverbs_recv_wr { 8498c2ecf20Sopenharmony_ci __aligned_u64 wr_id; 8508c2ecf20Sopenharmony_ci __u32 num_sge; 8518c2ecf20Sopenharmony_ci __u32 reserved; 8528c2ecf20Sopenharmony_ci}; 8538c2ecf20Sopenharmony_ci 8548c2ecf20Sopenharmony_cistruct ib_uverbs_post_recv { 8558c2ecf20Sopenharmony_ci __aligned_u64 response; 8568c2ecf20Sopenharmony_ci __u32 qp_handle; 8578c2ecf20Sopenharmony_ci __u32 wr_count; 8588c2ecf20Sopenharmony_ci __u32 sge_count; 8598c2ecf20Sopenharmony_ci __u32 wqe_size; 8608c2ecf20Sopenharmony_ci struct ib_uverbs_recv_wr recv_wr[0]; 8618c2ecf20Sopenharmony_ci}; 8628c2ecf20Sopenharmony_ci 8638c2ecf20Sopenharmony_cistruct ib_uverbs_post_recv_resp { 8648c2ecf20Sopenharmony_ci __u32 bad_wr; 8658c2ecf20Sopenharmony_ci}; 8668c2ecf20Sopenharmony_ci 8678c2ecf20Sopenharmony_cistruct ib_uverbs_post_srq_recv { 8688c2ecf20Sopenharmony_ci __aligned_u64 response; 8698c2ecf20Sopenharmony_ci __u32 srq_handle; 8708c2ecf20Sopenharmony_ci __u32 wr_count; 8718c2ecf20Sopenharmony_ci __u32 sge_count; 8728c2ecf20Sopenharmony_ci __u32 wqe_size; 8738c2ecf20Sopenharmony_ci struct ib_uverbs_recv_wr recv[0]; 8748c2ecf20Sopenharmony_ci}; 8758c2ecf20Sopenharmony_ci 8768c2ecf20Sopenharmony_cistruct ib_uverbs_post_srq_recv_resp { 8778c2ecf20Sopenharmony_ci __u32 bad_wr; 8788c2ecf20Sopenharmony_ci}; 8798c2ecf20Sopenharmony_ci 8808c2ecf20Sopenharmony_cistruct ib_uverbs_create_ah { 8818c2ecf20Sopenharmony_ci __aligned_u64 response; 8828c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 8838c2ecf20Sopenharmony_ci __u32 pd_handle; 8848c2ecf20Sopenharmony_ci __u32 reserved; 8858c2ecf20Sopenharmony_ci struct ib_uverbs_ah_attr attr; 8868c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 8878c2ecf20Sopenharmony_ci}; 8888c2ecf20Sopenharmony_ci 8898c2ecf20Sopenharmony_cistruct ib_uverbs_create_ah_resp { 8908c2ecf20Sopenharmony_ci __u32 ah_handle; 8918c2ecf20Sopenharmony_ci __u32 driver_data[0]; 8928c2ecf20Sopenharmony_ci}; 8938c2ecf20Sopenharmony_ci 8948c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_ah { 8958c2ecf20Sopenharmony_ci __u32 ah_handle; 8968c2ecf20Sopenharmony_ci}; 8978c2ecf20Sopenharmony_ci 8988c2ecf20Sopenharmony_cistruct ib_uverbs_attach_mcast { 8998c2ecf20Sopenharmony_ci __u8 gid[16]; 9008c2ecf20Sopenharmony_ci __u32 qp_handle; 9018c2ecf20Sopenharmony_ci __u16 mlid; 9028c2ecf20Sopenharmony_ci __u16 reserved; 9038c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 9048c2ecf20Sopenharmony_ci}; 9058c2ecf20Sopenharmony_ci 9068c2ecf20Sopenharmony_cistruct ib_uverbs_detach_mcast { 9078c2ecf20Sopenharmony_ci __u8 gid[16]; 9088c2ecf20Sopenharmony_ci __u32 qp_handle; 9098c2ecf20Sopenharmony_ci __u16 mlid; 9108c2ecf20Sopenharmony_ci __u16 reserved; 9118c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 9128c2ecf20Sopenharmony_ci}; 9138c2ecf20Sopenharmony_ci 9148c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_hdr { 9158c2ecf20Sopenharmony_ci __u32 type; 9168c2ecf20Sopenharmony_ci __u16 size; 9178c2ecf20Sopenharmony_ci __u16 reserved; 9188c2ecf20Sopenharmony_ci /* followed by flow_spec */ 9198c2ecf20Sopenharmony_ci __aligned_u64 flow_spec_data[0]; 9208c2ecf20Sopenharmony_ci}; 9218c2ecf20Sopenharmony_ci 9228c2ecf20Sopenharmony_cistruct ib_uverbs_flow_eth_filter { 9238c2ecf20Sopenharmony_ci __u8 dst_mac[6]; 9248c2ecf20Sopenharmony_ci __u8 src_mac[6]; 9258c2ecf20Sopenharmony_ci __be16 ether_type; 9268c2ecf20Sopenharmony_ci __be16 vlan_tag; 9278c2ecf20Sopenharmony_ci}; 9288c2ecf20Sopenharmony_ci 9298c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_eth { 9308c2ecf20Sopenharmony_ci union { 9318c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 9328c2ecf20Sopenharmony_ci struct { 9338c2ecf20Sopenharmony_ci __u32 type; 9348c2ecf20Sopenharmony_ci __u16 size; 9358c2ecf20Sopenharmony_ci __u16 reserved; 9368c2ecf20Sopenharmony_ci }; 9378c2ecf20Sopenharmony_ci }; 9388c2ecf20Sopenharmony_ci struct ib_uverbs_flow_eth_filter val; 9398c2ecf20Sopenharmony_ci struct ib_uverbs_flow_eth_filter mask; 9408c2ecf20Sopenharmony_ci}; 9418c2ecf20Sopenharmony_ci 9428c2ecf20Sopenharmony_cistruct ib_uverbs_flow_ipv4_filter { 9438c2ecf20Sopenharmony_ci __be32 src_ip; 9448c2ecf20Sopenharmony_ci __be32 dst_ip; 9458c2ecf20Sopenharmony_ci __u8 proto; 9468c2ecf20Sopenharmony_ci __u8 tos; 9478c2ecf20Sopenharmony_ci __u8 ttl; 9488c2ecf20Sopenharmony_ci __u8 flags; 9498c2ecf20Sopenharmony_ci}; 9508c2ecf20Sopenharmony_ci 9518c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_ipv4 { 9528c2ecf20Sopenharmony_ci union { 9538c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 9548c2ecf20Sopenharmony_ci struct { 9558c2ecf20Sopenharmony_ci __u32 type; 9568c2ecf20Sopenharmony_ci __u16 size; 9578c2ecf20Sopenharmony_ci __u16 reserved; 9588c2ecf20Sopenharmony_ci }; 9598c2ecf20Sopenharmony_ci }; 9608c2ecf20Sopenharmony_ci struct ib_uverbs_flow_ipv4_filter val; 9618c2ecf20Sopenharmony_ci struct ib_uverbs_flow_ipv4_filter mask; 9628c2ecf20Sopenharmony_ci}; 9638c2ecf20Sopenharmony_ci 9648c2ecf20Sopenharmony_cistruct ib_uverbs_flow_tcp_udp_filter { 9658c2ecf20Sopenharmony_ci __be16 dst_port; 9668c2ecf20Sopenharmony_ci __be16 src_port; 9678c2ecf20Sopenharmony_ci}; 9688c2ecf20Sopenharmony_ci 9698c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_tcp_udp { 9708c2ecf20Sopenharmony_ci union { 9718c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 9728c2ecf20Sopenharmony_ci struct { 9738c2ecf20Sopenharmony_ci __u32 type; 9748c2ecf20Sopenharmony_ci __u16 size; 9758c2ecf20Sopenharmony_ci __u16 reserved; 9768c2ecf20Sopenharmony_ci }; 9778c2ecf20Sopenharmony_ci }; 9788c2ecf20Sopenharmony_ci struct ib_uverbs_flow_tcp_udp_filter val; 9798c2ecf20Sopenharmony_ci struct ib_uverbs_flow_tcp_udp_filter mask; 9808c2ecf20Sopenharmony_ci}; 9818c2ecf20Sopenharmony_ci 9828c2ecf20Sopenharmony_cistruct ib_uverbs_flow_ipv6_filter { 9838c2ecf20Sopenharmony_ci __u8 src_ip[16]; 9848c2ecf20Sopenharmony_ci __u8 dst_ip[16]; 9858c2ecf20Sopenharmony_ci __be32 flow_label; 9868c2ecf20Sopenharmony_ci __u8 next_hdr; 9878c2ecf20Sopenharmony_ci __u8 traffic_class; 9888c2ecf20Sopenharmony_ci __u8 hop_limit; 9898c2ecf20Sopenharmony_ci __u8 reserved; 9908c2ecf20Sopenharmony_ci}; 9918c2ecf20Sopenharmony_ci 9928c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_ipv6 { 9938c2ecf20Sopenharmony_ci union { 9948c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 9958c2ecf20Sopenharmony_ci struct { 9968c2ecf20Sopenharmony_ci __u32 type; 9978c2ecf20Sopenharmony_ci __u16 size; 9988c2ecf20Sopenharmony_ci __u16 reserved; 9998c2ecf20Sopenharmony_ci }; 10008c2ecf20Sopenharmony_ci }; 10018c2ecf20Sopenharmony_ci struct ib_uverbs_flow_ipv6_filter val; 10028c2ecf20Sopenharmony_ci struct ib_uverbs_flow_ipv6_filter mask; 10038c2ecf20Sopenharmony_ci}; 10048c2ecf20Sopenharmony_ci 10058c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_action_tag { 10068c2ecf20Sopenharmony_ci union { 10078c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10088c2ecf20Sopenharmony_ci struct { 10098c2ecf20Sopenharmony_ci __u32 type; 10108c2ecf20Sopenharmony_ci __u16 size; 10118c2ecf20Sopenharmony_ci __u16 reserved; 10128c2ecf20Sopenharmony_ci }; 10138c2ecf20Sopenharmony_ci }; 10148c2ecf20Sopenharmony_ci __u32 tag_id; 10158c2ecf20Sopenharmony_ci __u32 reserved1; 10168c2ecf20Sopenharmony_ci}; 10178c2ecf20Sopenharmony_ci 10188c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_action_drop { 10198c2ecf20Sopenharmony_ci union { 10208c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10218c2ecf20Sopenharmony_ci struct { 10228c2ecf20Sopenharmony_ci __u32 type; 10238c2ecf20Sopenharmony_ci __u16 size; 10248c2ecf20Sopenharmony_ci __u16 reserved; 10258c2ecf20Sopenharmony_ci }; 10268c2ecf20Sopenharmony_ci }; 10278c2ecf20Sopenharmony_ci}; 10288c2ecf20Sopenharmony_ci 10298c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_action_handle { 10308c2ecf20Sopenharmony_ci union { 10318c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10328c2ecf20Sopenharmony_ci struct { 10338c2ecf20Sopenharmony_ci __u32 type; 10348c2ecf20Sopenharmony_ci __u16 size; 10358c2ecf20Sopenharmony_ci __u16 reserved; 10368c2ecf20Sopenharmony_ci }; 10378c2ecf20Sopenharmony_ci }; 10388c2ecf20Sopenharmony_ci __u32 handle; 10398c2ecf20Sopenharmony_ci __u32 reserved1; 10408c2ecf20Sopenharmony_ci}; 10418c2ecf20Sopenharmony_ci 10428c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_action_count { 10438c2ecf20Sopenharmony_ci union { 10448c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10458c2ecf20Sopenharmony_ci struct { 10468c2ecf20Sopenharmony_ci __u32 type; 10478c2ecf20Sopenharmony_ci __u16 size; 10488c2ecf20Sopenharmony_ci __u16 reserved; 10498c2ecf20Sopenharmony_ci }; 10508c2ecf20Sopenharmony_ci }; 10518c2ecf20Sopenharmony_ci __u32 handle; 10528c2ecf20Sopenharmony_ci __u32 reserved1; 10538c2ecf20Sopenharmony_ci}; 10548c2ecf20Sopenharmony_ci 10558c2ecf20Sopenharmony_cistruct ib_uverbs_flow_tunnel_filter { 10568c2ecf20Sopenharmony_ci __be32 tunnel_id; 10578c2ecf20Sopenharmony_ci}; 10588c2ecf20Sopenharmony_ci 10598c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_tunnel { 10608c2ecf20Sopenharmony_ci union { 10618c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10628c2ecf20Sopenharmony_ci struct { 10638c2ecf20Sopenharmony_ci __u32 type; 10648c2ecf20Sopenharmony_ci __u16 size; 10658c2ecf20Sopenharmony_ci __u16 reserved; 10668c2ecf20Sopenharmony_ci }; 10678c2ecf20Sopenharmony_ci }; 10688c2ecf20Sopenharmony_ci struct ib_uverbs_flow_tunnel_filter val; 10698c2ecf20Sopenharmony_ci struct ib_uverbs_flow_tunnel_filter mask; 10708c2ecf20Sopenharmony_ci}; 10718c2ecf20Sopenharmony_ci 10728c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_esp_filter { 10738c2ecf20Sopenharmony_ci __u32 spi; 10748c2ecf20Sopenharmony_ci __u32 seq; 10758c2ecf20Sopenharmony_ci}; 10768c2ecf20Sopenharmony_ci 10778c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_esp { 10788c2ecf20Sopenharmony_ci union { 10798c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 10808c2ecf20Sopenharmony_ci struct { 10818c2ecf20Sopenharmony_ci __u32 type; 10828c2ecf20Sopenharmony_ci __u16 size; 10838c2ecf20Sopenharmony_ci __u16 reserved; 10848c2ecf20Sopenharmony_ci }; 10858c2ecf20Sopenharmony_ci }; 10868c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_esp_filter val; 10878c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_esp_filter mask; 10888c2ecf20Sopenharmony_ci}; 10898c2ecf20Sopenharmony_ci 10908c2ecf20Sopenharmony_cistruct ib_uverbs_flow_gre_filter { 10918c2ecf20Sopenharmony_ci /* c_ks_res0_ver field is bits 0-15 in offset 0 of a standard GRE header: 10928c2ecf20Sopenharmony_ci * bit 0 - C - checksum bit. 10938c2ecf20Sopenharmony_ci * bit 1 - reserved. set to 0. 10948c2ecf20Sopenharmony_ci * bit 2 - key bit. 10958c2ecf20Sopenharmony_ci * bit 3 - sequence number bit. 10968c2ecf20Sopenharmony_ci * bits 4:12 - reserved. set to 0. 10978c2ecf20Sopenharmony_ci * bits 13:15 - GRE version. 10988c2ecf20Sopenharmony_ci */ 10998c2ecf20Sopenharmony_ci __be16 c_ks_res0_ver; 11008c2ecf20Sopenharmony_ci __be16 protocol; 11018c2ecf20Sopenharmony_ci __be32 key; 11028c2ecf20Sopenharmony_ci}; 11038c2ecf20Sopenharmony_ci 11048c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_gre { 11058c2ecf20Sopenharmony_ci union { 11068c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 11078c2ecf20Sopenharmony_ci struct { 11088c2ecf20Sopenharmony_ci __u32 type; 11098c2ecf20Sopenharmony_ci __u16 size; 11108c2ecf20Sopenharmony_ci __u16 reserved; 11118c2ecf20Sopenharmony_ci }; 11128c2ecf20Sopenharmony_ci }; 11138c2ecf20Sopenharmony_ci struct ib_uverbs_flow_gre_filter val; 11148c2ecf20Sopenharmony_ci struct ib_uverbs_flow_gre_filter mask; 11158c2ecf20Sopenharmony_ci}; 11168c2ecf20Sopenharmony_ci 11178c2ecf20Sopenharmony_cistruct ib_uverbs_flow_mpls_filter { 11188c2ecf20Sopenharmony_ci /* The field includes the entire MPLS label: 11198c2ecf20Sopenharmony_ci * bits 0:19 - label field. 11208c2ecf20Sopenharmony_ci * bits 20:22 - traffic class field. 11218c2ecf20Sopenharmony_ci * bits 23 - bottom of stack bit. 11228c2ecf20Sopenharmony_ci * bits 24:31 - ttl field. 11238c2ecf20Sopenharmony_ci */ 11248c2ecf20Sopenharmony_ci __be32 label; 11258c2ecf20Sopenharmony_ci}; 11268c2ecf20Sopenharmony_ci 11278c2ecf20Sopenharmony_cistruct ib_uverbs_flow_spec_mpls { 11288c2ecf20Sopenharmony_ci union { 11298c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr hdr; 11308c2ecf20Sopenharmony_ci struct { 11318c2ecf20Sopenharmony_ci __u32 type; 11328c2ecf20Sopenharmony_ci __u16 size; 11338c2ecf20Sopenharmony_ci __u16 reserved; 11348c2ecf20Sopenharmony_ci }; 11358c2ecf20Sopenharmony_ci }; 11368c2ecf20Sopenharmony_ci struct ib_uverbs_flow_mpls_filter val; 11378c2ecf20Sopenharmony_ci struct ib_uverbs_flow_mpls_filter mask; 11388c2ecf20Sopenharmony_ci}; 11398c2ecf20Sopenharmony_ci 11408c2ecf20Sopenharmony_cistruct ib_uverbs_flow_attr { 11418c2ecf20Sopenharmony_ci __u32 type; 11428c2ecf20Sopenharmony_ci __u16 size; 11438c2ecf20Sopenharmony_ci __u16 priority; 11448c2ecf20Sopenharmony_ci __u8 num_of_specs; 11458c2ecf20Sopenharmony_ci __u8 reserved[2]; 11468c2ecf20Sopenharmony_ci __u8 port; 11478c2ecf20Sopenharmony_ci __u32 flags; 11488c2ecf20Sopenharmony_ci /* Following are the optional layers according to user request 11498c2ecf20Sopenharmony_ci * struct ib_flow_spec_xxx 11508c2ecf20Sopenharmony_ci * struct ib_flow_spec_yyy 11518c2ecf20Sopenharmony_ci */ 11528c2ecf20Sopenharmony_ci struct ib_uverbs_flow_spec_hdr flow_specs[0]; 11538c2ecf20Sopenharmony_ci}; 11548c2ecf20Sopenharmony_ci 11558c2ecf20Sopenharmony_cistruct ib_uverbs_create_flow { 11568c2ecf20Sopenharmony_ci __u32 comp_mask; 11578c2ecf20Sopenharmony_ci __u32 qp_handle; 11588c2ecf20Sopenharmony_ci struct ib_uverbs_flow_attr flow_attr; 11598c2ecf20Sopenharmony_ci}; 11608c2ecf20Sopenharmony_ci 11618c2ecf20Sopenharmony_cistruct ib_uverbs_create_flow_resp { 11628c2ecf20Sopenharmony_ci __u32 comp_mask; 11638c2ecf20Sopenharmony_ci __u32 flow_handle; 11648c2ecf20Sopenharmony_ci}; 11658c2ecf20Sopenharmony_ci 11668c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_flow { 11678c2ecf20Sopenharmony_ci __u32 comp_mask; 11688c2ecf20Sopenharmony_ci __u32 flow_handle; 11698c2ecf20Sopenharmony_ci}; 11708c2ecf20Sopenharmony_ci 11718c2ecf20Sopenharmony_cistruct ib_uverbs_create_srq { 11728c2ecf20Sopenharmony_ci __aligned_u64 response; 11738c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 11748c2ecf20Sopenharmony_ci __u32 pd_handle; 11758c2ecf20Sopenharmony_ci __u32 max_wr; 11768c2ecf20Sopenharmony_ci __u32 max_sge; 11778c2ecf20Sopenharmony_ci __u32 srq_limit; 11788c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 11798c2ecf20Sopenharmony_ci}; 11808c2ecf20Sopenharmony_ci 11818c2ecf20Sopenharmony_cistruct ib_uverbs_create_xsrq { 11828c2ecf20Sopenharmony_ci __aligned_u64 response; 11838c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 11848c2ecf20Sopenharmony_ci __u32 srq_type; 11858c2ecf20Sopenharmony_ci __u32 pd_handle; 11868c2ecf20Sopenharmony_ci __u32 max_wr; 11878c2ecf20Sopenharmony_ci __u32 max_sge; 11888c2ecf20Sopenharmony_ci __u32 srq_limit; 11898c2ecf20Sopenharmony_ci __u32 max_num_tags; 11908c2ecf20Sopenharmony_ci __u32 xrcd_handle; 11918c2ecf20Sopenharmony_ci __u32 cq_handle; 11928c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 11938c2ecf20Sopenharmony_ci}; 11948c2ecf20Sopenharmony_ci 11958c2ecf20Sopenharmony_cistruct ib_uverbs_create_srq_resp { 11968c2ecf20Sopenharmony_ci __u32 srq_handle; 11978c2ecf20Sopenharmony_ci __u32 max_wr; 11988c2ecf20Sopenharmony_ci __u32 max_sge; 11998c2ecf20Sopenharmony_ci __u32 srqn; 12008c2ecf20Sopenharmony_ci __u32 driver_data[0]; 12018c2ecf20Sopenharmony_ci}; 12028c2ecf20Sopenharmony_ci 12038c2ecf20Sopenharmony_cistruct ib_uverbs_modify_srq { 12048c2ecf20Sopenharmony_ci __u32 srq_handle; 12058c2ecf20Sopenharmony_ci __u32 attr_mask; 12068c2ecf20Sopenharmony_ci __u32 max_wr; 12078c2ecf20Sopenharmony_ci __u32 srq_limit; 12088c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 12098c2ecf20Sopenharmony_ci}; 12108c2ecf20Sopenharmony_ci 12118c2ecf20Sopenharmony_cistruct ib_uverbs_query_srq { 12128c2ecf20Sopenharmony_ci __aligned_u64 response; 12138c2ecf20Sopenharmony_ci __u32 srq_handle; 12148c2ecf20Sopenharmony_ci __u32 reserved; 12158c2ecf20Sopenharmony_ci __aligned_u64 driver_data[0]; 12168c2ecf20Sopenharmony_ci}; 12178c2ecf20Sopenharmony_ci 12188c2ecf20Sopenharmony_cistruct ib_uverbs_query_srq_resp { 12198c2ecf20Sopenharmony_ci __u32 max_wr; 12208c2ecf20Sopenharmony_ci __u32 max_sge; 12218c2ecf20Sopenharmony_ci __u32 srq_limit; 12228c2ecf20Sopenharmony_ci __u32 reserved; 12238c2ecf20Sopenharmony_ci}; 12248c2ecf20Sopenharmony_ci 12258c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_srq { 12268c2ecf20Sopenharmony_ci __aligned_u64 response; 12278c2ecf20Sopenharmony_ci __u32 srq_handle; 12288c2ecf20Sopenharmony_ci __u32 reserved; 12298c2ecf20Sopenharmony_ci}; 12308c2ecf20Sopenharmony_ci 12318c2ecf20Sopenharmony_cistruct ib_uverbs_destroy_srq_resp { 12328c2ecf20Sopenharmony_ci __u32 events_reported; 12338c2ecf20Sopenharmony_ci}; 12348c2ecf20Sopenharmony_ci 12358c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_wq { 12368c2ecf20Sopenharmony_ci __u32 comp_mask; 12378c2ecf20Sopenharmony_ci __u32 wq_type; 12388c2ecf20Sopenharmony_ci __aligned_u64 user_handle; 12398c2ecf20Sopenharmony_ci __u32 pd_handle; 12408c2ecf20Sopenharmony_ci __u32 cq_handle; 12418c2ecf20Sopenharmony_ci __u32 max_wr; 12428c2ecf20Sopenharmony_ci __u32 max_sge; 12438c2ecf20Sopenharmony_ci __u32 create_flags; /* Use enum ib_wq_flags */ 12448c2ecf20Sopenharmony_ci __u32 reserved; 12458c2ecf20Sopenharmony_ci}; 12468c2ecf20Sopenharmony_ci 12478c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_wq_resp { 12488c2ecf20Sopenharmony_ci __u32 comp_mask; 12498c2ecf20Sopenharmony_ci __u32 response_length; 12508c2ecf20Sopenharmony_ci __u32 wq_handle; 12518c2ecf20Sopenharmony_ci __u32 max_wr; 12528c2ecf20Sopenharmony_ci __u32 max_sge; 12538c2ecf20Sopenharmony_ci __u32 wqn; 12548c2ecf20Sopenharmony_ci}; 12558c2ecf20Sopenharmony_ci 12568c2ecf20Sopenharmony_cistruct ib_uverbs_ex_destroy_wq { 12578c2ecf20Sopenharmony_ci __u32 comp_mask; 12588c2ecf20Sopenharmony_ci __u32 wq_handle; 12598c2ecf20Sopenharmony_ci}; 12608c2ecf20Sopenharmony_ci 12618c2ecf20Sopenharmony_cistruct ib_uverbs_ex_destroy_wq_resp { 12628c2ecf20Sopenharmony_ci __u32 comp_mask; 12638c2ecf20Sopenharmony_ci __u32 response_length; 12648c2ecf20Sopenharmony_ci __u32 events_reported; 12658c2ecf20Sopenharmony_ci __u32 reserved; 12668c2ecf20Sopenharmony_ci}; 12678c2ecf20Sopenharmony_ci 12688c2ecf20Sopenharmony_cistruct ib_uverbs_ex_modify_wq { 12698c2ecf20Sopenharmony_ci __u32 attr_mask; 12708c2ecf20Sopenharmony_ci __u32 wq_handle; 12718c2ecf20Sopenharmony_ci __u32 wq_state; 12728c2ecf20Sopenharmony_ci __u32 curr_wq_state; 12738c2ecf20Sopenharmony_ci __u32 flags; /* Use enum ib_wq_flags */ 12748c2ecf20Sopenharmony_ci __u32 flags_mask; /* Use enum ib_wq_flags */ 12758c2ecf20Sopenharmony_ci}; 12768c2ecf20Sopenharmony_ci 12778c2ecf20Sopenharmony_ci/* Prevent memory allocation rather than max expected size */ 12788c2ecf20Sopenharmony_ci#define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d 12798c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_rwq_ind_table { 12808c2ecf20Sopenharmony_ci __u32 comp_mask; 12818c2ecf20Sopenharmony_ci __u32 log_ind_tbl_size; 12828c2ecf20Sopenharmony_ci /* Following are the wq handles according to log_ind_tbl_size 12838c2ecf20Sopenharmony_ci * wq_handle1 12848c2ecf20Sopenharmony_ci * wq_handle2 12858c2ecf20Sopenharmony_ci */ 12868c2ecf20Sopenharmony_ci __u32 wq_handles[0]; 12878c2ecf20Sopenharmony_ci}; 12888c2ecf20Sopenharmony_ci 12898c2ecf20Sopenharmony_cistruct ib_uverbs_ex_create_rwq_ind_table_resp { 12908c2ecf20Sopenharmony_ci __u32 comp_mask; 12918c2ecf20Sopenharmony_ci __u32 response_length; 12928c2ecf20Sopenharmony_ci __u32 ind_tbl_handle; 12938c2ecf20Sopenharmony_ci __u32 ind_tbl_num; 12948c2ecf20Sopenharmony_ci}; 12958c2ecf20Sopenharmony_ci 12968c2ecf20Sopenharmony_cistruct ib_uverbs_ex_destroy_rwq_ind_table { 12978c2ecf20Sopenharmony_ci __u32 comp_mask; 12988c2ecf20Sopenharmony_ci __u32 ind_tbl_handle; 12998c2ecf20Sopenharmony_ci}; 13008c2ecf20Sopenharmony_ci 13018c2ecf20Sopenharmony_cistruct ib_uverbs_cq_moderation { 13028c2ecf20Sopenharmony_ci __u16 cq_count; 13038c2ecf20Sopenharmony_ci __u16 cq_period; 13048c2ecf20Sopenharmony_ci}; 13058c2ecf20Sopenharmony_ci 13068c2ecf20Sopenharmony_cistruct ib_uverbs_ex_modify_cq { 13078c2ecf20Sopenharmony_ci __u32 cq_handle; 13088c2ecf20Sopenharmony_ci __u32 attr_mask; 13098c2ecf20Sopenharmony_ci struct ib_uverbs_cq_moderation attr; 13108c2ecf20Sopenharmony_ci __u32 reserved; 13118c2ecf20Sopenharmony_ci}; 13128c2ecf20Sopenharmony_ci 13138c2ecf20Sopenharmony_ci#define IB_DEVICE_NAME_MAX 64 13148c2ecf20Sopenharmony_ci 13158c2ecf20Sopenharmony_ci#endif /* IB_USER_VERBS_H */ 1316