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 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; 43 44 /* user kernel communication data structures. */ 45 struct ocrdma_alloc_pd_ureq { 46 u64 rsvd1; 47 } __packed; 48 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; 56 57 struct ocrdma_create_cq_ureq { 58 u32 dpp_cq; 59 u32 rsvd; 60 } __packed; 61 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; 75 76 #define MAX_QP_PAGES 8 77 #define MAX_UD_AV_PAGES 8 78 79 struct ocrdma_create_qp_ureq { 80 u8 enable_dpp_cq; 81 u8 rsvd; 82 u16 dpp_cq_id; 83 u32 rsvd1; 84 }; 85 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; 110 111 struct ocrdma_create_srq_uresp { 112 u16 rq_dbid; 113 u16 resv0; 114 u32 resv1; 115 116 u32 rq_page_size; 117 u32 num_rq_pages; 118 119 u64 rq_page_addr[MAX_QP_PAGES]; 120 u64 db_page_addr; 121 122 u32 db_page_size; 123 u32 num_rqe_allocated; 124 u32 db_rq_offset; 125 u32 db_shift; 126 127 u64 rsvd2; 128 u64 rsvd3; 129 } __packed; 130 131 #endif /* __OCRDMA_ABI_H__ */ 132