Linux 3.11-rc3
[cris-mirror.git] / drivers / infiniband / hw / ocrdma / ocrdma_abi.h
blob517ab20b727c51feac5314a64e717adfdedacde4
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. *
20 * Contact Information:
21 * linux-drivers@emulex.com
23 * Emulex
24 * 3333 Susan Street
25 * Costa Mesa, CA 92626
26 *******************************************************************/
28 #ifndef __OCRDMA_ABI_H__
29 #define __OCRDMA_ABI_H__
31 struct ocrdma_alloc_ucontext_resp {
32 u32 dev_id;
33 u32 wqe_size;
34 u32 max_inline_data;
35 u32 dpp_wqe_size;
36 u64 ah_tbl_page;
37 u32 ah_tbl_len;
38 u32 rsvd;
39 u8 fw_ver[32];
40 u32 rqe_size;
41 u64 rsvd1;
42 } __packed;
44 /* user kernel communication data structures. */
45 struct ocrdma_alloc_pd_ureq {
46 u64 rsvd1;
47 } __packed;
49 struct ocrdma_alloc_pd_uresp {
50 u32 id;
51 u32 dpp_enabled;
52 u32 dpp_page_addr_hi;
53 u32 dpp_page_addr_lo;
54 u64 rsvd1;
55 } __packed;
57 struct ocrdma_create_cq_ureq {
58 u32 dpp_cq;
59 u32 rsvd;
60 } __packed;
62 #define MAX_CQ_PAGES 8
63 struct ocrdma_create_cq_uresp {
64 u32 cq_id;
65 u32 page_size;
66 u32 num_pages;
67 u32 max_hw_cqe;
68 u64 page_addr[MAX_CQ_PAGES];
69 u64 db_page_addr;
70 u32 db_page_size;
71 u32 phase_change;
72 u64 rsvd1;
73 u64 rsvd2;
74 } __packed;
76 #define MAX_QP_PAGES 8
77 #define MAX_UD_AV_PAGES 8
79 struct ocrdma_create_qp_ureq {
80 u8 enable_dpp_cq;
81 u8 rsvd;
82 u16 dpp_cq_id;
83 u32 rsvd1;
86 struct ocrdma_create_qp_uresp {
87 u16 qp_id;
88 u16 sq_dbid;
89 u16 rq_dbid;
90 u16 resv0;
91 u32 sq_page_size;
92 u32 rq_page_size;
93 u32 num_sq_pages;
94 u32 num_rq_pages;
95 u64 sq_page_addr[MAX_QP_PAGES];
96 u64 rq_page_addr[MAX_QP_PAGES];
97 u64 db_page_addr;
98 u32 db_page_size;
99 u32 dpp_credit;
100 u32 dpp_offset;
101 u32 rsvd1;
102 u32 num_wqe_allocated;
103 u32 num_rqe_allocated;
104 u32 db_sq_offset;
105 u32 db_rq_offset;
106 u32 db_shift;
107 u64 rsvd2;
108 u64 rsvd3;
109 } __packed;
111 struct ocrdma_create_srq_uresp {
112 u16 rq_dbid;
113 u16 resv0;
114 u32 resv1;
116 u32 rq_page_size;
117 u32 num_rq_pages;
119 u64 rq_page_addr[MAX_QP_PAGES];
120 u64 db_page_addr;
122 u32 db_page_size;
123 u32 num_rqe_allocated;
124 u32 db_rq_offset;
125 u32 db_shift;
127 u64 rsvd2;
128 u64 rsvd3;
129 } __packed;
131 #endif /* __OCRDMA_ABI_H__ */