1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2 /* QLogic qed NIC Driver
3  * Copyright (c) 2019-2021 Marvell International Ltd.
4  */
5 
6 #ifndef _QED_IRO_HSI_H
7 #define _QED_IRO_HSI_H
8 
9 #include <linux/types.h>
10 
11 enum {
12 	IRO_YSTORM_FLOW_CONTROL_MODE_GTT,
13 	IRO_PSTORM_PKT_DUPLICATION_CFG,
14 	IRO_TSTORM_PORT_STAT,
15 	IRO_TSTORM_LL2_PORT_STAT,
16 	IRO_TSTORM_PKT_DUPLICATION_CFG,
17 	IRO_USTORM_VF_PF_CHANNEL_READY_GTT,
18 	IRO_USTORM_FLR_FINAL_ACK_GTT,
19 	IRO_USTORM_EQE_CONS_GTT,
20 	IRO_USTORM_ETH_QUEUE_ZONE_GTT,
21 	IRO_USTORM_COMMON_QUEUE_CONS_GTT,
22 	IRO_XSTORM_PQ_INFO,
23 	IRO_XSTORM_INTEG_TEST_DATA,
24 	IRO_YSTORM_INTEG_TEST_DATA,
25 	IRO_PSTORM_INTEG_TEST_DATA,
26 	IRO_TSTORM_INTEG_TEST_DATA,
27 	IRO_MSTORM_INTEG_TEST_DATA,
28 	IRO_USTORM_INTEG_TEST_DATA,
29 	IRO_XSTORM_OVERLAY_BUF_ADDR,
30 	IRO_YSTORM_OVERLAY_BUF_ADDR,
31 	IRO_PSTORM_OVERLAY_BUF_ADDR,
32 	IRO_TSTORM_OVERLAY_BUF_ADDR,
33 	IRO_MSTORM_OVERLAY_BUF_ADDR,
34 	IRO_USTORM_OVERLAY_BUF_ADDR,
35 	IRO_TSTORM_LL2_RX_PRODS_GTT,
36 	IRO_CORE_LL2_TSTORM_PER_QUEUE_STAT,
37 	IRO_CORE_LL2_USTORM_PER_QUEUE_STAT,
38 	IRO_CORE_LL2_PSTORM_PER_QUEUE_STAT,
39 	IRO_MSTORM_QUEUE_STAT,
40 	IRO_MSTORM_TPA_TIMEOUT_US,
41 	IRO_MSTORM_ETH_VF_PRODS,
42 	IRO_MSTORM_ETH_PF_PRODS_GTT,
43 	IRO_MSTORM_ETH_PF_STAT,
44 	IRO_USTORM_QUEUE_STAT,
45 	IRO_USTORM_ETH_PF_STAT,
46 	IRO_PSTORM_QUEUE_STAT,
47 	IRO_PSTORM_ETH_PF_STAT,
48 	IRO_PSTORM_CTL_FRAME_ETHTYPE_GTT,
49 	IRO_TSTORM_ETH_PRS_INPUT,
50 	IRO_ETH_RX_RATE_LIMIT,
51 	IRO_TSTORM_ETH_RSS_UPDATE_GTT,
52 	IRO_XSTORM_ETH_QUEUE_ZONE_GTT,
53 	IRO_YSTORM_TOE_CQ_PROD,
54 	IRO_USTORM_TOE_CQ_PROD,
55 	IRO_USTORM_TOE_GRQ_PROD,
56 	IRO_TSTORM_SCSI_CMDQ_CONS_GTT,
57 	IRO_TSTORM_SCSI_BDQ_EXT_PROD_GTT,
58 	IRO_MSTORM_SCSI_BDQ_EXT_PROD_GTT,
59 	IRO_TSTORM_ISCSI_RX_STATS,
60 	IRO_MSTORM_ISCSI_RX_STATS,
61 	IRO_USTORM_ISCSI_RX_STATS,
62 	IRO_XSTORM_ISCSI_TX_STATS,
63 	IRO_YSTORM_ISCSI_TX_STATS,
64 	IRO_PSTORM_ISCSI_TX_STATS,
65 	IRO_TSTORM_FCOE_RX_STATS,
66 	IRO_PSTORM_FCOE_TX_STATS,
67 	IRO_PSTORM_RDMA_QUEUE_STAT,
68 	IRO_TSTORM_RDMA_QUEUE_STAT,
69 	IRO_XSTORM_RDMA_ASSERT_LEVEL,
70 	IRO_YSTORM_RDMA_ASSERT_LEVEL,
71 	IRO_PSTORM_RDMA_ASSERT_LEVEL,
72 	IRO_TSTORM_RDMA_ASSERT_LEVEL,
73 	IRO_MSTORM_RDMA_ASSERT_LEVEL,
74 	IRO_USTORM_RDMA_ASSERT_LEVEL,
75 	IRO_XSTORM_IWARP_RXMIT_STATS,
76 	IRO_TSTORM_ROCE_EVENTS_STAT,
77 	IRO_YSTORM_ROCE_DCQCN_RECEIVED_STATS,
78 	IRO_YSTORM_ROCE_ERROR_STATS,
79 	IRO_PSTORM_ROCE_DCQCN_SENT_STATS,
80 	IRO_USTORM_ROCE_CQE_STATS,
81 };
82 
83 /* Pstorm LiteL2 queue statistics */
84 
85 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \
86 	(IRO[IRO_CORE_LL2_PSTORM_PER_QUEUE_STAT].base           \
87 	+ ((core_tx_stats_id) * IRO[IRO_CORE_LL2_PSTORM_PER_QUEUE_STAT].m1))
88 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE \
89 				(IRO[IRO_CORE_LL2_PSTORM_PER_QUEUE_STAT].size)
90 
91 /* Tstorm LightL2 queue statistics */
92 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
93 	(IRO[IRO_CORE_LL2_TSTORM_PER_QUEUE_STAT].base           \
94 	 + ((core_rx_queue_id) * IRO[IRO_CORE_LL2_TSTORM_PER_QUEUE_STAT].m1))
95 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE \
96 				(IRO[IRO_CORE_LL2_TSTORM_PER_QUEUE_STAT].size)
97 
98 /* Ustorm LiteL2 queue statistics */
99 #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
100 	(IRO[IRO_CORE_LL2_USTORM_PER_QUEUE_STAT].base           \
101 	 + ((core_rx_queue_id) * IRO[IRO_CORE_LL2_USTORM_PER_QUEUE_STAT].m1))
102 #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE \
103 				(IRO[IRO_CORE_LL2_USTORM_PER_QUEUE_STAT].size)
104 
105 /* Tstorm Eth limit Rx rate */
106 #define ETH_RX_RATE_LIMIT_OFFSET(pf_id)  \
107 	(IRO[IRO_ETH_RX_RATE_LIMIT].base \
108 	 + ((pf_id) * IRO[IRO_ETH_RX_RATE_LIMIT].m1))
109 #define ETH_RX_RATE_LIMIT_SIZE (IRO[IRO_ETH_RX_RATE_LIMIT].size)
110 
111 /* Mstorm ETH PF queues producers */
112 #define MSTORM_ETH_PF_PRODS_GTT_OFFSET(queue_id) \
113 	(IRO[IRO_MSTORM_ETH_PF_PRODS_GTT].base   \
114 	 + ((queue_id) * IRO[IRO_MSTORM_ETH_PF_PRODS_GTT].m1))
115 #define MSTORM_ETH_PF_PRODS_GTT_SIZE (IRO[IRO_MSTORM_ETH_PF_PRODS_GTT].size)
116 
117 /* Mstorm pf statistics */
118 #define MSTORM_ETH_PF_STAT_OFFSET(pf_id)  \
119 	(IRO[IRO_MSTORM_ETH_PF_STAT].base \
120 	 + ((pf_id) * IRO[IRO_MSTORM_ETH_PF_STAT].m1))
121 #define MSTORM_ETH_PF_STAT_SIZE (IRO[IRO_MSTORM_ETH_PF_STAT].size)
122 
123 /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone
124  * size mode.
125  */
126 #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \
127 	(IRO[IRO_MSTORM_ETH_VF_PRODS].base             \
128 	 + ((vf_id) * IRO[IRO_MSTORM_ETH_VF_PRODS].m1) \
129 	 + ((vf_queue_id) * IRO[IRO_MSTORM_ETH_VF_PRODS].m2))
130 #define MSTORM_ETH_VF_PRODS_SIZE (IRO[IRO_MSTORM_ETH_VF_PRODS].size)
131 
132 /* Mstorm Integration Test Data */
133 #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_MSTORM_INTEG_TEST_DATA].base)
134 #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_MSTORM_INTEG_TEST_DATA].size)
135 
136 /* Mstorm iSCSI RX stats */
137 #define MSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
138 	(IRO[IRO_MSTORM_ISCSI_RX_STATS].base          \
139 	 + ((storage_func_id) * IRO[IRO_MSTORM_ISCSI_RX_STATS].m1))
140 #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[IRO_MSTORM_ISCSI_RX_STATS].size)
141 
142 /* Mstorm overlay buffer host address */
143 #define MSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[IRO_MSTORM_OVERLAY_BUF_ADDR].base)
144 #define MSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_MSTORM_OVERLAY_BUF_ADDR].size)
145 
146 /* Mstorm queue statistics */
147 #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
148 	(IRO[IRO_MSTORM_QUEUE_STAT].base          \
149 	 + ((stat_counter_id) * IRO[IRO_MSTORM_QUEUE_STAT].m1))
150 #define MSTORM_QUEUE_STAT_SIZ (IRO[IRO_MSTORM_QUEUE_STAT].size)
151 
152 /* Mstorm error level for assert */
153 #define MSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
154 	(IRO[IRO_MSTORM_RDMA_ASSERT_LEVEL].base \
155 	 + ((pf_id) * IRO[IRO_MSTORM_RDMA_ASSERT_LEVEL].m1))
156 #define MSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_MSTORM_RDMA_ASSERT_LEVEL].size)
157 
158 /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
159 #define MSTORM_SCSI_BDQ_EXT_PROD_GTT_OFFSET(storage_func_id, bdq_id)      \
160 	(IRO[IRO_MSTORM_SCSI_BDQ_EXT_PROD_GTT].base                       \
161 	 + ((storage_func_id) * IRO[IRO_MSTORM_SCSI_BDQ_EXT_PROD_GTT].m1) \
162 	 + ((bdq_id) * IRO[IRO_MSTORM_SCSI_BDQ_EXT_PROD_GTT].m2))
163 #define MSTORM_SCSI_BDQ_EXT_PROD_GTT_SIZE \
164 				(IRO[IRO_MSTORM_SCSI_BDQ_EXT_PROD_GTT].size)
165 
166 /* TPA agregation timeout in us resolution (on ASIC) */
167 #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[IRO_MSTORM_TPA_TIMEOUT_US].base)
168 #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[IRO_MSTORM_TPA_TIMEOUT_US].size)
169 
170 /* Control frame's EthType configuration for TX control frame security */
171 #define PSTORM_CTL_FRAME_ETHTYPE_GTT_OFFSET(ethtype_id) \
172 	(IRO[IRO_PSTORM_CTL_FRAME_ETHTYPE_GTT].base     \
173 	 + ((ethtype_id) * IRO[IRO_PSTORM_CTL_FRAME_ETHTYPE_GTT].m1))
174 #define PSTORM_CTL_FRAME_ETHTYPE_GTT_SIZE \
175 				(IRO[IRO_PSTORM_CTL_FRAME_ETHTYPE_GTT].size)
176 
177 /* Pstorm pf statistics */
178 #define PSTORM_ETH_PF_STAT_OFFSET(pf_id)  \
179 	(IRO[IRO_PSTORM_ETH_PF_STAT].base \
180 	 + ((pf_id) * IRO[IRO_PSTORM_ETH_PF_STAT].m1))
181 #define PSTORM_ETH_PF_STAT_SIZE (IRO[IRO_PSTORM_ETH_PF_STAT].size)
182 
183 /* Pstorm FCoE TX stats */
184 #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id)  \
185 	(IRO[IRO_PSTORM_FCOE_TX_STATS].base \
186 	 + ((pf_id) * IRO[IRO_PSTORM_FCOE_TX_STATS].m1))
187 #define PSTORM_FCOE_TX_STATS_SIZE (IRO[IRO_PSTORM_FCOE_TX_STATS].size)
188 
189 /* Pstorm Integration Test Data */
190 #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_PSTORM_INTEG_TEST_DATA].base)
191 #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_PSTORM_INTEG_TEST_DATA].size)
192 
193 /* Pstorm iSCSI TX stats */
194 #define PSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
195 	(IRO[IRO_PSTORM_ISCSI_TX_STATS].base          \
196 	 + ((storage_func_id) * IRO[IRO_PSTORM_ISCSI_TX_STATS].m1))
197 #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[IRO_PSTORM_ISCSI_TX_STATS].size)
198 
199 /* Pstorm overlay buffer host address */
200 #define PSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[IRO_PSTORM_OVERLAY_BUF_ADDR].base)
201 #define PSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_PSTORM_OVERLAY_BUF_ADDR].size)
202 
203 /* Pstorm LL2 packet duplication configuration. Use pstorm_pkt_dup_cfg
204  * data type.
205  */
206 #define PSTORM_PKT_DUPLICATION_CFG_OFFSET(pf_id) \
207 	(IRO[IRO_PSTORM_PKT_DUPLICATION_CFG].base \
208 	+ ((pf_id) * IRO[IRO_PSTORM_PKT_DUPLICATION_CFG].m1))
209 #define PSTORM_PKT_DUPLICATION_CFG_SIZE \
210 				(IRO[IRO_PSTORM_PKT_DUPLICATION_CFG].size)
211 
212 /* Pstorm queue statistics */
213 #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
214 	(IRO[IRO_PSTORM_QUEUE_STAT].base          \
215 	 + ((stat_counter_id) * IRO[IRO_PSTORM_QUEUE_STAT].m1))
216 #define PSTORM_QUEUE_STAT_SIZE (IRO[IRO_PSTORM_QUEUE_STAT].size)
217 
218 /* Pstorm error level for assert */
219 #define PSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
220 	(IRO[IRO_PSTORM_RDMA_ASSERT_LEVEL].base \
221 	 + ((pf_id) * IRO[IRO_PSTORM_RDMA_ASSERT_LEVEL].m1))
222 #define PSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_PSTORM_RDMA_ASSERT_LEVEL].size)
223 
224 /* Pstorm RDMA queue statistics */
225 #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
226 	(IRO[IRO_PSTORM_RDMA_QUEUE_STAT].base               \
227 	 + ((rdma_stat_counter_id) * IRO[IRO_PSTORM_RDMA_QUEUE_STAT].m1))
228 #define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[IRO_PSTORM_RDMA_QUEUE_STAT].size)
229 
230 /* DCQCN Sent Statistics */
231 #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \
232 	(IRO[IRO_PSTORM_ROCE_DCQCN_SENT_STATS].base     \
233 	 + ((roce_pf_id) * IRO[IRO_PSTORM_ROCE_DCQCN_SENT_STATS].m1))
234 #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE \
235 				(IRO[IRO_PSTORM_ROCE_DCQCN_SENT_STATS].size)
236 
237 /* Tstorm last parser message */
238 #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[IRO_TSTORM_ETH_PRS_INPUT].base)
239 #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[IRO_TSTORM_ETH_PRS_INPUT].size)
240 
241 /* RSS indirection table entry update command per PF offset in TSTORM PF BAR0.
242  * Use eth_tstorm_rss_update_data for update.
243  */
244 #define TSTORM_ETH_RSS_UPDATE_GTT_OFFSET(pf_id)  \
245 	(IRO[IRO_TSTORM_ETH_RSS_UPDATE_GTT].base \
246 	 + ((pf_id) * IRO[IRO_TSTORM_ETH_RSS_UPDATE_GTT].m1))
247 #define TSTORM_ETH_RSS_UPDATE_GTT_SIZE\
248 				(IRO[IRO_TSTORM_ETH_RSS_UPDATE_GTT].size)
249 
250 /* Tstorm FCoE RX stats */
251 #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id)  \
252 	(IRO[IRO_TSTORM_FCOE_RX_STATS].base \
253 	 + ((pf_id) * IRO[IRO_TSTORM_FCOE_RX_STATS].m1))
254 #define TSTORM_FCOE_RX_STATS_SIZE (IRO[IRO_TSTORM_FCOE_RX_STATS].size)
255 
256 /* Tstorm Integration Test Data */
257 #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_TSTORM_INTEG_TEST_DATA].base)
258 #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_TSTORM_INTEG_TEST_DATA].size)
259 
260 /* Tstorm iSCSI RX stats */
261 #define TSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
262 	(IRO[IRO_TSTORM_ISCSI_RX_STATS].base          \
263 	 + ((storage_func_id) * IRO[IRO_TSTORM_ISCSI_RX_STATS].m1))
264 #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[IRO_TSTORM_ISCSI_RX_STATS].size)
265 
266 /* Tstorm ll2 port statistics */
267 #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \
268 	(IRO[IRO_TSTORM_LL2_PORT_STAT].base  \
269 	 + ((port_id) * IRO[IRO_TSTORM_LL2_PORT_STAT].m1))
270 #define TSTORM_LL2_PORT_STAT_SIZE (IRO[IRO_TSTORM_LL2_PORT_STAT].size)
271 
272 /* Tstorm producers */
273 #define TSTORM_LL2_RX_PRODS_GTT_OFFSET(core_rx_queue_id) \
274 	(IRO[IRO_TSTORM_LL2_RX_PRODS_GTT].base           \
275 	 + ((core_rx_queue_id) * IRO[IRO_TSTORM_LL2_RX_PRODS_GTT].m1))
276 #define TSTORM_LL2_RX_PRODS_GTT_SIZE (IRO[IRO_TSTORM_LL2_RX_PRODS_GTT].size)
277 
278 /* Tstorm overlay buffer host address */
279 #define TSTORM_OVERLAY_BUF_ADDR_OFFSET	(IRO[IRO_TSTORM_OVERLAY_BUF_ADDR].base)
280 
281 #define TSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_TSTORM_OVERLAY_BUF_ADDR].size)
282 
283 /* Tstorm LL2 packet duplication configuration.
284  * Use tstorm_pkt_dup_cfg data type.
285  */
286 #define TSTORM_PKT_DUPLICATION_CFG_OFFSET(pf_id)  \
287 	(IRO[IRO_TSTORM_PKT_DUPLICATION_CFG].base \
288 	+ ((pf_id) * IRO[IRO_TSTORM_PKT_DUPLICATION_CFG].m1))
289 #define TSTORM_PKT_DUPLICATION_CFG_SIZE \
290 				(IRO[IRO_TSTORM_PKT_DUPLICATION_CFG].size)
291 
292 /* Tstorm port statistics */
293 #define TSTORM_PORT_STAT_OFFSET(port_id) \
294 	(IRO[IRO_TSTORM_PORT_STAT].base  \
295 	 + ((port_id) * IRO[IRO_TSTORM_PORT_STAT].m1))
296 #define TSTORM_PORT_STAT_SIZE (IRO[IRO_TSTORM_PORT_STAT].size)
297 
298 /* Tstorm error level for assert */
299 #define TSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
300 	(IRO[IRO_TSTORM_RDMA_ASSERT_LEVEL].base \
301 	 + ((pf_id) * IRO[IRO_TSTORM_RDMA_ASSERT_LEVEL].m1))
302 #define TSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_TSTORM_RDMA_ASSERT_LEVEL].size)
303 
304 /* Tstorm RDMA queue statistics */
305 #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
306 	(IRO[IRO_TSTORM_RDMA_QUEUE_STAT].base               \
307 	 + ((rdma_stat_counter_id) * IRO[IRO_TSTORM_RDMA_QUEUE_STAT].m1))
308 #define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[IRO_TSTORM_RDMA_QUEUE_STAT].size)
309 
310 /* Tstorm RoCE Event Statistics */
311 #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \
312 	(IRO[IRO_TSTORM_ROCE_EVENTS_STAT].base     \
313 	 + ((roce_pf_id) * IRO[IRO_TSTORM_ROCE_EVENTS_STAT].m1))
314 #define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[IRO_TSTORM_ROCE_EVENTS_STAT].size)
315 
316 /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID,
317  * BDqueue-id.
318  */
319 #define TSTORM_SCSI_BDQ_EXT_PROD_GTT_OFFSET(storage_func_id, bdq_id)      \
320 	(IRO[IRO_TSTORM_SCSI_BDQ_EXT_PROD_GTT].base                       \
321 	 + ((storage_func_id) * IRO[IRO_TSTORM_SCSI_BDQ_EXT_PROD_GTT].m1) \
322 	 + ((bdq_id) * IRO[IRO_TSTORM_SCSI_BDQ_EXT_PROD_GTT].m2))
323 #define TSTORM_SCSI_BDQ_EXT_PROD_GTT_SIZE \
324 				(IRO[IRO_TSTORM_SCSI_BDQ_EXT_PROD_GTT].size)
325 
326 /* Tstorm cmdq-cons of given command queue-id */
327 #define TSTORM_SCSI_CMDQ_CONS_GTT_OFFSET(cmdq_queue_id) \
328 	(IRO[IRO_TSTORM_SCSI_CMDQ_CONS_GTT].base        \
329 	 + ((cmdq_queue_id) * IRO[IRO_TSTORM_SCSI_CMDQ_CONS_GTT].m1))
330 #define TSTORM_SCSI_CMDQ_CONS_GTT_SIZE \
331 				(IRO[IRO_TSTORM_SCSI_CMDQ_CONS_GTT].size)
332 
333 /* Ustorm Common Queue ring consumer */
334 #define USTORM_COMMON_QUEUE_CONS_GTT_OFFSET(queue_zone_id) \
335 	(IRO[IRO_USTORM_COMMON_QUEUE_CONS_GTT].base        \
336 	 + ((queue_zone_id) * IRO[IRO_USTORM_COMMON_QUEUE_CONS_GTT].m1))
337 #define USTORM_COMMON_QUEUE_CONS_GTT_SIZE \
338 				(IRO[IRO_USTORM_COMMON_QUEUE_CONS_GTT].size)
339 
340 /* Ustorm Event ring consumer */
341 #define USTORM_EQE_CONS_GTT_OFFSET(pf_id)  \
342 	(IRO[IRO_USTORM_EQE_CONS_GTT].base \
343 	 + ((pf_id) * IRO[IRO_USTORM_EQE_CONS_GTT].m1))
344 #define USTORM_EQE_CONS_GTT_SIZE (IRO[IRO_USTORM_EQE_CONS_GTT].size)
345 
346 /* Ustorm pf statistics */
347 #define USTORM_ETH_PF_STAT_OFFSET(pf_id)  \
348 	(IRO[IRO_USTORM_ETH_PF_STAT].base \
349 	 + ((pf_id) * IRO[IRO_USTORM_ETH_PF_STAT].m1))
350 #define USTORM_ETH_PF_STAT_SIZE	(IRO[IRO_USTORM_ETH_PF_STAT].size)
351 
352 /* Ustorm eth queue zone */
353 #define USTORM_ETH_QUEUE_ZONE_GTT_OFFSET(queue_zone_id) \
354 	(IRO[IRO_USTORM_ETH_QUEUE_ZONE_GTT].base        \
355 	 + ((queue_zone_id) * IRO[IRO_USTORM_ETH_QUEUE_ZONE_GTT].m1))
356 #define USTORM_ETH_QUEUE_ZONE_GTT_SIZE (IRO[IRO_USTORM_ETH_QUEUE_ZONE_GTT].size)
357 
358 /* Ustorm Final flr cleanup ack */
359 #define USTORM_FLR_FINAL_ACK_GTT_OFFSET(pf_id)  \
360 	(IRO[IRO_USTORM_FLR_FINAL_ACK_GTT].base \
361 	 + ((pf_id) * IRO[IRO_USTORM_FLR_FINAL_ACK_GTT].m1))
362 #define USTORM_FLR_FINAL_ACK_GTT_SIZE (IRO[IRO_USTORM_FLR_FINAL_ACK_GTT].size)
363 
364 /* Ustorm Integration Test Data */
365 #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_USTORM_INTEG_TEST_DATA].base)
366 #define USTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_USTORM_INTEG_TEST_DATA].size)
367 
368 /* Ustorm iSCSI RX stats */
369 #define USTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \
370 	(IRO[IRO_USTORM_ISCSI_RX_STATS].base          \
371 	 + ((storage_func_id) * IRO[IRO_USTORM_ISCSI_RX_STATS].m1))
372 #define USTORM_ISCSI_RX_STATS_SIZE (IRO[IRO_USTORM_ISCSI_RX_STATS].size)
373 
374 /* Ustorm overlay buffer host address */
375 #define USTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[IRO_USTORM_OVERLAY_BUF_ADDR].base)
376 #define USTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_USTORM_OVERLAY_BUF_ADDR].size)
377 
378 /* Ustorm queue statistics */
379 #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
380 	(IRO[IRO_USTORM_QUEUE_STAT].base          \
381 	 + ((stat_counter_id) * IRO[IRO_USTORM_QUEUE_STAT].m1))
382 #define USTORM_QUEUE_STAT_SIZE (IRO[IRO_USTORM_QUEUE_STAT].size)
383 
384 /* Ustorm error level for assert */
385 #define USTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
386 	(IRO[IRO_USTORM_RDMA_ASSERT_LEVEL].base \
387 	 + ((pf_id) * IRO[IRO_USTORM_RDMA_ASSERT_LEVEL].m1))
388 #define USTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_USTORM_RDMA_ASSERT_LEVEL].size)
389 
390 /* RoCE CQEs Statistics */
391 #define USTORM_ROCE_CQE_STATS_OFFSET(roce_pf_id) \
392 	(IRO[IRO_USTORM_ROCE_CQE_STATS].base     \
393 	 + ((roce_pf_id) * IRO[IRO_USTORM_ROCE_CQE_STATS].m1))
394 #define USTORM_ROCE_CQE_STATS_SIZE (IRO[IRO_USTORM_ROCE_CQE_STATS].size)
395 
396 /* Ustorm cqe producer */
397 #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \
398 	(IRO[IRO_USTORM_TOE_CQ_PROD].base \
399 	 + ((rss_id) * IRO[IRO_USTORM_TOE_CQ_PROD].m1))
400 #define USTORM_TOE_CQ_PROD_SIZE (IRO[IRO_USTORM_TOE_CQ_PROD].size)
401 
402 /* Ustorm grq producer */
403 #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id)  \
404 	(IRO[IRO_USTORM_TOE_GRQ_PROD].base \
405 	 + ((pf_id) * IRO[IRO_USTORM_TOE_GRQ_PROD].m1))
406 #define USTORM_TOE_GRQ_PROD_SIZE (IRO[IRO_USTORM_TOE_GRQ_PROD].size)
407 
408 /* Ustorm VF-PF Channel ready flag */
409 #define USTORM_VF_PF_CHANNEL_READY_GTT_OFFSET(vf_id)  \
410 	(IRO[IRO_USTORM_VF_PF_CHANNEL_READY_GTT].base \
411 	 + ((vf_id) * IRO[IRO_USTORM_VF_PF_CHANNEL_READY_GTT].m1))
412 #define USTORM_VF_PF_CHANNEL_READY_GTT_SIZE \
413 				(IRO[IRO_USTORM_VF_PF_CHANNEL_READY_GTT].size)
414 
415 /* Xstorm queue zone */
416 #define XSTORM_ETH_QUEUE_ZONE_GTT_OFFSET(queue_id) \
417 	(IRO[IRO_XSTORM_ETH_QUEUE_ZONE_GTT].base   \
418 	 + ((queue_id) * IRO[IRO_XSTORM_ETH_QUEUE_ZONE_GTT].m1))
419 #define XSTORM_ETH_QUEUE_ZONE_GTT_SIZE (IRO[IRO_XSTORM_ETH_QUEUE_ZONE_GTT].size)
420 
421 /* Xstorm Integration Test Data */
422 #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_XSTORM_INTEG_TEST_DATA].base)
423 #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_XSTORM_INTEG_TEST_DATA].size)
424 
425 /* Xstorm iSCSI TX stats */
426 #define XSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
427 	(IRO[IRO_XSTORM_ISCSI_TX_STATS].base          \
428 	 + ((storage_func_id) * IRO[IRO_XSTORM_ISCSI_TX_STATS].m1))
429 #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[IRO_XSTORM_ISCSI_TX_STATS].size)
430 
431 /* Xstorm iWARP rxmit stats */
432 #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id)  \
433 	(IRO[IRO_XSTORM_IWARP_RXMIT_STATS].base \
434 	 + ((pf_id) * IRO[IRO_XSTORM_IWARP_RXMIT_STATS].m1))
435 #define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[IRO_XSTORM_IWARP_RXMIT_STATS].size)
436 
437 /* Xstorm overlay buffer host address */
438 #define XSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[IRO_XSTORM_OVERLAY_BUF_ADDR].base)
439 #define XSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_XSTORM_OVERLAY_BUF_ADDR].size)
440 
441 /* Xstorm common PQ info */
442 #define XSTORM_PQ_INFO_OFFSET(pq_id)  \
443 	(IRO[IRO_XSTORM_PQ_INFO].base \
444 	 + ((pq_id) * IRO[IRO_XSTORM_PQ_INFO].m1))
445 #define XSTORM_PQ_INFO_SIZE (IRO[IRO_XSTORM_PQ_INFO].size)
446 
447 /* Xstorm error level for assert */
448 #define XSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
449 	(IRO[IRO_XSTORM_RDMA_ASSERT_LEVEL].base \
450 	 + ((pf_id) * IRO[IRO_XSTORM_RDMA_ASSERT_LEVEL].m1))
451 #define XSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_XSTORM_RDMA_ASSERT_LEVEL].size)
452 
453 /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
454 #define YSTORM_FLOW_CONTROL_MODE_GTT_OFFSET \
455 				(IRO[IRO_YSTORM_FLOW_CONTROL_MODE_GTT].base)
456 #define YSTORM_FLOW_CONTROL_MODE_GTT_SIZE \
457 				(IRO[IRO_YSTORM_FLOW_CONTROL_MODE_GTT].size)
458 
459 /* Ystorm Integration Test Data */
460 #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[IRO_YSTORM_INTEG_TEST_DATA].base)
461 #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[IRO_YSTORM_INTEG_TEST_DATA].size)
462 
463 /* Ystorm iSCSI TX stats */
464 #define YSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \
465 	(IRO[IRO_YSTORM_ISCSI_TX_STATS].base          \
466 	 + ((storage_func_id) * IRO[IRO_YSTORM_ISCSI_TX_STATS].m1))
467 #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[IRO_YSTORM_ISCSI_TX_STATS].size)
468 
469 /* Ystorm overlay buffer host address */
470 #define YSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[IRO_YSTORM_OVERLAY_BUF_ADDR].base)
471 #define YSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[IRO_YSTORM_OVERLAY_BUF_ADDR].size)
472 
473 /* Ystorm error level for assert */
474 #define YSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id)  \
475 	(IRO[IRO_YSTORM_RDMA_ASSERT_LEVEL].base \
476 	 + ((pf_id) * IRO[IRO_YSTORM_RDMA_ASSERT_LEVEL].m1))
477 #define YSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[IRO_YSTORM_RDMA_ASSERT_LEVEL].size)
478 
479 /* DCQCN Received Statistics */
480 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id) \
481 	(IRO[IRO_YSTORM_ROCE_DCQCN_RECEIVED_STATS].base     \
482 	 + ((roce_pf_id) * IRO[IRO_YSTORM_ROCE_DCQCN_RECEIVED_STATS].m1))
483 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE \
484 			(IRO[IRO_YSTORM_ROCE_DCQCN_RECEIVED_STATS].size)
485 
486 /* RoCE Error Statistics */
487 #define YSTORM_ROCE_ERROR_STATS_OFFSET(roce_pf_id) \
488 	(IRO[IRO_YSTORM_ROCE_ERROR_STATS].base     \
489 	 + ((roce_pf_id) * IRO[IRO_YSTORM_ROCE_ERROR_STATS].m1))
490 #define YSTORM_ROCE_ERROR_STATS_SIZE (IRO[IRO_YSTORM_ROCE_ERROR_STATS].size)
491 
492 /* Ystorm cqe producer */
493 #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \
494 	(IRO[IRO_YSTORM_TOE_CQ_PROD].base \
495 	 + ((rss_id) * IRO[IRO_YSTORM_TOE_CQ_PROD].m1))
496 #define YSTORM_TOE_CQ_PROD_SIZE (IRO[IRO_YSTORM_TOE_CQ_PROD].size)
497 
498 /* Per-chip offsets in iro_arr in dwords */
499 #define E4_IRO_ARR_OFFSET    0
500 #endif
501