[go: nahoru, domu]

1/*******************************************************************
2 * This file is part of the Emulex RoCE Device Driver for          *
3 * RoCE (RDMA over Converged Ethernet) adapters.                   *
4 * Copyright (C) 2008-2012 Emulex. All rights reserved.            *
5 * EMULEX and SLI are trademarks of Emulex.                        *
6 * www.emulex.com                                                  *
7 *                                                                 *
8 * This program is free software; you can redistribute it and/or   *
9 * modify it under the terms of version 2 of the GNU General       *
10 * Public License as published by the Free Software Foundation.    *
11 * This program is distributed in the hope that it will be useful. *
12 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND          *
13 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,  *
14 * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE      *
15 * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD *
16 * TO BE LEGALLY INVALID.  See the GNU General Public License for  *
17 * more details, a copy of which can be found in the file COPYING  *
18 * included with this package.                                     *
19 *
20 * Contact Information:
21 * linux-drivers@emulex.com
22 *
23 * Emulex
24 * 3333 Susan Street
25 * Costa Mesa, CA 92626
26 *******************************************************************/
27
28#ifndef __OCRDMA_ABI_H__
29#define __OCRDMA_ABI_H__
30
31#define OCRDMA_ABI_VERSION 2
32#define OCRDMA_BE_ROCE_ABI_VERSION 1
33/* user kernel communication data structures. */
34
35struct ocrdma_alloc_ucontext_resp {
36	u32 dev_id;
37	u32 wqe_size;
38	u32 max_inline_data;
39	u32 dpp_wqe_size;
40	u64 ah_tbl_page;
41	u32 ah_tbl_len;
42	u32 rqe_size;
43	u8 fw_ver[32];
44	/* for future use/new features in progress */
45	u64 rsvd1;
46	u64 rsvd2;
47};
48
49struct ocrdma_alloc_pd_ureq {
50	u64 rsvd1;
51};
52
53struct ocrdma_alloc_pd_uresp {
54	u32 id;
55	u32 dpp_enabled;
56	u32 dpp_page_addr_hi;
57	u32 dpp_page_addr_lo;
58	u64 rsvd1;
59};
60
61struct ocrdma_create_cq_ureq {
62	u32 dpp_cq;
63	u32 rsvd; /* pad */
64};
65
66#define MAX_CQ_PAGES 8
67struct ocrdma_create_cq_uresp {
68	u32 cq_id;
69	u32 page_size;
70	u32 num_pages;
71	u32 max_hw_cqe;
72	u64 page_addr[MAX_CQ_PAGES];
73	u64 db_page_addr;
74	u32 db_page_size;
75	u32 phase_change;
76	/* for future use/new features in progress */
77	u64 rsvd1;
78	u64 rsvd2;
79};
80
81#define MAX_QP_PAGES 8
82#define MAX_UD_AV_PAGES 8
83
84struct ocrdma_create_qp_ureq {
85	u8 enable_dpp_cq;
86	u8 rsvd;
87	u16 dpp_cq_id;
88	u32 rsvd1;	/* pad */
89};
90
91struct ocrdma_create_qp_uresp {
92	u16 qp_id;
93	u16 sq_dbid;
94	u16 rq_dbid;
95	u16 resv0;	/* pad */
96	u32 sq_page_size;
97	u32 rq_page_size;
98	u32 num_sq_pages;
99	u32 num_rq_pages;
100	u64 sq_page_addr[MAX_QP_PAGES];
101	u64 rq_page_addr[MAX_QP_PAGES];
102	u64 db_page_addr;
103	u32 db_page_size;
104	u32 dpp_credit;
105	u32 dpp_offset;
106	u32 num_wqe_allocated;
107	u32 num_rqe_allocated;
108	u32 db_sq_offset;
109	u32 db_rq_offset;
110	u32 db_shift;
111	u64 rsvd[11];
112} __packed;
113
114struct ocrdma_create_srq_uresp {
115	u16 rq_dbid;
116	u16 resv0;	/* pad */
117	u32 resv1;
118
119	u32 rq_page_size;
120	u32 num_rq_pages;
121
122	u64 rq_page_addr[MAX_QP_PAGES];
123	u64 db_page_addr;
124
125	u32 db_page_size;
126	u32 num_rqe_allocated;
127	u32 db_rq_offset;
128	u32 db_shift;
129
130	u64 rsvd2;
131	u64 rsvd3;
132};
133
134#endif				/* __OCRDMA_ABI_H__ */
135