1*fa790ea9SDavid C Somayajulu /* 2*fa790ea9SDavid C Somayajulu * Copyright (c) 2018-2019 Cavium, Inc. 3*fa790ea9SDavid C Somayajulu * All rights reserved. 4*fa790ea9SDavid C Somayajulu * 5*fa790ea9SDavid C Somayajulu * Redistribution and use in source and binary forms, with or without 6*fa790ea9SDavid C Somayajulu * modification, are permitted provided that the following conditions 7*fa790ea9SDavid C Somayajulu * are met: 8*fa790ea9SDavid C Somayajulu * 9*fa790ea9SDavid C Somayajulu * 1. Redistributions of source code must retain the above copyright 10*fa790ea9SDavid C Somayajulu * notice, this list of conditions and the following disclaimer. 11*fa790ea9SDavid C Somayajulu * 2. Redistributions in binary form must reproduce the above copyright 12*fa790ea9SDavid C Somayajulu * notice, this list of conditions and the following disclaimer in the 13*fa790ea9SDavid C Somayajulu * documentation and/or other materials provided with the distribution. 14*fa790ea9SDavid C Somayajulu * 15*fa790ea9SDavid C Somayajulu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 16*fa790ea9SDavid C Somayajulu * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*fa790ea9SDavid C Somayajulu * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*fa790ea9SDavid C Somayajulu * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 19*fa790ea9SDavid C Somayajulu * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20*fa790ea9SDavid C Somayajulu * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21*fa790ea9SDavid C Somayajulu * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22*fa790ea9SDavid C Somayajulu * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23*fa790ea9SDavid C Somayajulu * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24*fa790ea9SDavid C Somayajulu * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25*fa790ea9SDavid C Somayajulu * POSSIBILITY OF SUCH DAMAGE. 26*fa790ea9SDavid C Somayajulu * 27*fa790ea9SDavid C Somayajulu */ 28*fa790ea9SDavid C Somayajulu 29*fa790ea9SDavid C Somayajulu #ifndef __QLNXR_USER_H__ 30*fa790ea9SDavid C Somayajulu #define __QLNXR_USER_H__ 31*fa790ea9SDavid C Somayajulu 32*fa790ea9SDavid C Somayajulu #define QLNXR_ABI_VERSION (7) 33*fa790ea9SDavid C Somayajulu #define QLNXR_BE_ROCE_ABI_VERSION (1) 34*fa790ea9SDavid C Somayajulu 35*fa790ea9SDavid C Somayajulu /* user kernel communication data structures. */ 36*fa790ea9SDavid C Somayajulu 37*fa790ea9SDavid C Somayajulu struct qlnxr_alloc_ucontext_resp { 38*fa790ea9SDavid C Somayajulu u64 db_pa; 39*fa790ea9SDavid C Somayajulu u32 db_size; 40*fa790ea9SDavid C Somayajulu 41*fa790ea9SDavid C Somayajulu uint32_t max_send_wr; 42*fa790ea9SDavid C Somayajulu uint32_t max_recv_wr; 43*fa790ea9SDavid C Somayajulu uint32_t max_srq_wr; 44*fa790ea9SDavid C Somayajulu uint32_t sges_per_send_wr; 45*fa790ea9SDavid C Somayajulu uint32_t sges_per_recv_wr; 46*fa790ea9SDavid C Somayajulu uint32_t sges_per_srq_wr; 47*fa790ea9SDavid C Somayajulu int max_cqes; 48*fa790ea9SDavid C Somayajulu uint8_t dpm_enabled; 49*fa790ea9SDavid C Somayajulu uint8_t wids_enabled; 50*fa790ea9SDavid C Somayajulu uint16_t wid_count; 51*fa790ea9SDavid C Somayajulu }; 52*fa790ea9SDavid C Somayajulu 53*fa790ea9SDavid C Somayajulu struct qlnxr_alloc_pd_ureq { 54*fa790ea9SDavid C Somayajulu u64 rsvd1; 55*fa790ea9SDavid C Somayajulu }; 56*fa790ea9SDavid C Somayajulu 57*fa790ea9SDavid C Somayajulu struct qlnxr_alloc_pd_uresp { 58*fa790ea9SDavid C Somayajulu u32 pd_id; 59*fa790ea9SDavid C Somayajulu }; 60*fa790ea9SDavid C Somayajulu 61*fa790ea9SDavid C Somayajulu struct qlnxr_create_cq_ureq { 62*fa790ea9SDavid C Somayajulu uint64_t addr; /* user space virtual address of CQ buffer */ 63*fa790ea9SDavid C Somayajulu size_t len; /* size of CQ buffer */ 64*fa790ea9SDavid C Somayajulu }; 65*fa790ea9SDavid C Somayajulu 66*fa790ea9SDavid C Somayajulu struct qlnxr_create_cq_uresp { 67*fa790ea9SDavid C Somayajulu u32 db_offset; 68*fa790ea9SDavid C Somayajulu u16 icid; 69*fa790ea9SDavid C Somayajulu }; 70*fa790ea9SDavid C Somayajulu 71*fa790ea9SDavid C Somayajulu struct qlnxr_create_qp_ureq { 72*fa790ea9SDavid C Somayajulu u32 qp_handle_hi; 73*fa790ea9SDavid C Somayajulu u32 qp_handle_lo; 74*fa790ea9SDavid C Somayajulu 75*fa790ea9SDavid C Somayajulu /* SQ */ 76*fa790ea9SDavid C Somayajulu uint64_t sq_addr; /* user space virtual address of SQ buffer */ 77*fa790ea9SDavid C Somayajulu size_t sq_len; /* length of SQ buffer */ 78*fa790ea9SDavid C Somayajulu 79*fa790ea9SDavid C Somayajulu /* RQ */ 80*fa790ea9SDavid C Somayajulu uint64_t rq_addr; /* user space virtual address of RQ buffer */ 81*fa790ea9SDavid C Somayajulu size_t rq_len; /* length of RQ buffer */ 82*fa790ea9SDavid C Somayajulu }; 83*fa790ea9SDavid C Somayajulu 84*fa790ea9SDavid C Somayajulu struct qlnxr_create_qp_uresp { 85*fa790ea9SDavid C Somayajulu u32 qp_id; 86*fa790ea9SDavid C Somayajulu int atomic_supported; 87*fa790ea9SDavid C Somayajulu 88*fa790ea9SDavid C Somayajulu /* SQ*/ 89*fa790ea9SDavid C Somayajulu u32 sq_db_offset; 90*fa790ea9SDavid C Somayajulu u16 sq_icid; 91*fa790ea9SDavid C Somayajulu 92*fa790ea9SDavid C Somayajulu /* RQ */ 93*fa790ea9SDavid C Somayajulu u32 rq_db_offset; 94*fa790ea9SDavid C Somayajulu u16 rq_icid; 95*fa790ea9SDavid C Somayajulu 96*fa790ea9SDavid C Somayajulu u32 rq_db2_offset; 97*fa790ea9SDavid C Somayajulu }; 98*fa790ea9SDavid C Somayajulu 99*fa790ea9SDavid C Somayajulu struct qlnxr_create_srq_ureq { 100*fa790ea9SDavid C Somayajulu /* user space virtual address of producer pair */ 101*fa790ea9SDavid C Somayajulu uint64_t prod_pair_addr; 102*fa790ea9SDavid C Somayajulu uint64_t srq_addr; /* user space virtual address of SQ buffer */ 103*fa790ea9SDavid C Somayajulu size_t srq_len; /* length of SQ buffer */ 104*fa790ea9SDavid C Somayajulu }; 105*fa790ea9SDavid C Somayajulu 106*fa790ea9SDavid C Somayajulu struct qlnxr_create_srq_uresp { 107*fa790ea9SDavid C Somayajulu u16 srq_id; 108*fa790ea9SDavid C Somayajulu }; 109*fa790ea9SDavid C Somayajulu 110*fa790ea9SDavid C Somayajulu #endif /* #ifndef __QLNXR_USER_H__ */ 111