1*14b24e2bSVaishali Kulkarni /*
2*14b24e2bSVaishali Kulkarni * CDDL HEADER START
3*14b24e2bSVaishali Kulkarni *
4*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the
5*14b24e2bSVaishali Kulkarni * Common Development and Distribution License, v.1,  (the "License").
6*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
7*14b24e2bSVaishali Kulkarni *
8*14b24e2bSVaishali Kulkarni * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*14b24e2bSVaishali Kulkarni * or http://opensource.org/licenses/CDDL-1.0.
10*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions
11*14b24e2bSVaishali Kulkarni * and limitations under the License.
12*14b24e2bSVaishali Kulkarni *
13*14b24e2bSVaishali Kulkarni * When distributing Covered Code, include this CDDL HEADER in each
14*14b24e2bSVaishali Kulkarni * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*14b24e2bSVaishali Kulkarni * If applicable, add the following below this CDDL HEADER, with the
16*14b24e2bSVaishali Kulkarni * fields enclosed by brackets "[]" replaced with your own identifying
17*14b24e2bSVaishali Kulkarni * information: Portions Copyright [yyyy] [name of copyright owner]
18*14b24e2bSVaishali Kulkarni *
19*14b24e2bSVaishali Kulkarni * CDDL HEADER END
20*14b24e2bSVaishali Kulkarni */
21*14b24e2bSVaishali Kulkarni 
22*14b24e2bSVaishali Kulkarni /*
23*14b24e2bSVaishali Kulkarni * Copyright 2014-2017 Cavium, Inc.
24*14b24e2bSVaishali Kulkarni * The contents of this file are subject to the terms of the Common Development
25*14b24e2bSVaishali Kulkarni * and Distribution License, v.1,  (the "License").
26*14b24e2bSVaishali Kulkarni 
27*14b24e2bSVaishali Kulkarni * You may not use this file except in compliance with the License.
28*14b24e2bSVaishali Kulkarni 
29*14b24e2bSVaishali Kulkarni * You can obtain a copy of the License at available
30*14b24e2bSVaishali Kulkarni * at http://opensource.org/licenses/CDDL-1.0
31*14b24e2bSVaishali Kulkarni 
32*14b24e2bSVaishali Kulkarni * See the License for the specific language governing permissions and
33*14b24e2bSVaishali Kulkarni * limitations under the License.
34*14b24e2bSVaishali Kulkarni */
35*14b24e2bSVaishali Kulkarni 
36*14b24e2bSVaishali Kulkarni #ifndef __IRO_H__
37*14b24e2bSVaishali Kulkarni #define __IRO_H__
38*14b24e2bSVaishali Kulkarni 
39*14b24e2bSVaishali Kulkarni /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
40*14b24e2bSVaishali Kulkarni #define YSTORM_FLOW_CONTROL_MODE_OFFSET                             (IRO[0].base)
41*14b24e2bSVaishali Kulkarni #define YSTORM_FLOW_CONTROL_MODE_SIZE                               (IRO[0].size)
42*14b24e2bSVaishali Kulkarni /* Tstorm port statistics */
43*14b24e2bSVaishali Kulkarni #define TSTORM_PORT_STAT_OFFSET(port_id)                            (IRO[1].base + ((port_id) * IRO[1].m1))
44*14b24e2bSVaishali Kulkarni #define TSTORM_PORT_STAT_SIZE                                       (IRO[1].size)
45*14b24e2bSVaishali Kulkarni /* Tstorm ll2 port statistics */
46*14b24e2bSVaishali Kulkarni #define TSTORM_LL2_PORT_STAT_OFFSET(port_id)                        (IRO[2].base + ((port_id) * IRO[2].m1))
47*14b24e2bSVaishali Kulkarni #define TSTORM_LL2_PORT_STAT_SIZE                                   (IRO[2].size)
48*14b24e2bSVaishali Kulkarni /* Ustorm VF-PF Channel ready flag */
49*14b24e2bSVaishali Kulkarni #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id)                    (IRO[3].base + ((vf_id) * IRO[3].m1))
50*14b24e2bSVaishali Kulkarni #define USTORM_VF_PF_CHANNEL_READY_SIZE                             (IRO[3].size)
51*14b24e2bSVaishali Kulkarni /* Ustorm Final flr cleanup ack */
52*14b24e2bSVaishali Kulkarni #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id)                          (IRO[4].base + ((pf_id) * IRO[4].m1))
53*14b24e2bSVaishali Kulkarni #define USTORM_FLR_FINAL_ACK_SIZE                                   (IRO[4].size)
54*14b24e2bSVaishali Kulkarni /* Ustorm Event ring consumer */
55*14b24e2bSVaishali Kulkarni #define USTORM_EQE_CONS_OFFSET(pf_id)                               (IRO[5].base + ((pf_id) * IRO[5].m1))
56*14b24e2bSVaishali Kulkarni #define USTORM_EQE_CONS_SIZE                                        (IRO[5].size)
57*14b24e2bSVaishali Kulkarni /* Ustorm eth queue zone */
58*14b24e2bSVaishali Kulkarni #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id)                 (IRO[6].base + ((queue_zone_id) * IRO[6].m1))
59*14b24e2bSVaishali Kulkarni #define USTORM_ETH_QUEUE_ZONE_SIZE                                  (IRO[6].size)
60*14b24e2bSVaishali Kulkarni /* Ustorm Common Queue ring consumer */
61*14b24e2bSVaishali Kulkarni #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id)              (IRO[7].base + ((queue_zone_id) * IRO[7].m1))
62*14b24e2bSVaishali Kulkarni #define USTORM_COMMON_QUEUE_CONS_SIZE                               (IRO[7].size)
63*14b24e2bSVaishali Kulkarni /* Xstorm Integration Test Data */
64*14b24e2bSVaishali Kulkarni #define XSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[8].base)
65*14b24e2bSVaishali Kulkarni #define XSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[8].size)
66*14b24e2bSVaishali Kulkarni /* Ystorm Integration Test Data */
67*14b24e2bSVaishali Kulkarni #define YSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[9].base)
68*14b24e2bSVaishali Kulkarni #define YSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[9].size)
69*14b24e2bSVaishali Kulkarni /* Pstorm Integration Test Data */
70*14b24e2bSVaishali Kulkarni #define PSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[10].base)
71*14b24e2bSVaishali Kulkarni #define PSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[10].size)
72*14b24e2bSVaishali Kulkarni /* Tstorm Integration Test Data */
73*14b24e2bSVaishali Kulkarni #define TSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[11].base)
74*14b24e2bSVaishali Kulkarni #define TSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[11].size)
75*14b24e2bSVaishali Kulkarni /* Mstorm Integration Test Data */
76*14b24e2bSVaishali Kulkarni #define MSTORM_INTEG_TEST_DATA_OFFSET                               (IRO[12].base)
77*14b24e2bSVaishali Kulkarni #define MSTORM_INTEG_TEST_DATA_SIZE                                 (IRO[12].size)
78*14b24e2bSVaishali Kulkarni /* Ustorm Integration Test Data */
79*14b24e2bSVaishali Kulkarni #define USTORM_INTEG_TEST_DATA_OFFSET                               (IRO[13].base)
80*14b24e2bSVaishali Kulkarni #define USTORM_INTEG_TEST_DATA_SIZE                                 (IRO[13].size)
81*14b24e2bSVaishali Kulkarni /* Tstorm producers */
82*14b24e2bSVaishali Kulkarni #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id)                (IRO[14].base + ((core_rx_queue_id) * IRO[14].m1))
83*14b24e2bSVaishali Kulkarni #define TSTORM_LL2_RX_PRODS_SIZE                                    (IRO[14].size)
84*14b24e2bSVaishali Kulkarni /* Tstorm LightL2 queue statistics */
85*14b24e2bSVaishali Kulkarni #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id)     (IRO[15].base + ((core_rx_queue_id) * IRO[15].m1))
86*14b24e2bSVaishali Kulkarni #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE                         (IRO[15].size)
87*14b24e2bSVaishali Kulkarni /* Ustorm LiteL2 queue statistics */
88*14b24e2bSVaishali Kulkarni #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id)     (IRO[16].base + ((core_rx_queue_id) * IRO[16].m1))
89*14b24e2bSVaishali Kulkarni #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE                         (IRO[16].size)
90*14b24e2bSVaishali Kulkarni /* Pstorm LiteL2 queue statistics */
91*14b24e2bSVaishali Kulkarni #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id)     (IRO[17].base + ((core_tx_stats_id) * IRO[17].m1))
92*14b24e2bSVaishali Kulkarni #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE                         (IRO[17].size)
93*14b24e2bSVaishali Kulkarni /* Mstorm queue statistics */
94*14b24e2bSVaishali Kulkarni #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[18].base + ((stat_counter_id) * IRO[18].m1))
95*14b24e2bSVaishali Kulkarni #define MSTORM_QUEUE_STAT_SIZE                                      (IRO[18].size)
96*14b24e2bSVaishali Kulkarni /* Mstorm ETH PF queues producers */
97*14b24e2bSVaishali Kulkarni #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id)                        (IRO[19].base + ((queue_id) * IRO[19].m1))
98*14b24e2bSVaishali Kulkarni #define MSTORM_ETH_PF_PRODS_SIZE                                    (IRO[19].size)
99*14b24e2bSVaishali Kulkarni /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size mode. */
100*14b24e2bSVaishali Kulkarni #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))
101*14b24e2bSVaishali Kulkarni #define MSTORM_ETH_VF_PRODS_SIZE                                    (IRO[20].size)
102*14b24e2bSVaishali Kulkarni /* TPA agregation timeout in us resolution (on ASIC) */
103*14b24e2bSVaishali Kulkarni #define MSTORM_TPA_TIMEOUT_US_OFFSET                                (IRO[21].base)
104*14b24e2bSVaishali Kulkarni #define MSTORM_TPA_TIMEOUT_US_SIZE                                  (IRO[21].size)
105*14b24e2bSVaishali Kulkarni /* Mstorm pf statistics */
106*14b24e2bSVaishali Kulkarni #define MSTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[22].base + ((pf_id) * IRO[22].m1))
107*14b24e2bSVaishali Kulkarni #define MSTORM_ETH_PF_STAT_SIZE                                     (IRO[22].size)
108*14b24e2bSVaishali Kulkarni /* Ustorm queue statistics */
109*14b24e2bSVaishali Kulkarni #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[23].base + ((stat_counter_id) * IRO[23].m1))
110*14b24e2bSVaishali Kulkarni #define USTORM_QUEUE_STAT_SIZE                                      (IRO[23].size)
111*14b24e2bSVaishali Kulkarni /* Ustorm pf statistics */
112*14b24e2bSVaishali Kulkarni #define USTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[24].base + ((pf_id) * IRO[24].m1))
113*14b24e2bSVaishali Kulkarni #define USTORM_ETH_PF_STAT_SIZE                                     (IRO[24].size)
114*14b24e2bSVaishali Kulkarni /* Pstorm queue statistics */
115*14b24e2bSVaishali Kulkarni #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id)                   (IRO[25].base + ((stat_counter_id) * IRO[25].m1))
116*14b24e2bSVaishali Kulkarni #define PSTORM_QUEUE_STAT_SIZE                                      (IRO[25].size)
117*14b24e2bSVaishali Kulkarni /* Pstorm pf statistics */
118*14b24e2bSVaishali Kulkarni #define PSTORM_ETH_PF_STAT_OFFSET(pf_id)                            (IRO[26].base + ((pf_id) * IRO[26].m1))
119*14b24e2bSVaishali Kulkarni #define PSTORM_ETH_PF_STAT_SIZE                                     (IRO[26].size)
120*14b24e2bSVaishali Kulkarni /* Control frame's EthType configuration for TX control frame security */
121*14b24e2bSVaishali Kulkarni #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(ethType_id)                 (IRO[27].base + ((ethType_id) * IRO[27].m1))
122*14b24e2bSVaishali Kulkarni #define PSTORM_CTL_FRAME_ETHTYPE_SIZE                               (IRO[27].size)
123*14b24e2bSVaishali Kulkarni /* Tstorm last parser message */
124*14b24e2bSVaishali Kulkarni #define TSTORM_ETH_PRS_INPUT_OFFSET                                 (IRO[28].base)
125*14b24e2bSVaishali Kulkarni #define TSTORM_ETH_PRS_INPUT_SIZE                                   (IRO[28].size)
126*14b24e2bSVaishali Kulkarni /* Tstorm Eth limit Rx rate */
127*14b24e2bSVaishali Kulkarni #define ETH_RX_RATE_LIMIT_OFFSET(pf_id)                             (IRO[29].base + ((pf_id) * IRO[29].m1))
128*14b24e2bSVaishali Kulkarni #define ETH_RX_RATE_LIMIT_SIZE                                      (IRO[29].size)
129*14b24e2bSVaishali Kulkarni /* Xstorm queue zone */
130*14b24e2bSVaishali Kulkarni #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id)                      (IRO[30].base + ((queue_id) * IRO[30].m1))
131*14b24e2bSVaishali Kulkarni #define XSTORM_ETH_QUEUE_ZONE_SIZE                                  (IRO[30].size)
132*14b24e2bSVaishali Kulkarni /* Ystorm cqe producer */
133*14b24e2bSVaishali Kulkarni #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id)                           (IRO[31].base + ((rss_id) * IRO[31].m1))
134*14b24e2bSVaishali Kulkarni #define YSTORM_TOE_CQ_PROD_SIZE                                     (IRO[31].size)
135*14b24e2bSVaishali Kulkarni /* Ustorm cqe producer */
136*14b24e2bSVaishali Kulkarni #define USTORM_TOE_CQ_PROD_OFFSET(rss_id)                           (IRO[32].base + ((rss_id) * IRO[32].m1))
137*14b24e2bSVaishali Kulkarni #define USTORM_TOE_CQ_PROD_SIZE                                     (IRO[32].size)
138*14b24e2bSVaishali Kulkarni /* Ustorm grq producer */
139*14b24e2bSVaishali Kulkarni #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id)                           (IRO[33].base + ((pf_id) * IRO[33].m1))
140*14b24e2bSVaishali Kulkarni #define USTORM_TOE_GRQ_PROD_SIZE                                    (IRO[33].size)
141*14b24e2bSVaishali Kulkarni /* Tstorm cmdq-cons of given command queue-id */
142*14b24e2bSVaishali Kulkarni #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id)                 (IRO[34].base + ((cmdq_queue_id) * IRO[34].m1))
143*14b24e2bSVaishali Kulkarni #define TSTORM_SCSI_CMDQ_CONS_SIZE                                  (IRO[34].size)
144*14b24e2bSVaishali Kulkarni /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID, BDqueue-id */
145*14b24e2bSVaishali Kulkarni #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id,bdq_id)             (IRO[35].base + ((func_id) * IRO[35].m1) + ((bdq_id) * IRO[35].m2))
146*14b24e2bSVaishali Kulkarni #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE                               (IRO[35].size)
147*14b24e2bSVaishali Kulkarni /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
148*14b24e2bSVaishali Kulkarni #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id,bdq_id)             (IRO[36].base + ((func_id) * IRO[36].m1) + ((bdq_id) * IRO[36].m2))
149*14b24e2bSVaishali Kulkarni #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE                               (IRO[36].size)
150*14b24e2bSVaishali Kulkarni /* Tstorm iSCSI RX stats */
151*14b24e2bSVaishali Kulkarni #define TSTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[37].base + ((pf_id) * IRO[37].m1))
152*14b24e2bSVaishali Kulkarni #define TSTORM_ISCSI_RX_STATS_SIZE                                  (IRO[37].size)
153*14b24e2bSVaishali Kulkarni /* Mstorm iSCSI RX stats */
154*14b24e2bSVaishali Kulkarni #define MSTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[38].base + ((pf_id) * IRO[38].m1))
155*14b24e2bSVaishali Kulkarni #define MSTORM_ISCSI_RX_STATS_SIZE                                  (IRO[38].size)
156*14b24e2bSVaishali Kulkarni /* Ustorm iSCSI RX stats */
157*14b24e2bSVaishali Kulkarni #define USTORM_ISCSI_RX_STATS_OFFSET(pf_id)                         (IRO[39].base + ((pf_id) * IRO[39].m1))
158*14b24e2bSVaishali Kulkarni #define USTORM_ISCSI_RX_STATS_SIZE                                  (IRO[39].size)
159*14b24e2bSVaishali Kulkarni /* Xstorm iSCSI TX stats */
160*14b24e2bSVaishali Kulkarni #define XSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[40].base + ((pf_id) * IRO[40].m1))
161*14b24e2bSVaishali Kulkarni #define XSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[40].size)
162*14b24e2bSVaishali Kulkarni /* Ystorm iSCSI TX stats */
163*14b24e2bSVaishali Kulkarni #define YSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[41].base + ((pf_id) * IRO[41].m1))
164*14b24e2bSVaishali Kulkarni #define YSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[41].size)
165*14b24e2bSVaishali Kulkarni /* Pstorm iSCSI TX stats */
166*14b24e2bSVaishali Kulkarni #define PSTORM_ISCSI_TX_STATS_OFFSET(pf_id)                         (IRO[42].base + ((pf_id) * IRO[42].m1))
167*14b24e2bSVaishali Kulkarni #define PSTORM_ISCSI_TX_STATS_SIZE                                  (IRO[42].size)
168*14b24e2bSVaishali Kulkarni /* Tstorm FCoE RX stats */
169*14b24e2bSVaishali Kulkarni #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id)                          (IRO[43].base + ((pf_id) * IRO[43].m1))
170*14b24e2bSVaishali Kulkarni #define TSTORM_FCOE_RX_STATS_SIZE                                   (IRO[43].size)
171*14b24e2bSVaishali Kulkarni /* Pstorm FCoE TX stats */
172*14b24e2bSVaishali Kulkarni #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id)                          (IRO[44].base + ((pf_id) * IRO[44].m1))
173*14b24e2bSVaishali Kulkarni #define PSTORM_FCOE_TX_STATS_SIZE                                   (IRO[44].size)
174*14b24e2bSVaishali Kulkarni /* Pstorm RDMA queue statistics */
175*14b24e2bSVaishali Kulkarni #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id)         (IRO[45].base + ((rdma_stat_counter_id) * IRO[45].m1))
176*14b24e2bSVaishali Kulkarni #define PSTORM_RDMA_QUEUE_STAT_SIZE                                 (IRO[45].size)
177*14b24e2bSVaishali Kulkarni /* Tstorm RDMA queue statistics */
178*14b24e2bSVaishali Kulkarni #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id)         (IRO[46].base + ((rdma_stat_counter_id) * IRO[46].m1))
179*14b24e2bSVaishali Kulkarni #define TSTORM_RDMA_QUEUE_STAT_SIZE                                 (IRO[46].size)
180*14b24e2bSVaishali Kulkarni /* Xstorm iWARP rxmit stats */
181*14b24e2bSVaishali Kulkarni #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id)                      (IRO[47].base + ((pf_id) * IRO[47].m1))
182*14b24e2bSVaishali Kulkarni #define XSTORM_IWARP_RXMIT_STATS_SIZE                               (IRO[47].size)
183*14b24e2bSVaishali Kulkarni /* Tstorm RoCE Event Statistics */
184*14b24e2bSVaishali Kulkarni #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id)                  (IRO[48].base + ((roce_pf_id) * IRO[48].m1))
185*14b24e2bSVaishali Kulkarni #define TSTORM_ROCE_EVENTS_STAT_SIZE                                (IRO[48].size)
186*14b24e2bSVaishali Kulkarni 
187*14b24e2bSVaishali Kulkarni #endif /* __IRO_H__ */
188