]>
Commit | Line | Data |
---|---|---|
1ac5a404 SX |
1 | /* |
2 | * Broadcom NetXtreme-E RoCE driver. | |
3 | * | |
4 | * Copyright (c) 2016 - 2017, Broadcom. All rights reserved. The term | |
5 | * Broadcom refers to Broadcom Limited and/or its subsidiaries. | |
6 | * | |
7 | * This software is available to you under a choice of one of two | |
8 | * licenses. You may choose to be licensed under the terms of the GNU | |
9 | * General Public License (GPL) Version 2, available from the file | |
10 | * COPYING in the main directory of this source tree, or the | |
11 | * BSD license below: | |
12 | * | |
13 | * Redistribution and use in source and binary forms, with or without | |
14 | * modification, are permitted provided that the following conditions | |
15 | * are met: | |
16 | * | |
17 | * 1. Redistributions of source code must retain the above copyright | |
18 | * notice, this list of conditions and the following disclaimer. | |
19 | * 2. Redistributions in binary form must reproduce the above copyright | |
20 | * notice, this list of conditions and the following disclaimer in | |
21 | * the documentation and/or other materials provided with the | |
22 | * distribution. | |
23 | * | |
24 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' | |
25 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | |
26 | * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
27 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS | |
28 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
29 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
30 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | |
31 | * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | |
32 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | |
33 | * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN | |
34 | * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
35 | * | |
36 | * Description: Slow Path Operators (header) | |
37 | * | |
38 | */ | |
39 | ||
40 | #ifndef __BNXT_QPLIB_SP_H__ | |
41 | #define __BNXT_QPLIB_SP_H__ | |
42 | ||
9152e0b7 EW |
43 | #define BNXT_QPLIB_RESERVED_QP_WRS 128 |
44 | ||
1ac5a404 SX |
45 | struct bnxt_qplib_dev_attr { |
46 | char fw_ver[32]; | |
47 | u16 max_sgid; | |
48 | u16 max_mrw; | |
49 | u32 max_qp; | |
50 | #define BNXT_QPLIB_MAX_OUT_RD_ATOM 126 | |
51 | u32 max_qp_rd_atom; | |
52 | u32 max_qp_init_rd_atom; | |
53 | u32 max_qp_wqes; | |
54 | u32 max_qp_sges; | |
55 | u32 max_cq; | |
56 | u32 max_cq_wqes; | |
57 | u32 max_cq_sges; | |
58 | u32 max_mr; | |
59 | u64 max_mr_size; | |
60 | u32 max_pd; | |
61 | u32 max_mw; | |
62 | u32 max_raw_ethy_qp; | |
63 | u32 max_ah; | |
64 | u32 max_fmr; | |
65 | u32 max_map_per_fmr; | |
66 | u32 max_srq; | |
67 | u32 max_srq_wqes; | |
68 | u32 max_srq_sges; | |
69 | u32 max_pkey; | |
70 | u32 max_inline_data; | |
71 | u32 l2_db_size; | |
72 | u8 tqm_alloc_reqs[MAX_TQM_ALLOC_REQ]; | |
73 | }; | |
74 | ||
75 | struct bnxt_qplib_pd { | |
76 | u32 id; | |
77 | }; | |
78 | ||
79 | struct bnxt_qplib_gid { | |
80 | u8 data[16]; | |
81 | }; | |
82 | ||
83 | struct bnxt_qplib_ah { | |
84 | struct bnxt_qplib_gid dgid; | |
85 | struct bnxt_qplib_pd *pd; | |
86 | u32 id; | |
87 | u8 sgid_index; | |
88 | /* For Query AH if the hw table and SW table are differnt */ | |
89 | u8 host_sgid_index; | |
90 | u8 traffic_class; | |
91 | u32 flow_label; | |
92 | u8 hop_limit; | |
93 | u8 sl; | |
94 | u8 dmac[6]; | |
95 | u16 vlan_id; | |
96 | u8 nw_type; | |
97 | }; | |
98 | ||
99 | struct bnxt_qplib_mrw { | |
100 | struct bnxt_qplib_pd *pd; | |
101 | int type; | |
102 | u32 flags; | |
103 | #define BNXT_QPLIB_FR_PMR 0x80000000 | |
104 | u32 lkey; | |
105 | u32 rkey; | |
106 | #define BNXT_QPLIB_RSVD_LKEY 0xFFFFFFFF | |
107 | u64 va; | |
108 | u64 total_size; | |
109 | u32 npages; | |
110 | u64 mr_handle; | |
111 | struct bnxt_qplib_hwq hwq; | |
112 | }; | |
113 | ||
114 | struct bnxt_qplib_frpl { | |
115 | int max_pg_ptrs; | |
116 | struct bnxt_qplib_hwq hwq; | |
117 | }; | |
118 | ||
119 | #define BNXT_QPLIB_ACCESS_LOCAL_WRITE BIT(0) | |
120 | #define BNXT_QPLIB_ACCESS_REMOTE_READ BIT(1) | |
121 | #define BNXT_QPLIB_ACCESS_REMOTE_WRITE BIT(2) | |
122 | #define BNXT_QPLIB_ACCESS_REMOTE_ATOMIC BIT(3) | |
123 | #define BNXT_QPLIB_ACCESS_MW_BIND BIT(4) | |
124 | #define BNXT_QPLIB_ACCESS_ZERO_BASED BIT(5) | |
125 | #define BNXT_QPLIB_ACCESS_ON_DEMAND BIT(6) | |
126 | ||
127 | int bnxt_qplib_get_sgid(struct bnxt_qplib_res *res, | |
128 | struct bnxt_qplib_sgid_tbl *sgid_tbl, int index, | |
129 | struct bnxt_qplib_gid *gid); | |
130 | int bnxt_qplib_del_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl, | |
131 | struct bnxt_qplib_gid *gid, bool update); | |
132 | int bnxt_qplib_add_sgid(struct bnxt_qplib_sgid_tbl *sgid_tbl, | |
133 | struct bnxt_qplib_gid *gid, u8 *mac, u16 vlan_id, | |
134 | bool update, u32 *index); | |
135 | int bnxt_qplib_get_pkey(struct bnxt_qplib_res *res, | |
136 | struct bnxt_qplib_pkey_tbl *pkey_tbl, u16 index, | |
137 | u16 *pkey); | |
138 | int bnxt_qplib_del_pkey(struct bnxt_qplib_res *res, | |
139 | struct bnxt_qplib_pkey_tbl *pkey_tbl, u16 *pkey, | |
140 | bool update); | |
141 | int bnxt_qplib_add_pkey(struct bnxt_qplib_res *res, | |
142 | struct bnxt_qplib_pkey_tbl *pkey_tbl, u16 *pkey, | |
143 | bool update); | |
144 | int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw, | |
145 | struct bnxt_qplib_dev_attr *attr); | |
146 | int bnxt_qplib_create_ah(struct bnxt_qplib_res *res, struct bnxt_qplib_ah *ah); | |
147 | int bnxt_qplib_destroy_ah(struct bnxt_qplib_res *res, struct bnxt_qplib_ah *ah); | |
148 | int bnxt_qplib_alloc_mrw(struct bnxt_qplib_res *res, | |
149 | struct bnxt_qplib_mrw *mrw); | |
150 | int bnxt_qplib_dereg_mrw(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mrw, | |
151 | bool block); | |
152 | int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr, | |
153 | u64 *pbl_tbl, int num_pbls, bool block); | |
154 | int bnxt_qplib_free_mrw(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr); | |
155 | int bnxt_qplib_alloc_fast_reg_mr(struct bnxt_qplib_res *res, | |
156 | struct bnxt_qplib_mrw *mr, int max); | |
157 | int bnxt_qplib_alloc_fast_reg_page_list(struct bnxt_qplib_res *res, | |
158 | struct bnxt_qplib_frpl *frpl, int max); | |
159 | int bnxt_qplib_free_fast_reg_page_list(struct bnxt_qplib_res *res, | |
160 | struct bnxt_qplib_frpl *frpl); | |
161 | int bnxt_qplib_map_tc2cos(struct bnxt_qplib_res *res, u16 *cids); | |
162 | #endif /* __BNXT_QPLIB_SP_H__*/ |