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
11enum {
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