1316485Sdavidcs/*
2316485Sdavidcs * Copyright (c) 2017-2018 Cavium, Inc.
3316485Sdavidcs * All rights reserved.
4316485Sdavidcs *
5316485Sdavidcs *  Redistribution and use in source and binary forms, with or without
6316485Sdavidcs *  modification, are permitted provided that the following conditions
7316485Sdavidcs *  are met:
8316485Sdavidcs *
9316485Sdavidcs *  1. Redistributions of source code must retain the above copyright
10316485Sdavidcs *     notice, this list of conditions and the following disclaimer.
11316485Sdavidcs *  2. Redistributions in binary form must reproduce the above copyright
12316485Sdavidcs *     notice, this list of conditions and the following disclaimer in the
13316485Sdavidcs *     documentation and/or other materials provided with the distribution.
14316485Sdavidcs *
15316485Sdavidcs *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16316485Sdavidcs *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17316485Sdavidcs *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18316485Sdavidcs *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19316485Sdavidcs *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20316485Sdavidcs *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21316485Sdavidcs *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22316485Sdavidcs *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23316485Sdavidcs *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24316485Sdavidcs *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25316485Sdavidcs *  POSSIBILITY OF SUCH DAMAGE.
26316485Sdavidcs *
27316485Sdavidcs * $FreeBSD: stable/10/sys/dev/qlnx/qlnxe/ecore_iro.h 337519 2018-08-09 01:39:47Z davidcs $
28316485Sdavidcs *
29316485Sdavidcs */
30316485Sdavidcs
31316485Sdavidcs#ifndef __IRO_H__
32316485Sdavidcs#define __IRO_H__
33316485Sdavidcs
34316485Sdavidcs/* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
35316485Sdavidcs#define YSTORM_FLOW_CONTROL_MODE_OFFSET                             (IRO[0].base)
36316485Sdavidcs#define YSTORM_FLOW_CONTROL_MODE_SIZE                               (IRO[0].size)
37316485Sdavidcs/* Tstorm port statistics */
38316485Sdavidcs#define TSTORM_PORT_STAT_OFFSET(port_id)                            (IRO[1].base + ((port_id) * IRO[1].m1))
39316485Sdavidcs#define TSTORM_PORT_STAT_SIZE                                       (IRO[1].size)
40316485Sdavidcs/* Tstorm ll2 port statistics */
41316485Sdavidcs#define TSTORM_LL2_PORT_STAT_OFFSET(port_id)                        (IRO[2].base + ((port_id) * IRO[2].m1))
42316485Sdavidcs#define TSTORM_LL2_PORT_STAT_SIZE                                   (IRO[2].size)
43316485Sdavidcs/* Ustorm VF-PF Channel ready flag */
44316485Sdavidcs#define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id)                    (IRO[3].base + ((vf_id) * IRO[3].m1))
45316485Sdavidcs#define USTORM_VF_PF_CHANNEL_READY_SIZE                             (IRO[3].size)
46316485Sdavidcs/* Ustorm Final flr cleanup ack */
47316485Sdavidcs#define USTORM_FLR_FINAL_ACK_OFFSET(pf_id)                          (IRO[4].base + ((pf_id) * IRO[4].m1))
48316485Sdavidcs#define USTORM_FLR_FINAL_ACK_SIZE                                   (IRO[4].size)
49316485Sdavidcs/* Ustorm Event ring consumer */
50316485Sdavidcs#define USTORM_EQE_CONS_OFFSET(pf_id)                               (IRO[5].base + ((pf_id) * IRO[5].m1))
51316485Sdavidcs#define USTORM_EQE_CONS_SIZE                                        (IRO[5].size)
52316485Sdavidcs/* Ustorm eth queue zone */
53316485Sdavidcs#define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id)                 (IRO[6].base + ((queue_zone_id) * IRO[6].m1))
54316485Sdavidcs#define USTORM_ETH_QUEUE_ZONE_SIZE                                  (IRO[6].size)
55316485Sdavidcs/* Ustorm Common Queue ring consumer */
56316485Sdavidcs#define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id)              (IRO[7].base + ((queue_zone_id) * IRO[7].m1))
57316485Sdavidcs#define USTORM_COMMON_QUEUE_CONS_SIZE                               (IRO[7].size)
58316485Sdavidcs/* Xstorm Integration Test Data */
59316485Sdavidcs#define XSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[8].base)
60316485Sdavidcs#define XSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[8].size)
61316485Sdavidcs/* Ystorm Integration Test Data */
62316485Sdavidcs#define YSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[9].base)
63316485Sdavidcs#define YSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[9].size)
64316485Sdavidcs/* Pstorm Integration Test Data */
65316485Sdavidcs#define PSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[10].base)
66316485Sdavidcs#define PSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[10].size)
67316485Sdavidcs/* Tstorm Integration Test Data */
68316485Sdavidcs#define TSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[11].base)
69316485Sdavidcs#define TSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[11].size)
70316485Sdavidcs/* Mstorm Integration Test Data */
71316485Sdavidcs#define MSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[12].base)
72316485Sdavidcs#define MSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[12].size)
73316485Sdavidcs/* Ustorm Integration Test Data */
74316485Sdavidcs#define USTORM_INTEG_TEST_DATA_OFFSET                               (IRO[13].base)
75316485Sdavidcs#define USTORM_INTEG_TEST_DATA_SIZE                                 (IRO[13].size)
76316485Sdavidcs/* Tstorm producers */
77316485Sdavidcs#define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id)                (IRO[14].base + ((core_rx_queue_id) * IRO[14].m1))
78316485Sdavidcs#define TSTORM_LL2_RX_PRODS_SIZE                                    (IRO[14].size)
79316485Sdavidcs/* Tstorm LightL2 queue statistics */
80316485Sdavidcs#define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id)     (IRO[15].base + ((core_rx_queue_id) * IRO[15].m1))
81316485Sdavidcs#define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE                         (IRO[15].size)
82316485Sdavidcs/* Ustorm LiteL2 queue statistics */
83316485Sdavidcs#define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id)     (IRO[16].base + ((core_rx_queue_id) * IRO[16].m1))
84316485Sdavidcs#define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE                         (IRO[16].size)
85316485Sdavidcs/* Pstorm LiteL2 queue statistics */
86316485Sdavidcs#define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id)     (IRO[17].base + ((core_tx_stats_id) * IRO[17].m1))
87316485Sdavidcs#define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE                         (IRO[17].size)
88316485Sdavidcs/* Mstorm queue statistics */
89316485Sdavidcs#define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[18].base + ((stat_counter_id) * IRO[18].m1))
90316485Sdavidcs#define MSTORM_QUEUE_STAT_SIZE                                      (IRO[18].size)
91316485Sdavidcs/* Mstorm ETH PF queues producers */
92316485Sdavidcs#define MSTORM_ETH_PF_PRODS_OFFSET(queue_id)                        (IRO[19].base + ((queue_id) * IRO[19].m1))
93316485Sdavidcs#define MSTORM_ETH_PF_PRODS_SIZE                                    (IRO[19].size)
94316485Sdavidcs/* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size mode. */
95316485Sdavidcs#define MSTORM_ETH_VF_PRODS_OFFSET(vf_id,vf_queue_id)               (IRO[20].base + ((vf_id) * IRO[20].m1) + ((vf_queue_id) * IRO[20].m2))
96316485Sdavidcs#define MSTORM_ETH_VF_PRODS_SIZE                                    (IRO[20].size)
97316485Sdavidcs/* TPA agregation timeout in us resolution (on ASIC) */
98316485Sdavidcs#define MSTORM_TPA_TIMEOUT_US_OFFSET                                (IRO[21].base)
99316485Sdavidcs#define MSTORM_TPA_TIMEOUT_US_SIZE                                  (IRO[21].size)
100316485Sdavidcs/* Mstorm pf statistics */
101316485Sdavidcs#define MSTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[22].base + ((pf_id) * IRO[22].m1))
102316485Sdavidcs#define MSTORM_ETH_PF_STAT_SIZE                                     (IRO[22].size)
103316485Sdavidcs/* Ustorm queue statistics */
104316485Sdavidcs#define USTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[23].base + ((stat_counter_id) * IRO[23].m1))
105316485Sdavidcs#define USTORM_QUEUE_STAT_SIZE                                      (IRO[23].size)
106316485Sdavidcs/* Ustorm pf statistics */
107316485Sdavidcs#define USTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[24].base + ((pf_id) * IRO[24].m1))
108316485Sdavidcs#define USTORM_ETH_PF_STAT_SIZE                                     (IRO[24].size)
109316485Sdavidcs/* Pstorm queue statistics */
110316485Sdavidcs#define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[25].base + ((stat_counter_id) * IRO[25].m1))
111316485Sdavidcs#define PSTORM_QUEUE_STAT_SIZE                                      (IRO[25].size)
112316485Sdavidcs/* Pstorm pf statistics */
113316485Sdavidcs#define PSTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[26].base + ((pf_id) * IRO[26].m1))
114316485Sdavidcs#define PSTORM_ETH_PF_STAT_SIZE                                     (IRO[26].size)
115316485Sdavidcs/* Control frame's EthType configuration for TX control frame security */
116316485Sdavidcs#define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(ethType_id)                 (IRO[27].base + ((ethType_id) * IRO[27].m1))
117316485Sdavidcs#define PSTORM_CTL_FRAME_ETHTYPE_SIZE                               (IRO[27].size)
118316485Sdavidcs/* Tstorm last parser message */
119316485Sdavidcs#define TSTORM_ETH_PRS_INPUT_OFFSET                                 (IRO[28].base)
120316485Sdavidcs#define TSTORM_ETH_PRS_INPUT_SIZE                                   (IRO[28].size)
121316485Sdavidcs/* Tstorm Eth limit Rx rate */
122316485Sdavidcs#define ETH_RX_RATE_LIMIT_OFFSET(pf_id)                             (IRO[29].base + ((pf_id) * IRO[29].m1))
123316485Sdavidcs#define ETH_RX_RATE_LIMIT_SIZE                                      (IRO[29].size)
124316485Sdavidcs/* Xstorm queue zone */
125316485Sdavidcs#define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id)                      (IRO[30].base + ((queue_id) * IRO[30].m1))
126316485Sdavidcs#define XSTORM_ETH_QUEUE_ZONE_SIZE                                  (IRO[30].size)
127316485Sdavidcs/* Ystorm cqe producer */
128316485Sdavidcs#define YSTORM_TOE_CQ_PROD_OFFSET(rss_id)                           (IRO[31].base + ((rss_id) * IRO[31].m1))
129316485Sdavidcs#define YSTORM_TOE_CQ_PROD_SIZE                                     (IRO[31].size)
130316485Sdavidcs/* Ustorm cqe producer */
131316485Sdavidcs#define USTORM_TOE_CQ_PROD_OFFSET(rss_id)                           (IRO[32].base + ((rss_id) * IRO[32].m1))
132316485Sdavidcs#define USTORM_TOE_CQ_PROD_SIZE                                     (IRO[32].size)
133316485Sdavidcs/* Ustorm grq producer */
134316485Sdavidcs#define USTORM_TOE_GRQ_PROD_OFFSET(pf_id)                           (IRO[33].base + ((pf_id) * IRO[33].m1))
135316485Sdavidcs#define USTORM_TOE_GRQ_PROD_SIZE                                    (IRO[33].size)
136316485Sdavidcs/* Tstorm cmdq-cons of given command queue-id */
137316485Sdavidcs#define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id)                 (IRO[34].base + ((cmdq_queue_id) * IRO[34].m1))
138316485Sdavidcs#define TSTORM_SCSI_CMDQ_CONS_SIZE                                  (IRO[34].size)
139316485Sdavidcs/* Tstorm (reflects M-Storm) bdq-external-producer of given function ID, BDqueue-id */
140316485Sdavidcs#define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id,bdq_id)             (IRO[35].base + ((func_id) * IRO[35].m1) + ((bdq_id) * IRO[35].m2))
141316485Sdavidcs#define TSTORM_SCSI_BDQ_EXT_PROD_SIZE                               (IRO[35].size)
142316485Sdavidcs/* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
143316485Sdavidcs#define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id,bdq_id)             (IRO[36].base + ((func_id) * IRO[36].m1) + ((bdq_id) * IRO[36].m2))
144316485Sdavidcs#define MSTORM_SCSI_BDQ_EXT_PROD_SIZE                               (IRO[36].size)
145316485Sdavidcs/* Tstorm iSCSI RX stats */
146316485Sdavidcs#define TSTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[37].base + ((pf_id) * IRO[37].m1))
147316485Sdavidcs#define TSTORM_ISCSI_RX_STATS_SIZE                                  (IRO[37].size)
148316485Sdavidcs/* Mstorm iSCSI RX stats */
149316485Sdavidcs#define MSTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[38].base + ((pf_id) * IRO[38].m1))
150316485Sdavidcs#define MSTORM_ISCSI_RX_STATS_SIZE                                  (IRO[38].size)
151316485Sdavidcs/* Ustorm iSCSI RX stats */
152316485Sdavidcs#define USTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[39].base + ((pf_id) * IRO[39].m1))
153316485Sdavidcs#define USTORM_ISCSI_RX_STATS_SIZE                                  (IRO[39].size)
154316485Sdavidcs/* Xstorm iSCSI TX stats */
155316485Sdavidcs#define XSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[40].base + ((pf_id) * IRO[40].m1))
156316485Sdavidcs#define XSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[40].size)
157316485Sdavidcs/* Ystorm iSCSI TX stats */
158316485Sdavidcs#define YSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[41].base + ((pf_id) * IRO[41].m1))
159316485Sdavidcs#define YSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[41].size)
160316485Sdavidcs/* Pstorm iSCSI TX stats */
161316485Sdavidcs#define PSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[42].base + ((pf_id) * IRO[42].m1))
162316485Sdavidcs#define PSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[42].size)
163316485Sdavidcs/* Tstorm FCoE RX stats */
164316485Sdavidcs#define TSTORM_FCOE_RX_STATS_OFFSET(pf_id)                          (IRO[43].base + ((pf_id) * IRO[43].m1))
165316485Sdavidcs#define TSTORM_FCOE_RX_STATS_SIZE                                   (IRO[43].size)
166316485Sdavidcs/* Pstorm FCoE TX stats */
167316485Sdavidcs#define PSTORM_FCOE_TX_STATS_OFFSET(pf_id)                          (IRO[44].base + ((pf_id) * IRO[44].m1))
168316485Sdavidcs#define PSTORM_FCOE_TX_STATS_SIZE                                   (IRO[44].size)
169316485Sdavidcs/* Pstorm RDMA queue statistics */
170316485Sdavidcs#define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id)         (IRO[45].base + ((rdma_stat_counter_id) * IRO[45].m1))
171316485Sdavidcs#define PSTORM_RDMA_QUEUE_STAT_SIZE                                 (IRO[45].size)
172316485Sdavidcs/* Tstorm RDMA queue statistics */
173316485Sdavidcs#define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id)         (IRO[46].base + ((rdma_stat_counter_id) * IRO[46].m1))
174316485Sdavidcs#define TSTORM_RDMA_QUEUE_STAT_SIZE                                 (IRO[46].size)
175316485Sdavidcs/* Xstorm iWARP rxmit stats */
176316485Sdavidcs#define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id)                      (IRO[47].base + ((pf_id) * IRO[47].m1))
177316485Sdavidcs#define XSTORM_IWARP_RXMIT_STATS_SIZE                               (IRO[47].size)
178316485Sdavidcs/* Tstorm RoCE Event Statistics */
179316485Sdavidcs#define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id)                  (IRO[48].base + ((roce_pf_id) * IRO[48].m1))
180316485Sdavidcs#define TSTORM_ROCE_EVENTS_STAT_SIZE                                (IRO[48].size)
181337519Sdavidcs/* DCQCN Received Statistics */
182337519Sdavidcs#define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id)         (IRO[49].base + ((roce_pf_id) * IRO[49].m1))
183337519Sdavidcs#define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE                       (IRO[49].size)
184337519Sdavidcs/* DCQCN Sent Statistics */
185337519Sdavidcs#define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id)             (IRO[50].base + ((roce_pf_id) * IRO[50].m1))
186337519Sdavidcs#define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE                           (IRO[50].size)
187316485Sdavidcs
188316485Sdavidcs#endif /* __IRO_H__ */
189