1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR Linux-OpenIB) */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * Copyright (c) 2007 Cisco Systems, Inc. All rights reserved. 4*f80ad8b4SAndroid Build Coastguard Worker * Copyright (c) 2007, 2008 Mellanox Technologies. All rights reserved. 5*f80ad8b4SAndroid Build Coastguard Worker * 6*f80ad8b4SAndroid Build Coastguard Worker * This software is available to you under a choice of one of two 7*f80ad8b4SAndroid Build Coastguard Worker * licenses. You may choose to be licensed under the terms of the GNU 8*f80ad8b4SAndroid Build Coastguard Worker * General Public License (GPL) Version 2, available from the file 9*f80ad8b4SAndroid Build Coastguard Worker * COPYING in the main directory of this source tree, or the 10*f80ad8b4SAndroid Build Coastguard Worker * OpenIB.org BSD license below: 11*f80ad8b4SAndroid Build Coastguard Worker * 12*f80ad8b4SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or 13*f80ad8b4SAndroid Build Coastguard Worker * without modification, are permitted provided that the following 14*f80ad8b4SAndroid Build Coastguard Worker * conditions are met: 15*f80ad8b4SAndroid Build Coastguard Worker * 16*f80ad8b4SAndroid Build Coastguard Worker * - Redistributions of source code must retain the above 17*f80ad8b4SAndroid Build Coastguard Worker * copyright notice, this list of conditions and the following 18*f80ad8b4SAndroid Build Coastguard Worker * disclaimer. 19*f80ad8b4SAndroid Build Coastguard Worker * 20*f80ad8b4SAndroid Build Coastguard Worker * - Redistributions in binary form must reproduce the above 21*f80ad8b4SAndroid Build Coastguard Worker * copyright notice, this list of conditions and the following 22*f80ad8b4SAndroid Build Coastguard Worker * disclaimer in the documentation and/or other materials 23*f80ad8b4SAndroid Build Coastguard Worker * provided with the distribution. 24*f80ad8b4SAndroid Build Coastguard Worker * 25*f80ad8b4SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26*f80ad8b4SAndroid Build Coastguard Worker * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27*f80ad8b4SAndroid Build Coastguard Worker * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28*f80ad8b4SAndroid Build Coastguard Worker * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29*f80ad8b4SAndroid Build Coastguard Worker * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30*f80ad8b4SAndroid Build Coastguard Worker * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31*f80ad8b4SAndroid Build Coastguard Worker * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32*f80ad8b4SAndroid Build Coastguard Worker * SOFTWARE. 33*f80ad8b4SAndroid Build Coastguard Worker */ 34*f80ad8b4SAndroid Build Coastguard Worker 35*f80ad8b4SAndroid Build Coastguard Worker #ifndef MLX4_ABI_USER_H 36*f80ad8b4SAndroid Build Coastguard Worker #define MLX4_ABI_USER_H 37*f80ad8b4SAndroid Build Coastguard Worker 38*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 39*f80ad8b4SAndroid Build Coastguard Worker 40*f80ad8b4SAndroid Build Coastguard Worker /* 41*f80ad8b4SAndroid Build Coastguard Worker * Increment this value if any changes that break userspace ABI 42*f80ad8b4SAndroid Build Coastguard Worker * compatibility are made. 43*f80ad8b4SAndroid Build Coastguard Worker */ 44*f80ad8b4SAndroid Build Coastguard Worker 45*f80ad8b4SAndroid Build Coastguard Worker #define MLX4_IB_UVERBS_NO_DEV_CAPS_ABI_VERSION 3 46*f80ad8b4SAndroid Build Coastguard Worker #define MLX4_IB_UVERBS_ABI_VERSION 4 47*f80ad8b4SAndroid Build Coastguard Worker 48*f80ad8b4SAndroid Build Coastguard Worker /* 49*f80ad8b4SAndroid Build Coastguard Worker * Make sure that all structs defined in this file remain laid out so 50*f80ad8b4SAndroid Build Coastguard Worker * that they pack the same way on 32-bit and 64-bit architectures (to 51*f80ad8b4SAndroid Build Coastguard Worker * avoid incompatibility between 32-bit userspace and 64-bit kernels). 52*f80ad8b4SAndroid Build Coastguard Worker * In particular do not use pointer types -- pass pointers in __u64 53*f80ad8b4SAndroid Build Coastguard Worker * instead. 54*f80ad8b4SAndroid Build Coastguard Worker */ 55*f80ad8b4SAndroid Build Coastguard Worker 56*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_alloc_ucontext_resp_v3 { 57*f80ad8b4SAndroid Build Coastguard Worker __u32 qp_tab_size; 58*f80ad8b4SAndroid Build Coastguard Worker __u16 bf_reg_size; 59*f80ad8b4SAndroid Build Coastguard Worker __u16 bf_regs_per_page; 60*f80ad8b4SAndroid Build Coastguard Worker }; 61*f80ad8b4SAndroid Build Coastguard Worker 62*f80ad8b4SAndroid Build Coastguard Worker enum { 63*f80ad8b4SAndroid Build Coastguard Worker MLX4_USER_DEV_CAP_LARGE_CQE = 1L << 0, 64*f80ad8b4SAndroid Build Coastguard Worker }; 65*f80ad8b4SAndroid Build Coastguard Worker 66*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_alloc_ucontext_resp { 67*f80ad8b4SAndroid Build Coastguard Worker __u32 dev_caps; 68*f80ad8b4SAndroid Build Coastguard Worker __u32 qp_tab_size; 69*f80ad8b4SAndroid Build Coastguard Worker __u16 bf_reg_size; 70*f80ad8b4SAndroid Build Coastguard Worker __u16 bf_regs_per_page; 71*f80ad8b4SAndroid Build Coastguard Worker __u32 cqe_size; 72*f80ad8b4SAndroid Build Coastguard Worker }; 73*f80ad8b4SAndroid Build Coastguard Worker 74*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_alloc_pd_resp { 75*f80ad8b4SAndroid Build Coastguard Worker __u32 pdn; 76*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 77*f80ad8b4SAndroid Build Coastguard Worker }; 78*f80ad8b4SAndroid Build Coastguard Worker 79*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_cq { 80*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 buf_addr; 81*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 db_addr; 82*f80ad8b4SAndroid Build Coastguard Worker }; 83*f80ad8b4SAndroid Build Coastguard Worker 84*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_cq_resp { 85*f80ad8b4SAndroid Build Coastguard Worker __u32 cqn; 86*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 87*f80ad8b4SAndroid Build Coastguard Worker }; 88*f80ad8b4SAndroid Build Coastguard Worker 89*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_resize_cq { 90*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 buf_addr; 91*f80ad8b4SAndroid Build Coastguard Worker }; 92*f80ad8b4SAndroid Build Coastguard Worker 93*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_srq { 94*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 buf_addr; 95*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 db_addr; 96*f80ad8b4SAndroid Build Coastguard Worker }; 97*f80ad8b4SAndroid Build Coastguard Worker 98*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_srq_resp { 99*f80ad8b4SAndroid Build Coastguard Worker __u32 srqn; 100*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 101*f80ad8b4SAndroid Build Coastguard Worker }; 102*f80ad8b4SAndroid Build Coastguard Worker 103*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_qp_rss { 104*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 rx_hash_fields_mask; /* Use enum mlx4_ib_rx_hash_fields */ 105*f80ad8b4SAndroid Build Coastguard Worker __u8 rx_hash_function; /* Use enum mlx4_ib_rx_hash_function_flags */ 106*f80ad8b4SAndroid Build Coastguard Worker __u8 reserved[7]; 107*f80ad8b4SAndroid Build Coastguard Worker __u8 rx_hash_key[40]; 108*f80ad8b4SAndroid Build Coastguard Worker __u32 comp_mask; 109*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved1; 110*f80ad8b4SAndroid Build Coastguard Worker }; 111*f80ad8b4SAndroid Build Coastguard Worker 112*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_qp { 113*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 buf_addr; 114*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 db_addr; 115*f80ad8b4SAndroid Build Coastguard Worker __u8 log_sq_bb_count; 116*f80ad8b4SAndroid Build Coastguard Worker __u8 log_sq_stride; 117*f80ad8b4SAndroid Build Coastguard Worker __u8 sq_no_prefetch; 118*f80ad8b4SAndroid Build Coastguard Worker __u8 reserved; 119*f80ad8b4SAndroid Build Coastguard Worker __u32 inl_recv_sz; 120*f80ad8b4SAndroid Build Coastguard Worker }; 121*f80ad8b4SAndroid Build Coastguard Worker 122*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_wq { 123*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 buf_addr; 124*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 db_addr; 125*f80ad8b4SAndroid Build Coastguard Worker __u8 log_range_size; 126*f80ad8b4SAndroid Build Coastguard Worker __u8 reserved[3]; 127*f80ad8b4SAndroid Build Coastguard Worker __u32 comp_mask; 128*f80ad8b4SAndroid Build Coastguard Worker }; 129*f80ad8b4SAndroid Build Coastguard Worker 130*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_modify_wq { 131*f80ad8b4SAndroid Build Coastguard Worker __u32 comp_mask; 132*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 133*f80ad8b4SAndroid Build Coastguard Worker }; 134*f80ad8b4SAndroid Build Coastguard Worker 135*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_create_rwq_ind_tbl_resp { 136*f80ad8b4SAndroid Build Coastguard Worker __u32 response_length; 137*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 138*f80ad8b4SAndroid Build Coastguard Worker }; 139*f80ad8b4SAndroid Build Coastguard Worker 140*f80ad8b4SAndroid Build Coastguard Worker /* RX Hash function flags */ 141*f80ad8b4SAndroid Build Coastguard Worker enum mlx4_ib_rx_hash_function_flags { 142*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_FUNC_TOEPLITZ = 1 << 0, 143*f80ad8b4SAndroid Build Coastguard Worker }; 144*f80ad8b4SAndroid Build Coastguard Worker 145*f80ad8b4SAndroid Build Coastguard Worker /* 146*f80ad8b4SAndroid Build Coastguard Worker * RX Hash flags, these flags allows to set which incoming packet's field should 147*f80ad8b4SAndroid Build Coastguard Worker * participates in RX Hash. Each flag represent certain packet's field, 148*f80ad8b4SAndroid Build Coastguard Worker * when the flag is set the field that is represented by the flag will 149*f80ad8b4SAndroid Build Coastguard Worker * participate in RX Hash calculation. 150*f80ad8b4SAndroid Build Coastguard Worker */ 151*f80ad8b4SAndroid Build Coastguard Worker enum mlx4_ib_rx_hash_fields { 152*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_SRC_IPV4 = 1 << 0, 153*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_DST_IPV4 = 1 << 1, 154*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_SRC_IPV6 = 1 << 2, 155*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_DST_IPV6 = 1 << 3, 156*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_SRC_PORT_TCP = 1 << 4, 157*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_DST_PORT_TCP = 1 << 5, 158*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_SRC_PORT_UDP = 1 << 6, 159*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_DST_PORT_UDP = 1 << 7, 160*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_RX_HASH_INNER = 1ULL << 31, 161*f80ad8b4SAndroid Build Coastguard Worker }; 162*f80ad8b4SAndroid Build Coastguard Worker 163*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_rss_caps { 164*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 rx_hash_fields_mask; /* enum mlx4_ib_rx_hash_fields */ 165*f80ad8b4SAndroid Build Coastguard Worker __u8 rx_hash_function; /* enum mlx4_ib_rx_hash_function_flags */ 166*f80ad8b4SAndroid Build Coastguard Worker __u8 reserved[7]; 167*f80ad8b4SAndroid Build Coastguard Worker }; 168*f80ad8b4SAndroid Build Coastguard Worker 169*f80ad8b4SAndroid Build Coastguard Worker enum query_device_resp_mask { 170*f80ad8b4SAndroid Build Coastguard Worker MLX4_IB_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0, 171*f80ad8b4SAndroid Build Coastguard Worker }; 172*f80ad8b4SAndroid Build Coastguard Worker 173*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_tso_caps { 174*f80ad8b4SAndroid Build Coastguard Worker __u32 max_tso; /* Maximum tso payload size in bytes */ 175*f80ad8b4SAndroid Build Coastguard Worker /* Corresponding bit will be set if qp type from 176*f80ad8b4SAndroid Build Coastguard Worker * 'enum ib_qp_type' is supported. 177*f80ad8b4SAndroid Build Coastguard Worker */ 178*f80ad8b4SAndroid Build Coastguard Worker __u32 supported_qpts; 179*f80ad8b4SAndroid Build Coastguard Worker }; 180*f80ad8b4SAndroid Build Coastguard Worker 181*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_uverbs_ex_query_device_resp { 182*f80ad8b4SAndroid Build Coastguard Worker __u32 comp_mask; 183*f80ad8b4SAndroid Build Coastguard Worker __u32 response_length; 184*f80ad8b4SAndroid Build Coastguard Worker __aligned_u64 hca_core_clock_offset; 185*f80ad8b4SAndroid Build Coastguard Worker __u32 max_inl_recv_sz; 186*f80ad8b4SAndroid Build Coastguard Worker __u32 reserved; 187*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_rss_caps rss_caps; 188*f80ad8b4SAndroid Build Coastguard Worker struct mlx4_ib_tso_caps tso_caps; 189*f80ad8b4SAndroid Build Coastguard Worker }; 190*f80ad8b4SAndroid Build Coastguard Worker 191*f80ad8b4SAndroid Build Coastguard Worker #endif /* MLX4_ABI_USER_H */ 192