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