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