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