1 /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */ 2 /* 3 * Copyright (c) 2022, Microsoft Corporation. All rights reserved. 4 */ 5 6 #ifndef MANA_ABI_USER_H 7 #define MANA_ABI_USER_H 8 9 #include <linux/types.h> 10 #include <rdma/ib_user_ioctl_verbs.h> 11 12 /* 13 * Increment this value if any changes that break userspace ABI 14 * compatibility are made. 15 */ 16 17 #define MANA_IB_UVERBS_ABI_VERSION 1 18 19 enum mana_ib_create_cq_flags { 20 MANA_IB_CREATE_RNIC_CQ = 1 << 0, 21 }; 22 23 struct mana_ib_create_cq { 24 __aligned_u64 buf_addr; 25 __u16 flags; 26 __u16 reserved0; 27 __u32 reserved1; 28 }; 29 30 struct mana_ib_create_cq_resp { 31 __u32 cqid; 32 __u32 reserved; 33 }; 34 35 struct mana_ib_create_qp { 36 __aligned_u64 sq_buf_addr; 37 __u32 sq_buf_size; 38 __u32 port; 39 }; 40 41 struct mana_ib_create_qp_resp { 42 __u32 sqid; 43 __u32 cqid; 44 __u32 tx_vp_offset; 45 __u32 reserved; 46 }; 47 48 struct mana_ib_create_rc_qp { 49 __aligned_u64 queue_buf[4]; 50 __u32 queue_size[4]; 51 }; 52 53 struct mana_ib_create_rc_qp_resp { 54 __u32 queue_id[4]; 55 }; 56 57 struct mana_ib_create_wq { 58 __aligned_u64 wq_buf_addr; 59 __u32 wq_buf_size; 60 __u32 reserved; 61 }; 62 63 /* RX Hash function flags */ 64 enum mana_ib_rx_hash_function_flags { 65 MANA_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0, 66 }; 67 68 struct mana_ib_create_qp_rss { 69 __aligned_u64 rx_hash_fields_mask; 70 __u8 rx_hash_function; 71 __u8 reserved[7]; 72 __u32 rx_hash_key_len; 73 __u8 rx_hash_key[40]; 74 __u32 port; 75 }; 76 77 struct rss_resp_entry { 78 __u32 cqid; 79 __u32 wqid; 80 }; 81 82 struct mana_ib_create_qp_rss_resp { 83 __aligned_u64 num_entries; 84 struct rss_resp_entry entries[64]; 85 }; 86 87 #endif 88