xref: /freebsd/sys/dev/qlnx/qlnxr/qlnxr_user.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
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