1*d6b92ffaSHans Petter Selasky /* 2*d6b92ffaSHans Petter Selasky * Copyright (c) 2007 Cisco, Inc. All rights reserved. 3*d6b92ffaSHans Petter Selasky * 4*d6b92ffaSHans Petter Selasky * This software is available to you under a choice of one of two 5*d6b92ffaSHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 6*d6b92ffaSHans Petter Selasky * General Public License (GPL) Version 2, available from the file 7*d6b92ffaSHans Petter Selasky * COPYING in the main directory of this source tree, or the 8*d6b92ffaSHans Petter Selasky * OpenIB.org BSD license below: 9*d6b92ffaSHans Petter Selasky * 10*d6b92ffaSHans Petter Selasky * Redistribution and use in source and binary forms, with or 11*d6b92ffaSHans Petter Selasky * without modification, are permitted provided that the following 12*d6b92ffaSHans Petter Selasky * conditions are met: 13*d6b92ffaSHans Petter Selasky * 14*d6b92ffaSHans Petter Selasky * - Redistributions of source code must retain the above 15*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 16*d6b92ffaSHans Petter Selasky * disclaimer. 17*d6b92ffaSHans Petter Selasky * 18*d6b92ffaSHans Petter Selasky * - Redistributions in binary form must reproduce the above 19*d6b92ffaSHans Petter Selasky * copyright notice, this list of conditions and the following 20*d6b92ffaSHans Petter Selasky * disclaimer in the documentation and/or other materials 21*d6b92ffaSHans Petter Selasky * provided with the distribution. 22*d6b92ffaSHans Petter Selasky * 23*d6b92ffaSHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24*d6b92ffaSHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25*d6b92ffaSHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26*d6b92ffaSHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27*d6b92ffaSHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28*d6b92ffaSHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29*d6b92ffaSHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30*d6b92ffaSHans Petter Selasky * SOFTWARE. 31*d6b92ffaSHans Petter Selasky */ 32*d6b92ffaSHans Petter Selasky 33*d6b92ffaSHans Petter Selasky #ifndef MLX4_ABI_H 34*d6b92ffaSHans Petter Selasky #define MLX4_ABI_H 35*d6b92ffaSHans Petter Selasky 36*d6b92ffaSHans Petter Selasky #include <infiniband/kern-abi.h> 37*d6b92ffaSHans Petter Selasky 38*d6b92ffaSHans Petter Selasky #define MLX4_UVERBS_MIN_ABI_VERSION 2 39*d6b92ffaSHans Petter Selasky #define MLX4_UVERBS_MAX_ABI_VERSION 4 40*d6b92ffaSHans Petter Selasky 41*d6b92ffaSHans Petter Selasky #define MLX4_UVERBS_NO_DEV_CAPS_ABI_VERSION 3 42*d6b92ffaSHans Petter Selasky 43*d6b92ffaSHans Petter Selasky enum { 44*d6b92ffaSHans Petter Selasky MLX4_USER_DEV_CAP_64B_CQE = 1L << 0 45*d6b92ffaSHans Petter Selasky }; 46*d6b92ffaSHans Petter Selasky 47*d6b92ffaSHans Petter Selasky struct mlx4_alloc_ucontext_resp_v3 { 48*d6b92ffaSHans Petter Selasky struct ibv_get_context_resp ibv_resp; 49*d6b92ffaSHans Petter Selasky __u32 qp_tab_size; 50*d6b92ffaSHans Petter Selasky __u16 bf_reg_size; 51*d6b92ffaSHans Petter Selasky __u16 bf_regs_per_page; 52*d6b92ffaSHans Petter Selasky }; 53*d6b92ffaSHans Petter Selasky 54*d6b92ffaSHans Petter Selasky enum mlx4_query_dev_ex_resp_mask { 55*d6b92ffaSHans Petter Selasky MLX4_QUERY_DEV_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0, 56*d6b92ffaSHans Petter Selasky }; 57*d6b92ffaSHans Petter Selasky 58*d6b92ffaSHans Petter Selasky struct mlx4_alloc_ucontext_resp { 59*d6b92ffaSHans Petter Selasky struct ibv_get_context_resp ibv_resp; 60*d6b92ffaSHans Petter Selasky __u32 dev_caps; 61*d6b92ffaSHans Petter Selasky __u32 qp_tab_size; 62*d6b92ffaSHans Petter Selasky __u16 bf_reg_size; 63*d6b92ffaSHans Petter Selasky __u16 bf_regs_per_page; 64*d6b92ffaSHans Petter Selasky __u32 cqe_size; 65*d6b92ffaSHans Petter Selasky }; 66*d6b92ffaSHans Petter Selasky 67*d6b92ffaSHans Petter Selasky struct mlx4_alloc_pd_resp { 68*d6b92ffaSHans Petter Selasky struct ibv_alloc_pd_resp ibv_resp; 69*d6b92ffaSHans Petter Selasky __u32 pdn; 70*d6b92ffaSHans Petter Selasky __u32 reserved; 71*d6b92ffaSHans Petter Selasky }; 72*d6b92ffaSHans Petter Selasky 73*d6b92ffaSHans Petter Selasky struct mlx4_create_cq { 74*d6b92ffaSHans Petter Selasky struct ibv_create_cq ibv_cmd; 75*d6b92ffaSHans Petter Selasky __u64 buf_addr; 76*d6b92ffaSHans Petter Selasky __u64 db_addr; 77*d6b92ffaSHans Petter Selasky }; 78*d6b92ffaSHans Petter Selasky 79*d6b92ffaSHans Petter Selasky struct mlx4_create_cq_resp { 80*d6b92ffaSHans Petter Selasky struct ibv_create_cq_resp ibv_resp; 81*d6b92ffaSHans Petter Selasky __u32 cqn; 82*d6b92ffaSHans Petter Selasky __u32 reserved; 83*d6b92ffaSHans Petter Selasky }; 84*d6b92ffaSHans Petter Selasky 85*d6b92ffaSHans Petter Selasky struct mlx4_create_cq_ex { 86*d6b92ffaSHans Petter Selasky struct ibv_create_cq_ex ibv_cmd; 87*d6b92ffaSHans Petter Selasky __u64 buf_addr; 88*d6b92ffaSHans Petter Selasky __u64 db_addr; 89*d6b92ffaSHans Petter Selasky }; 90*d6b92ffaSHans Petter Selasky 91*d6b92ffaSHans Petter Selasky struct mlx4_create_cq_resp_ex { 92*d6b92ffaSHans Petter Selasky struct ibv_create_cq_resp_ex ibv_resp; 93*d6b92ffaSHans Petter Selasky __u32 cqn; 94*d6b92ffaSHans Petter Selasky __u32 reserved; 95*d6b92ffaSHans Petter Selasky }; 96*d6b92ffaSHans Petter Selasky 97*d6b92ffaSHans Petter Selasky struct mlx4_resize_cq { 98*d6b92ffaSHans Petter Selasky struct ibv_resize_cq ibv_cmd; 99*d6b92ffaSHans Petter Selasky __u64 buf_addr; 100*d6b92ffaSHans Petter Selasky }; 101*d6b92ffaSHans Petter Selasky 102*d6b92ffaSHans Petter Selasky struct mlx4_query_device_ex_resp { 103*d6b92ffaSHans Petter Selasky struct ibv_query_device_resp_ex ibv_resp; 104*d6b92ffaSHans Petter Selasky __u32 comp_mask; 105*d6b92ffaSHans Petter Selasky __u32 response_length; 106*d6b92ffaSHans Petter Selasky __u64 hca_core_clock_offset; 107*d6b92ffaSHans Petter Selasky }; 108*d6b92ffaSHans Petter Selasky 109*d6b92ffaSHans Petter Selasky struct mlx4_query_device_ex { 110*d6b92ffaSHans Petter Selasky struct ibv_query_device_ex ibv_cmd; 111*d6b92ffaSHans Petter Selasky }; 112*d6b92ffaSHans Petter Selasky 113*d6b92ffaSHans Petter Selasky struct mlx4_create_srq { 114*d6b92ffaSHans Petter Selasky struct ibv_create_srq ibv_cmd; 115*d6b92ffaSHans Petter Selasky __u64 buf_addr; 116*d6b92ffaSHans Petter Selasky __u64 db_addr; 117*d6b92ffaSHans Petter Selasky }; 118*d6b92ffaSHans Petter Selasky 119*d6b92ffaSHans Petter Selasky struct mlx4_create_xsrq { 120*d6b92ffaSHans Petter Selasky struct ibv_create_xsrq ibv_cmd; 121*d6b92ffaSHans Petter Selasky __u64 buf_addr; 122*d6b92ffaSHans Petter Selasky __u64 db_addr; 123*d6b92ffaSHans Petter Selasky }; 124*d6b92ffaSHans Petter Selasky 125*d6b92ffaSHans Petter Selasky struct mlx4_create_srq_resp { 126*d6b92ffaSHans Petter Selasky struct ibv_create_srq_resp ibv_resp; 127*d6b92ffaSHans Petter Selasky __u32 srqn; 128*d6b92ffaSHans Petter Selasky __u32 reserved; 129*d6b92ffaSHans Petter Selasky }; 130*d6b92ffaSHans Petter Selasky 131*d6b92ffaSHans Petter Selasky struct mlx4_create_qp { 132*d6b92ffaSHans Petter Selasky struct ibv_create_qp ibv_cmd; 133*d6b92ffaSHans Petter Selasky __u64 buf_addr; 134*d6b92ffaSHans Petter Selasky __u64 db_addr; 135*d6b92ffaSHans Petter Selasky __u8 log_sq_bb_count; 136*d6b92ffaSHans Petter Selasky __u8 log_sq_stride; 137*d6b92ffaSHans Petter Selasky __u8 sq_no_prefetch; /* was reserved in ABI 2 */ 138*d6b92ffaSHans Petter Selasky __u8 reserved[5]; 139*d6b92ffaSHans Petter Selasky }; 140*d6b92ffaSHans Petter Selasky 141*d6b92ffaSHans Petter Selasky struct mlx4_create_qp_drv_ex { 142*d6b92ffaSHans Petter Selasky __u64 buf_addr; 143*d6b92ffaSHans Petter Selasky __u64 db_addr; 144*d6b92ffaSHans Petter Selasky __u8 log_sq_bb_count; 145*d6b92ffaSHans Petter Selasky __u8 log_sq_stride; 146*d6b92ffaSHans Petter Selasky __u8 sq_no_prefetch; /* was reserved in ABI 2 */ 147*d6b92ffaSHans Petter Selasky __u8 reserved[5]; 148*d6b92ffaSHans Petter Selasky }; 149*d6b92ffaSHans Petter Selasky 150*d6b92ffaSHans Petter Selasky struct mlx4_create_qp_ex { 151*d6b92ffaSHans Petter Selasky struct ibv_create_qp_ex ibv_cmd; 152*d6b92ffaSHans Petter Selasky struct mlx4_create_qp_drv_ex drv_ex; 153*d6b92ffaSHans Petter Selasky }; 154*d6b92ffaSHans Petter Selasky 155*d6b92ffaSHans Petter Selasky struct mlx4_create_qp_resp_ex { 156*d6b92ffaSHans Petter Selasky struct ibv_create_qp_resp_ex ibv_resp; 157*d6b92ffaSHans Petter Selasky }; 158*d6b92ffaSHans Petter Selasky 159*d6b92ffaSHans Petter Selasky #endif /* MLX4_ABI_H */ 160