1 /* QLogic qed NIC Driver 2 * Copyright (c) 2015-2017 QLogic Corporation 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: 9 * 10 * Redistribution and use in source and binary forms, with or 11 * without modification, are permitted provided that the following 12 * conditions are met: 13 * 14 * - Redistributions of source code must retain the above 15 * copyright notice, this list of conditions and the following 16 * disclaimer. 17 * 18 * - Redistributions in binary form must reproduce the above 19 * copyright notice, this list of conditions and the following 20 * disclaimer in the documentation and /or other materials 21 * provided with the distribution. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 */ 32 33 #ifndef _QED_HSI_H 34 #define _QED_HSI_H 35 36 #include <linux/types.h> 37 #include <linux/io.h> 38 #include <linux/bitops.h> 39 #include <linux/delay.h> 40 #include <linux/kernel.h> 41 #include <linux/list.h> 42 #include <linux/slab.h> 43 #include <linux/qed/common_hsi.h> 44 #include <linux/qed/storage_common.h> 45 #include <linux/qed/tcp_common.h> 46 #include <linux/qed/fcoe_common.h> 47 #include <linux/qed/eth_common.h> 48 #include <linux/qed/iscsi_common.h> 49 #include <linux/qed/iwarp_common.h> 50 #include <linux/qed/rdma_common.h> 51 #include <linux/qed/roce_common.h> 52 #include <linux/qed/qed_fcoe_if.h> 53 54 struct qed_hwfn; 55 struct qed_ptt; 56 57 /* Opcodes for the event ring */ 58 enum common_event_opcode { 59 COMMON_EVENT_PF_START, 60 COMMON_EVENT_PF_STOP, 61 COMMON_EVENT_VF_START, 62 COMMON_EVENT_VF_STOP, 63 COMMON_EVENT_VF_PF_CHANNEL, 64 COMMON_EVENT_VF_FLR, 65 COMMON_EVENT_PF_UPDATE, 66 COMMON_EVENT_MALICIOUS_VF, 67 COMMON_EVENT_RL_UPDATE, 68 COMMON_EVENT_EMPTY, 69 MAX_COMMON_EVENT_OPCODE 70 }; 71 72 /* Common Ramrod Command IDs */ 73 enum common_ramrod_cmd_id { 74 COMMON_RAMROD_UNUSED, 75 COMMON_RAMROD_PF_START, 76 COMMON_RAMROD_PF_STOP, 77 COMMON_RAMROD_VF_START, 78 COMMON_RAMROD_VF_STOP, 79 COMMON_RAMROD_PF_UPDATE, 80 COMMON_RAMROD_RL_UPDATE, 81 COMMON_RAMROD_EMPTY, 82 MAX_COMMON_RAMROD_CMD_ID 83 }; 84 85 /* How ll2 should deal with packet upon errors */ 86 enum core_error_handle { 87 LL2_DROP_PACKET, 88 LL2_DO_NOTHING, 89 LL2_ASSERT, 90 MAX_CORE_ERROR_HANDLE 91 }; 92 93 /* Opcodes for the event ring */ 94 enum core_event_opcode { 95 CORE_EVENT_TX_QUEUE_START, 96 CORE_EVENT_TX_QUEUE_STOP, 97 CORE_EVENT_RX_QUEUE_START, 98 CORE_EVENT_RX_QUEUE_STOP, 99 CORE_EVENT_RX_QUEUE_FLUSH, 100 CORE_EVENT_TX_QUEUE_UPDATE, 101 CORE_EVENT_QUEUE_STATS_QUERY, 102 MAX_CORE_EVENT_OPCODE 103 }; 104 105 /* The L4 pseudo checksum mode for Core */ 106 enum core_l4_pseudo_checksum_mode { 107 CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH, 108 CORE_L4_PSEUDO_CSUM_ZERO_LENGTH, 109 MAX_CORE_L4_PSEUDO_CHECKSUM_MODE 110 }; 111 112 /* Light-L2 RX Producers in Tstorm RAM */ 113 struct core_ll2_port_stats { 114 struct regpair gsi_invalid_hdr; 115 struct regpair gsi_invalid_pkt_length; 116 struct regpair gsi_unsupported_pkt_typ; 117 struct regpair gsi_crcchksm_error; 118 }; 119 120 /* LL2 TX Per Queue Stats */ 121 struct core_ll2_pstorm_per_queue_stat { 122 struct regpair sent_ucast_bytes; 123 struct regpair sent_mcast_bytes; 124 struct regpair sent_bcast_bytes; 125 struct regpair sent_ucast_pkts; 126 struct regpair sent_mcast_pkts; 127 struct regpair sent_bcast_pkts; 128 struct regpair error_drop_pkts; 129 }; 130 131 /* Light-L2 RX Producers in Tstorm RAM */ 132 struct core_ll2_rx_prod { 133 __le16 bd_prod; 134 __le16 cqe_prod; 135 }; 136 137 struct core_ll2_tstorm_per_queue_stat { 138 struct regpair packet_too_big_discard; 139 struct regpair no_buff_discard; 140 }; 141 142 struct core_ll2_ustorm_per_queue_stat { 143 struct regpair rcv_ucast_bytes; 144 struct regpair rcv_mcast_bytes; 145 struct regpair rcv_bcast_bytes; 146 struct regpair rcv_ucast_pkts; 147 struct regpair rcv_mcast_pkts; 148 struct regpair rcv_bcast_pkts; 149 }; 150 151 /* Structure for doorbell data, in PWM mode, for RX producers update. */ 152 struct core_pwm_prod_update_data { 153 __le16 icid; /* internal CID */ 154 u8 reserved0; 155 u8 params; 156 #define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_MASK 0x3 157 #define CORE_PWM_PROD_UPDATE_DATA_AGG_CMD_SHIFT 0 158 #define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_MASK 0x3F /* Set 0 */ 159 #define CORE_PWM_PROD_UPDATE_DATA_RESERVED1_SHIFT 2 160 struct core_ll2_rx_prod prod; /* Producers */ 161 }; 162 163 /* Core Ramrod Command IDs (light L2) */ 164 enum core_ramrod_cmd_id { 165 CORE_RAMROD_UNUSED, 166 CORE_RAMROD_RX_QUEUE_START, 167 CORE_RAMROD_TX_QUEUE_START, 168 CORE_RAMROD_RX_QUEUE_STOP, 169 CORE_RAMROD_TX_QUEUE_STOP, 170 CORE_RAMROD_RX_QUEUE_FLUSH, 171 CORE_RAMROD_TX_QUEUE_UPDATE, 172 CORE_RAMROD_QUEUE_STATS_QUERY, 173 MAX_CORE_RAMROD_CMD_ID 174 }; 175 176 /* Core RX CQE Type for Light L2 */ 177 enum core_roce_flavor_type { 178 CORE_ROCE, 179 CORE_RROCE, 180 MAX_CORE_ROCE_FLAVOR_TYPE 181 }; 182 183 /* Specifies how ll2 should deal with packets errors: packet_too_big and 184 * no_buff. 185 */ 186 struct core_rx_action_on_error { 187 u8 error_type; 188 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK 0x3 189 #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT 0 190 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK 0x3 191 #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT 2 192 #define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK 0xF 193 #define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT 4 194 }; 195 196 /* Core RX BD for Light L2 */ 197 struct core_rx_bd { 198 struct regpair addr; 199 __le16 reserved[4]; 200 }; 201 202 /* Core RX CM offload BD for Light L2 */ 203 struct core_rx_bd_with_buff_len { 204 struct regpair addr; 205 __le16 buff_length; 206 __le16 reserved[3]; 207 }; 208 209 /* Core RX CM offload BD for Light L2 */ 210 union core_rx_bd_union { 211 struct core_rx_bd rx_bd; 212 struct core_rx_bd_with_buff_len rx_bd_with_len; 213 }; 214 215 /* Opaque Data for Light L2 RX CQE */ 216 struct core_rx_cqe_opaque_data { 217 __le32 data[2]; 218 }; 219 220 /* Core RX CQE Type for Light L2 */ 221 enum core_rx_cqe_type { 222 CORE_RX_CQE_ILLEGAL_TYPE, 223 CORE_RX_CQE_TYPE_REGULAR, 224 CORE_RX_CQE_TYPE_GSI_OFFLOAD, 225 CORE_RX_CQE_TYPE_SLOW_PATH, 226 MAX_CORE_RX_CQE_TYPE 227 }; 228 229 /* Core RX CQE for Light L2 */ 230 struct core_rx_fast_path_cqe { 231 u8 type; 232 u8 placement_offset; 233 struct parsing_and_err_flags parse_flags; 234 __le16 packet_length; 235 __le16 vlan; 236 struct core_rx_cqe_opaque_data opaque_data; 237 struct parsing_err_flags err_flags; 238 __le16 reserved0; 239 __le32 reserved1[3]; 240 }; 241 242 /* Core Rx CM offload CQE */ 243 struct core_rx_gsi_offload_cqe { 244 u8 type; 245 u8 data_length_error; 246 struct parsing_and_err_flags parse_flags; 247 __le16 data_length; 248 __le16 vlan; 249 __le32 src_mac_addrhi; 250 __le16 src_mac_addrlo; 251 __le16 qp_id; 252 __le32 src_qp; 253 struct core_rx_cqe_opaque_data opaque_data; 254 __le32 reserved; 255 }; 256 257 /* Core RX CQE for Light L2 */ 258 struct core_rx_slow_path_cqe { 259 u8 type; 260 u8 ramrod_cmd_id; 261 __le16 echo; 262 struct core_rx_cqe_opaque_data opaque_data; 263 __le32 reserved1[5]; 264 }; 265 266 /* Core RX CM offload BD for Light L2 */ 267 union core_rx_cqe_union { 268 struct core_rx_fast_path_cqe rx_cqe_fp; 269 struct core_rx_gsi_offload_cqe rx_cqe_gsi; 270 struct core_rx_slow_path_cqe rx_cqe_sp; 271 }; 272 273 /* Ramrod data for rx queue start ramrod */ 274 struct core_rx_start_ramrod_data { 275 struct regpair bd_base; 276 struct regpair cqe_pbl_addr; 277 __le16 mtu; 278 __le16 sb_id; 279 u8 sb_index; 280 u8 complete_cqe_flg; 281 u8 complete_event_flg; 282 u8 drop_ttl0_flg; 283 __le16 num_of_pbl_pages; 284 u8 inner_vlan_stripping_en; 285 u8 report_outer_vlan; 286 u8 queue_id; 287 u8 main_func_queue; 288 u8 mf_si_bcast_accept_all; 289 u8 mf_si_mcast_accept_all; 290 struct core_rx_action_on_error action_on_error; 291 u8 gsi_offload_flag; 292 u8 vport_id_valid; 293 u8 vport_id; 294 u8 zero_prod_flg; 295 u8 wipe_inner_vlan_pri_en; 296 u8 reserved[2]; 297 }; 298 299 /* Ramrod data for rx queue stop ramrod */ 300 struct core_rx_stop_ramrod_data { 301 u8 complete_cqe_flg; 302 u8 complete_event_flg; 303 u8 queue_id; 304 u8 reserved1; 305 __le16 reserved2[2]; 306 }; 307 308 /* Flags for Core TX BD */ 309 struct core_tx_bd_data { 310 __le16 as_bitfield; 311 #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_MASK 0x1 312 #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_SHIFT 0 313 #define CORE_TX_BD_DATA_VLAN_INSERTION_MASK 0x1 314 #define CORE_TX_BD_DATA_VLAN_INSERTION_SHIFT 1 315 #define CORE_TX_BD_DATA_START_BD_MASK 0x1 316 #define CORE_TX_BD_DATA_START_BD_SHIFT 2 317 #define CORE_TX_BD_DATA_IP_CSUM_MASK 0x1 318 #define CORE_TX_BD_DATA_IP_CSUM_SHIFT 3 319 #define CORE_TX_BD_DATA_L4_CSUM_MASK 0x1 320 #define CORE_TX_BD_DATA_L4_CSUM_SHIFT 4 321 #define CORE_TX_BD_DATA_IPV6_EXT_MASK 0x1 322 #define CORE_TX_BD_DATA_IPV6_EXT_SHIFT 5 323 #define CORE_TX_BD_DATA_L4_PROTOCOL_MASK 0x1 324 #define CORE_TX_BD_DATA_L4_PROTOCOL_SHIFT 6 325 #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_MASK 0x1 326 #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_SHIFT 7 327 #define CORE_TX_BD_DATA_NBDS_MASK 0xF 328 #define CORE_TX_BD_DATA_NBDS_SHIFT 8 329 #define CORE_TX_BD_DATA_ROCE_FLAV_MASK 0x1 330 #define CORE_TX_BD_DATA_ROCE_FLAV_SHIFT 12 331 #define CORE_TX_BD_DATA_IP_LEN_MASK 0x1 332 #define CORE_TX_BD_DATA_IP_LEN_SHIFT 13 333 #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_MASK 0x1 334 #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_SHIFT 14 335 #define CORE_TX_BD_DATA_RESERVED0_MASK 0x1 336 #define CORE_TX_BD_DATA_RESERVED0_SHIFT 15 337 }; 338 339 /* Core TX BD for Light L2 */ 340 struct core_tx_bd { 341 struct regpair addr; 342 __le16 nbytes; 343 __le16 nw_vlan_or_lb_echo; 344 struct core_tx_bd_data bd_data; 345 __le16 bitfield1; 346 #define CORE_TX_BD_L4_HDR_OFFSET_W_MASK 0x3FFF 347 #define CORE_TX_BD_L4_HDR_OFFSET_W_SHIFT 0 348 #define CORE_TX_BD_TX_DST_MASK 0x3 349 #define CORE_TX_BD_TX_DST_SHIFT 14 350 }; 351 352 /* Light L2 TX Destination */ 353 enum core_tx_dest { 354 CORE_TX_DEST_NW, 355 CORE_TX_DEST_LB, 356 CORE_TX_DEST_RESERVED, 357 CORE_TX_DEST_DROP, 358 MAX_CORE_TX_DEST 359 }; 360 361 /* Ramrod data for tx queue start ramrod */ 362 struct core_tx_start_ramrod_data { 363 struct regpair pbl_base_addr; 364 __le16 mtu; 365 __le16 sb_id; 366 u8 sb_index; 367 u8 stats_en; 368 u8 stats_id; 369 u8 conn_type; 370 __le16 pbl_size; 371 __le16 qm_pq_id; 372 u8 gsi_offload_flag; 373 u8 ctx_stats_en; 374 u8 vport_id_valid; 375 u8 vport_id; 376 u8 enforce_security_flag; 377 u8 reserved[7]; 378 }; 379 380 /* Ramrod data for tx queue stop ramrod */ 381 struct core_tx_stop_ramrod_data { 382 __le32 reserved0[2]; 383 }; 384 385 /* Ramrod data for tx queue update ramrod */ 386 struct core_tx_update_ramrod_data { 387 u8 update_qm_pq_id_flg; 388 u8 reserved0; 389 __le16 qm_pq_id; 390 __le32 reserved1[1]; 391 }; 392 393 /* Enum flag for what type of dcb data to update */ 394 enum dcb_dscp_update_mode { 395 DONT_UPDATE_DCB_DSCP, 396 UPDATE_DCB, 397 UPDATE_DSCP, 398 UPDATE_DCB_DSCP, 399 MAX_DCB_DSCP_UPDATE_MODE 400 }; 401 402 /* The core storm context for the Ystorm */ 403 struct ystorm_core_conn_st_ctx { 404 __le32 reserved[4]; 405 }; 406 407 /* The core storm context for the Pstorm */ 408 struct pstorm_core_conn_st_ctx { 409 __le32 reserved[20]; 410 }; 411 412 /* Core Slowpath Connection storm context of Xstorm */ 413 struct xstorm_core_conn_st_ctx { 414 __le32 spq_base_lo; 415 __le32 spq_base_hi; 416 struct regpair consolid_base_addr; 417 __le16 spq_cons; 418 __le16 consolid_cons; 419 __le32 reserved0[55]; 420 }; 421 422 struct e4_xstorm_core_conn_ag_ctx { 423 u8 reserved0; 424 u8 state; 425 u8 flags0; 426 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 427 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 428 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK 0x1 429 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT 1 430 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK 0x1 431 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT 2 432 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 433 #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 434 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK 0x1 435 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT 4 436 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK 0x1 437 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT 5 438 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK 0x1 439 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT 6 440 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK 0x1 441 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT 7 442 u8 flags1; 443 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK 0x1 444 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT 0 445 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK 0x1 446 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT 1 447 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK 0x1 448 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT 2 449 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK 0x1 450 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT 3 451 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK 0x1 452 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT 4 453 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK 0x1 454 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT 5 455 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1 456 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6 457 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1 458 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7 459 u8 flags2; 460 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 461 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 0 462 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 463 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 2 464 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 465 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 4 466 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3 467 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 6 468 u8 flags3; 469 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 470 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 0 471 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 472 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 2 473 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 474 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 4 475 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3 476 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 6 477 u8 flags4; 478 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3 479 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 0 480 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3 481 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 2 482 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3 483 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 4 484 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_MASK 0x3 485 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT 6 486 u8 flags5; 487 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_MASK 0x3 488 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT 0 489 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_MASK 0x3 490 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT 2 491 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_MASK 0x3 492 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT 4 493 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_MASK 0x3 494 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT 6 495 u8 flags6; 496 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK 0x3 497 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT 0 498 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_MASK 0x3 499 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT 2 500 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK 0x3 501 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT 4 502 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK 0x3 503 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT 6 504 u8 flags7; 505 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 506 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 507 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK 0x3 508 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT 2 509 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK 0x3 510 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT 4 511 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 512 #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 6 513 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 514 #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 7 515 u8 flags8; 516 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 517 #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 0 518 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 519 #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 1 520 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 521 #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 2 522 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 523 #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 3 524 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 525 #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 4 526 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1 527 #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 5 528 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1 529 #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 6 530 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1 531 #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 7 532 u8 flags9; 533 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1 534 #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 0 535 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK 0x1 536 #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT 1 537 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK 0x1 538 #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT 2 539 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK 0x1 540 #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT 3 541 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK 0x1 542 #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT 4 543 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK 0x1 544 #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT 5 545 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK 0x1 546 #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6 547 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK 0x1 548 #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT 7 549 u8 flags10; 550 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 551 #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT 0 552 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1 553 #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1 554 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 555 #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2 556 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK 0x1 557 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT 3 558 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 559 #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 560 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK 0x1 561 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT 5 562 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK 0x1 563 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT 6 564 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK 0x1 565 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT 7 566 u8 flags11; 567 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK 0x1 568 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT 0 569 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK 0x1 570 #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT 1 571 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1 572 #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2 573 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 574 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 3 575 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 576 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 4 577 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 578 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 5 579 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 580 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 581 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK 0x1 582 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT 7 583 u8 flags12; 584 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK 0x1 585 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT 0 586 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK 0x1 587 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT 1 588 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 589 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 590 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 591 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 592 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK 0x1 593 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT 4 594 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK 0x1 595 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT 5 596 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK 0x1 597 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT 6 598 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK 0x1 599 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT 7 600 u8 flags13; 601 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK 0x1 602 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT 0 603 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK 0x1 604 #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT 1 605 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 606 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 607 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 608 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 609 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 610 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 611 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 612 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 613 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 614 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 615 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 616 #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 617 u8 flags14; 618 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK 0x1 619 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT 0 620 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK 0x1 621 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT 1 622 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK 0x1 623 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT 2 624 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK 0x1 625 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT 3 626 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK 0x1 627 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT 4 628 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK 0x1 629 #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT 5 630 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_MASK 0x3 631 #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT 6 632 u8 byte2; 633 __le16 physical_q0; 634 __le16 consolid_prod; 635 __le16 reserved16; 636 __le16 tx_bd_cons; 637 __le16 tx_bd_or_spq_prod; 638 __le16 updated_qm_pq_id; 639 __le16 conn_dpi; 640 u8 byte3; 641 u8 byte4; 642 u8 byte5; 643 u8 byte6; 644 __le32 reg0; 645 __le32 reg1; 646 __le32 reg2; 647 __le32 reg3; 648 __le32 reg4; 649 __le32 reg5; 650 __le32 reg6; 651 __le16 word7; 652 __le16 word8; 653 __le16 word9; 654 __le16 word10; 655 __le32 reg7; 656 __le32 reg8; 657 __le32 reg9; 658 u8 byte7; 659 u8 byte8; 660 u8 byte9; 661 u8 byte10; 662 u8 byte11; 663 u8 byte12; 664 u8 byte13; 665 u8 byte14; 666 u8 byte15; 667 u8 e5_reserved; 668 __le16 word11; 669 __le32 reg10; 670 __le32 reg11; 671 __le32 reg12; 672 __le32 reg13; 673 __le32 reg14; 674 __le32 reg15; 675 __le32 reg16; 676 __le32 reg17; 677 __le32 reg18; 678 __le32 reg19; 679 __le16 word12; 680 __le16 word13; 681 __le16 word14; 682 __le16 word15; 683 }; 684 685 struct e4_tstorm_core_conn_ag_ctx { 686 u8 byte0; 687 u8 byte1; 688 u8 flags0; 689 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 690 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0 691 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 692 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1 693 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK 0x1 694 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT 2 695 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK 0x1 696 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT 3 697 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK 0x1 698 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT 4 699 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK 0x1 700 #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT 5 701 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 702 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 6 703 u8 flags1; 704 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 705 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 0 706 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 707 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 2 708 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3 709 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 4 710 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 711 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 6 712 u8 flags2; 713 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 714 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 0 715 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 716 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 2 717 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3 718 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 4 719 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3 720 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 6 721 u8 flags3; 722 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3 723 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 0 724 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3 725 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 2 726 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 727 #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 4 728 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 729 #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 5 730 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 731 #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 6 732 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 733 #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 7 734 u8 flags4; 735 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 736 #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 0 737 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 738 #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 1 739 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 740 #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 2 741 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1 742 #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 3 743 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1 744 #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 4 745 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1 746 #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 5 747 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1 748 #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 6 749 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 750 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7 751 u8 flags5; 752 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 753 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0 754 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 755 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1 756 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 757 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2 758 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 759 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3 760 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 761 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4 762 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 763 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5 764 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 765 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6 766 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1 767 #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7 768 __le32 reg0; 769 __le32 reg1; 770 __le32 reg2; 771 __le32 reg3; 772 __le32 reg4; 773 __le32 reg5; 774 __le32 reg6; 775 __le32 reg7; 776 __le32 reg8; 777 u8 byte2; 778 u8 byte3; 779 __le16 word0; 780 u8 byte4; 781 u8 byte5; 782 __le16 word1; 783 __le16 word2; 784 __le16 word3; 785 __le32 ll2_rx_prod; 786 __le32 reg10; 787 }; 788 789 struct e4_ustorm_core_conn_ag_ctx { 790 u8 reserved; 791 u8 byte1; 792 u8 flags0; 793 #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 794 #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0 795 #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 796 #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1 797 #define E4_USTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 798 #define E4_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2 799 #define E4_USTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 800 #define E4_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4 801 #define E4_USTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 802 #define E4_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6 803 u8 flags1; 804 #define E4_USTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3 805 #define E4_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT 0 806 #define E4_USTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 807 #define E4_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT 2 808 #define E4_USTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 809 #define E4_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT 4 810 #define E4_USTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 811 #define E4_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT 6 812 u8 flags2; 813 #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 814 #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0 815 #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 816 #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1 817 #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 818 #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2 819 #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 820 #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 3 821 #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 822 #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 4 823 #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 824 #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 5 825 #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 826 #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 6 827 #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 828 #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7 829 u8 flags3; 830 #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 831 #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0 832 #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 833 #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1 834 #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 835 #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2 836 #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 837 #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3 838 #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 839 #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4 840 #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 841 #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5 842 #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 843 #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6 844 #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1 845 #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7 846 u8 byte2; 847 u8 byte3; 848 __le16 word0; 849 __le16 word1; 850 __le32 rx_producers; 851 __le32 reg1; 852 __le32 reg2; 853 __le32 reg3; 854 __le16 word2; 855 __le16 word3; 856 }; 857 858 /* The core storm context for the Mstorm */ 859 struct mstorm_core_conn_st_ctx { 860 __le32 reserved[40]; 861 }; 862 863 /* The core storm context for the Ustorm */ 864 struct ustorm_core_conn_st_ctx { 865 __le32 reserved[20]; 866 }; 867 868 /* The core storm context for the Tstorm */ 869 struct tstorm_core_conn_st_ctx { 870 __le32 reserved[4]; 871 }; 872 873 /* core connection context */ 874 struct e4_core_conn_context { 875 struct ystorm_core_conn_st_ctx ystorm_st_context; 876 struct regpair ystorm_st_padding[2]; 877 struct pstorm_core_conn_st_ctx pstorm_st_context; 878 struct regpair pstorm_st_padding[2]; 879 struct xstorm_core_conn_st_ctx xstorm_st_context; 880 struct e4_xstorm_core_conn_ag_ctx xstorm_ag_context; 881 struct e4_tstorm_core_conn_ag_ctx tstorm_ag_context; 882 struct e4_ustorm_core_conn_ag_ctx ustorm_ag_context; 883 struct mstorm_core_conn_st_ctx mstorm_st_context; 884 struct ustorm_core_conn_st_ctx ustorm_st_context; 885 struct regpair ustorm_st_padding[2]; 886 struct tstorm_core_conn_st_ctx tstorm_st_context; 887 struct regpair tstorm_st_padding[2]; 888 }; 889 890 struct eth_mstorm_per_pf_stat { 891 struct regpair gre_discard_pkts; 892 struct regpair vxlan_discard_pkts; 893 struct regpair geneve_discard_pkts; 894 struct regpair lb_discard_pkts; 895 }; 896 897 struct eth_mstorm_per_queue_stat { 898 struct regpair ttl0_discard; 899 struct regpair packet_too_big_discard; 900 struct regpair no_buff_discard; 901 struct regpair not_active_discard; 902 struct regpair tpa_coalesced_pkts; 903 struct regpair tpa_coalesced_events; 904 struct regpair tpa_aborts_num; 905 struct regpair tpa_coalesced_bytes; 906 }; 907 908 /* Ethernet TX Per PF */ 909 struct eth_pstorm_per_pf_stat { 910 struct regpair sent_lb_ucast_bytes; 911 struct regpair sent_lb_mcast_bytes; 912 struct regpair sent_lb_bcast_bytes; 913 struct regpair sent_lb_ucast_pkts; 914 struct regpair sent_lb_mcast_pkts; 915 struct regpair sent_lb_bcast_pkts; 916 struct regpair sent_gre_bytes; 917 struct regpair sent_vxlan_bytes; 918 struct regpair sent_geneve_bytes; 919 struct regpair sent_mpls_bytes; 920 struct regpair sent_gre_mpls_bytes; 921 struct regpair sent_udp_mpls_bytes; 922 struct regpair sent_gre_pkts; 923 struct regpair sent_vxlan_pkts; 924 struct regpair sent_geneve_pkts; 925 struct regpair sent_mpls_pkts; 926 struct regpair sent_gre_mpls_pkts; 927 struct regpair sent_udp_mpls_pkts; 928 struct regpair gre_drop_pkts; 929 struct regpair vxlan_drop_pkts; 930 struct regpair geneve_drop_pkts; 931 struct regpair mpls_drop_pkts; 932 struct regpair gre_mpls_drop_pkts; 933 struct regpair udp_mpls_drop_pkts; 934 }; 935 936 /* Ethernet TX Per Queue Stats */ 937 struct eth_pstorm_per_queue_stat { 938 struct regpair sent_ucast_bytes; 939 struct regpair sent_mcast_bytes; 940 struct regpair sent_bcast_bytes; 941 struct regpair sent_ucast_pkts; 942 struct regpair sent_mcast_pkts; 943 struct regpair sent_bcast_pkts; 944 struct regpair error_drop_pkts; 945 }; 946 947 /* ETH Rx producers data */ 948 struct eth_rx_rate_limit { 949 __le16 mult; 950 __le16 cnst; 951 u8 add_sub_cnst; 952 u8 reserved0; 953 __le16 reserved1; 954 }; 955 956 /* Update RSS indirection table entry command */ 957 struct eth_tstorm_rss_update_data { 958 u8 valid; 959 u8 vport_id; 960 u8 ind_table_index; 961 u8 reserved; 962 __le16 ind_table_value; 963 __le16 reserved1; 964 }; 965 966 struct eth_ustorm_per_pf_stat { 967 struct regpair rcv_lb_ucast_bytes; 968 struct regpair rcv_lb_mcast_bytes; 969 struct regpair rcv_lb_bcast_bytes; 970 struct regpair rcv_lb_ucast_pkts; 971 struct regpair rcv_lb_mcast_pkts; 972 struct regpair rcv_lb_bcast_pkts; 973 struct regpair rcv_gre_bytes; 974 struct regpair rcv_vxlan_bytes; 975 struct regpair rcv_geneve_bytes; 976 struct regpair rcv_gre_pkts; 977 struct regpair rcv_vxlan_pkts; 978 struct regpair rcv_geneve_pkts; 979 }; 980 981 struct eth_ustorm_per_queue_stat { 982 struct regpair rcv_ucast_bytes; 983 struct regpair rcv_mcast_bytes; 984 struct regpair rcv_bcast_bytes; 985 struct regpair rcv_ucast_pkts; 986 struct regpair rcv_mcast_pkts; 987 struct regpair rcv_bcast_pkts; 988 }; 989 990 /* Event Ring VF-PF Channel data */ 991 struct vf_pf_channel_eqe_data { 992 struct regpair msg_addr; 993 }; 994 995 /* Event Ring malicious VF data */ 996 struct malicious_vf_eqe_data { 997 u8 vf_id; 998 u8 err_id; 999 __le16 reserved[3]; 1000 }; 1001 1002 /* Event Ring initial cleanup data */ 1003 struct initial_cleanup_eqe_data { 1004 u8 vf_id; 1005 u8 reserved[7]; 1006 }; 1007 1008 /* Event Data Union */ 1009 union event_ring_data { 1010 u8 bytes[8]; 1011 struct vf_pf_channel_eqe_data vf_pf_channel; 1012 struct iscsi_eqe_data iscsi_info; 1013 struct iscsi_connect_done_results iscsi_conn_done_info; 1014 union rdma_eqe_data rdma_data; 1015 struct malicious_vf_eqe_data malicious_vf; 1016 struct initial_cleanup_eqe_data vf_init_cleanup; 1017 }; 1018 1019 /* Event Ring Entry */ 1020 struct event_ring_entry { 1021 u8 protocol_id; 1022 u8 opcode; 1023 u8 reserved0; 1024 u8 vf_id; 1025 __le16 echo; 1026 u8 fw_return_code; 1027 u8 flags; 1028 #define EVENT_RING_ENTRY_ASYNC_MASK 0x1 1029 #define EVENT_RING_ENTRY_ASYNC_SHIFT 0 1030 #define EVENT_RING_ENTRY_RESERVED1_MASK 0x7F 1031 #define EVENT_RING_ENTRY_RESERVED1_SHIFT 1 1032 union event_ring_data data; 1033 }; 1034 1035 /* Event Ring Next Page Address */ 1036 struct event_ring_next_addr { 1037 struct regpair addr; 1038 __le32 reserved[2]; 1039 }; 1040 1041 /* Event Ring Element */ 1042 union event_ring_element { 1043 struct event_ring_entry entry; 1044 struct event_ring_next_addr next_addr; 1045 }; 1046 1047 /* Ports mode */ 1048 enum fw_flow_ctrl_mode { 1049 flow_ctrl_pause, 1050 flow_ctrl_pfc, 1051 MAX_FW_FLOW_CTRL_MODE 1052 }; 1053 1054 /* GFT profile type */ 1055 enum gft_profile_type { 1056 GFT_PROFILE_TYPE_4_TUPLE, 1057 GFT_PROFILE_TYPE_L4_DST_PORT, 1058 GFT_PROFILE_TYPE_IP_DST_ADDR, 1059 GFT_PROFILE_TYPE_IP_SRC_ADDR, 1060 GFT_PROFILE_TYPE_TUNNEL_TYPE, 1061 MAX_GFT_PROFILE_TYPE 1062 }; 1063 1064 /* Major and Minor hsi Versions */ 1065 struct hsi_fp_ver_struct { 1066 u8 minor_ver_arr[2]; 1067 u8 major_ver_arr[2]; 1068 }; 1069 1070 enum iwarp_ll2_tx_queues { 1071 IWARP_LL2_IN_ORDER_TX_QUEUE = 1, 1072 IWARP_LL2_ALIGNED_TX_QUEUE, 1073 IWARP_LL2_ALIGNED_RIGHT_TRIMMED_TX_QUEUE, 1074 IWARP_LL2_ERROR, 1075 MAX_IWARP_LL2_TX_QUEUES 1076 }; 1077 1078 /* Malicious VF error ID */ 1079 enum malicious_vf_error_id { 1080 MALICIOUS_VF_NO_ERROR, 1081 VF_PF_CHANNEL_NOT_READY, 1082 VF_ZONE_MSG_NOT_VALID, 1083 VF_ZONE_FUNC_NOT_ENABLED, 1084 ETH_PACKET_TOO_SMALL, 1085 ETH_ILLEGAL_VLAN_MODE, 1086 ETH_MTU_VIOLATION, 1087 ETH_ILLEGAL_INBAND_TAGS, 1088 ETH_VLAN_INSERT_AND_INBAND_VLAN, 1089 ETH_ILLEGAL_NBDS, 1090 ETH_FIRST_BD_WO_SOP, 1091 ETH_INSUFFICIENT_BDS, 1092 ETH_ILLEGAL_LSO_HDR_NBDS, 1093 ETH_ILLEGAL_LSO_MSS, 1094 ETH_ZERO_SIZE_BD, 1095 ETH_ILLEGAL_LSO_HDR_LEN, 1096 ETH_INSUFFICIENT_PAYLOAD, 1097 ETH_EDPM_OUT_OF_SYNC, 1098 ETH_TUNN_IPV6_EXT_NBD_ERR, 1099 ETH_CONTROL_PACKET_VIOLATION, 1100 ETH_ANTI_SPOOFING_ERR, 1101 ETH_PACKET_SIZE_TOO_LARGE, 1102 CORE_ILLEGAL_VLAN_MODE, 1103 CORE_ILLEGAL_NBDS, 1104 CORE_FIRST_BD_WO_SOP, 1105 CORE_INSUFFICIENT_BDS, 1106 CORE_PACKET_TOO_SMALL, 1107 CORE_ILLEGAL_INBAND_TAGS, 1108 CORE_VLAN_INSERT_AND_INBAND_VLAN, 1109 CORE_MTU_VIOLATION, 1110 CORE_CONTROL_PACKET_VIOLATION, 1111 CORE_ANTI_SPOOFING_ERR, 1112 CORE_PACKET_SIZE_TOO_LARGE, 1113 CORE_ILLEGAL_BD_FLAGS, 1114 CORE_GSI_PACKET_VIOLATION, 1115 MAX_MALICIOUS_VF_ERROR_ID, 1116 }; 1117 1118 /* Mstorm non-triggering VF zone */ 1119 struct mstorm_non_trigger_vf_zone { 1120 struct eth_mstorm_per_queue_stat eth_queue_stat; 1121 struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD]; 1122 }; 1123 1124 /* Mstorm VF zone */ 1125 struct mstorm_vf_zone { 1126 struct mstorm_non_trigger_vf_zone non_trigger; 1127 }; 1128 1129 /* vlan header including TPID and TCI fields */ 1130 struct vlan_header { 1131 __le16 tpid; 1132 __le16 tci; 1133 }; 1134 1135 /* outer tag configurations */ 1136 struct outer_tag_config_struct { 1137 u8 enable_stag_pri_change; 1138 u8 pri_map_valid; 1139 u8 reserved[2]; 1140 struct vlan_header outer_tag; 1141 u8 inner_to_outer_pri_map[8]; 1142 }; 1143 1144 /* personality per PF */ 1145 enum personality_type { 1146 BAD_PERSONALITY_TYP, 1147 PERSONALITY_ISCSI, 1148 PERSONALITY_FCOE, 1149 PERSONALITY_RDMA_AND_ETH, 1150 PERSONALITY_RDMA, 1151 PERSONALITY_CORE, 1152 PERSONALITY_ETH, 1153 PERSONALITY_RESERVED, 1154 MAX_PERSONALITY_TYPE 1155 }; 1156 1157 /* tunnel configuration */ 1158 struct pf_start_tunnel_config { 1159 u8 set_vxlan_udp_port_flg; 1160 u8 set_geneve_udp_port_flg; 1161 u8 set_no_inner_l2_vxlan_udp_port_flg; 1162 u8 tunnel_clss_vxlan; 1163 u8 tunnel_clss_l2geneve; 1164 u8 tunnel_clss_ipgeneve; 1165 u8 tunnel_clss_l2gre; 1166 u8 tunnel_clss_ipgre; 1167 __le16 vxlan_udp_port; 1168 __le16 geneve_udp_port; 1169 __le16 no_inner_l2_vxlan_udp_port; 1170 __le16 reserved[3]; 1171 }; 1172 1173 /* Ramrod data for PF start ramrod */ 1174 struct pf_start_ramrod_data { 1175 struct regpair event_ring_pbl_addr; 1176 struct regpair consolid_q_pbl_addr; 1177 struct pf_start_tunnel_config tunnel_config; 1178 __le16 event_ring_sb_id; 1179 u8 base_vf_id; 1180 u8 num_vfs; 1181 u8 event_ring_num_pages; 1182 u8 event_ring_sb_index; 1183 u8 path_id; 1184 u8 warning_as_error; 1185 u8 dont_log_ramrods; 1186 u8 personality; 1187 __le16 log_type_mask; 1188 u8 mf_mode; 1189 u8 integ_phase; 1190 u8 allow_npar_tx_switching; 1191 u8 reserved0; 1192 struct hsi_fp_ver_struct hsi_fp_ver; 1193 struct outer_tag_config_struct outer_tag_config; 1194 }; 1195 1196 /* Data for port update ramrod */ 1197 struct protocol_dcb_data { 1198 u8 dcb_enable_flag; 1199 u8 dscp_enable_flag; 1200 u8 dcb_priority; 1201 u8 dcb_tc; 1202 u8 dscp_val; 1203 u8 dcb_dont_add_vlan0; 1204 }; 1205 1206 /* Update tunnel configuration */ 1207 struct pf_update_tunnel_config { 1208 u8 update_rx_pf_clss; 1209 u8 update_rx_def_ucast_clss; 1210 u8 update_rx_def_non_ucast_clss; 1211 u8 set_vxlan_udp_port_flg; 1212 u8 set_geneve_udp_port_flg; 1213 u8 set_no_inner_l2_vxlan_udp_port_flg; 1214 u8 tunnel_clss_vxlan; 1215 u8 tunnel_clss_l2geneve; 1216 u8 tunnel_clss_ipgeneve; 1217 u8 tunnel_clss_l2gre; 1218 u8 tunnel_clss_ipgre; 1219 u8 reserved; 1220 __le16 vxlan_udp_port; 1221 __le16 geneve_udp_port; 1222 __le16 no_inner_l2_vxlan_udp_port; 1223 __le16 reserved1[3]; 1224 }; 1225 1226 /* Data for port update ramrod */ 1227 struct pf_update_ramrod_data { 1228 u8 update_eth_dcb_data_mode; 1229 u8 update_fcoe_dcb_data_mode; 1230 u8 update_iscsi_dcb_data_mode; 1231 u8 update_roce_dcb_data_mode; 1232 u8 update_rroce_dcb_data_mode; 1233 u8 update_iwarp_dcb_data_mode; 1234 u8 update_mf_vlan_flag; 1235 u8 update_enable_stag_pri_change; 1236 struct protocol_dcb_data eth_dcb_data; 1237 struct protocol_dcb_data fcoe_dcb_data; 1238 struct protocol_dcb_data iscsi_dcb_data; 1239 struct protocol_dcb_data roce_dcb_data; 1240 struct protocol_dcb_data rroce_dcb_data; 1241 struct protocol_dcb_data iwarp_dcb_data; 1242 __le16 mf_vlan; 1243 u8 enable_stag_pri_change; 1244 u8 reserved; 1245 struct pf_update_tunnel_config tunnel_config; 1246 }; 1247 1248 /* Ports mode */ 1249 enum ports_mode { 1250 ENGX2_PORTX1, 1251 ENGX2_PORTX2, 1252 ENGX1_PORTX1, 1253 ENGX1_PORTX2, 1254 ENGX1_PORTX4, 1255 MAX_PORTS_MODE 1256 }; 1257 1258 /* use to index in hsi_fp_[major|minor]_ver_arr per protocol */ 1259 enum protocol_version_array_key { 1260 ETH_VER_KEY = 0, 1261 ROCE_VER_KEY, 1262 MAX_PROTOCOL_VERSION_ARRAY_KEY 1263 }; 1264 1265 /* RDMA TX Stats */ 1266 struct rdma_sent_stats { 1267 struct regpair sent_bytes; 1268 struct regpair sent_pkts; 1269 }; 1270 1271 /* Pstorm non-triggering VF zone */ 1272 struct pstorm_non_trigger_vf_zone { 1273 struct eth_pstorm_per_queue_stat eth_queue_stat; 1274 struct rdma_sent_stats rdma_stats; 1275 }; 1276 1277 /* Pstorm VF zone */ 1278 struct pstorm_vf_zone { 1279 struct pstorm_non_trigger_vf_zone non_trigger; 1280 struct regpair reserved[7]; 1281 }; 1282 1283 /* Ramrod Header of SPQE */ 1284 struct ramrod_header { 1285 __le32 cid; 1286 u8 cmd_id; 1287 u8 protocol_id; 1288 __le16 echo; 1289 }; 1290 1291 /* RDMA RX Stats */ 1292 struct rdma_rcv_stats { 1293 struct regpair rcv_bytes; 1294 struct regpair rcv_pkts; 1295 }; 1296 1297 /* Data for update QCN/DCQCN RL ramrod */ 1298 struct rl_update_ramrod_data { 1299 u8 qcn_update_param_flg; 1300 u8 dcqcn_update_param_flg; 1301 u8 rl_init_flg; 1302 u8 rl_start_flg; 1303 u8 rl_stop_flg; 1304 u8 rl_id_first; 1305 u8 rl_id_last; 1306 u8 rl_dc_qcn_flg; 1307 u8 dcqcn_reset_alpha_on_idle; 1308 u8 rl_bc_stage_th; 1309 u8 rl_timer_stage_th; 1310 u8 reserved1; 1311 __le32 rl_bc_rate; 1312 __le16 rl_max_rate; 1313 __le16 rl_r_ai; 1314 __le16 rl_r_hai; 1315 __le16 dcqcn_g; 1316 __le32 dcqcn_k_us; 1317 __le32 dcqcn_timeuot_us; 1318 __le32 qcn_timeuot_us; 1319 __le32 reserved2; 1320 }; 1321 1322 /* Slowpath Element (SPQE) */ 1323 struct slow_path_element { 1324 struct ramrod_header hdr; 1325 struct regpair data_ptr; 1326 }; 1327 1328 /* Tstorm non-triggering VF zone */ 1329 struct tstorm_non_trigger_vf_zone { 1330 struct rdma_rcv_stats rdma_stats; 1331 }; 1332 1333 struct tstorm_per_port_stat { 1334 struct regpair trunc_error_discard; 1335 struct regpair mac_error_discard; 1336 struct regpair mftag_filter_discard; 1337 struct regpair eth_mac_filter_discard; 1338 struct regpair ll2_mac_filter_discard; 1339 struct regpair ll2_conn_disabled_discard; 1340 struct regpair iscsi_irregular_pkt; 1341 struct regpair fcoe_irregular_pkt; 1342 struct regpair roce_irregular_pkt; 1343 struct regpair iwarp_irregular_pkt; 1344 struct regpair eth_irregular_pkt; 1345 struct regpair toe_irregular_pkt; 1346 struct regpair preroce_irregular_pkt; 1347 struct regpair eth_gre_tunn_filter_discard; 1348 struct regpair eth_vxlan_tunn_filter_discard; 1349 struct regpair eth_geneve_tunn_filter_discard; 1350 struct regpair eth_gft_drop_pkt; 1351 }; 1352 1353 /* Tstorm VF zone */ 1354 struct tstorm_vf_zone { 1355 struct tstorm_non_trigger_vf_zone non_trigger; 1356 }; 1357 1358 /* Tunnel classification scheme */ 1359 enum tunnel_clss { 1360 TUNNEL_CLSS_MAC_VLAN = 0, 1361 TUNNEL_CLSS_MAC_VNI, 1362 TUNNEL_CLSS_INNER_MAC_VLAN, 1363 TUNNEL_CLSS_INNER_MAC_VNI, 1364 TUNNEL_CLSS_MAC_VLAN_DUAL_STAGE, 1365 MAX_TUNNEL_CLSS 1366 }; 1367 1368 /* Ustorm non-triggering VF zone */ 1369 struct ustorm_non_trigger_vf_zone { 1370 struct eth_ustorm_per_queue_stat eth_queue_stat; 1371 struct regpair vf_pf_msg_addr; 1372 }; 1373 1374 /* Ustorm triggering VF zone */ 1375 struct ustorm_trigger_vf_zone { 1376 u8 vf_pf_msg_valid; 1377 u8 reserved[7]; 1378 }; 1379 1380 /* Ustorm VF zone */ 1381 struct ustorm_vf_zone { 1382 struct ustorm_non_trigger_vf_zone non_trigger; 1383 struct ustorm_trigger_vf_zone trigger; 1384 }; 1385 1386 /* VF-PF channel data */ 1387 struct vf_pf_channel_data { 1388 __le32 ready; 1389 u8 valid; 1390 u8 reserved0; 1391 __le16 reserved1; 1392 }; 1393 1394 /* Ramrod data for VF start ramrod */ 1395 struct vf_start_ramrod_data { 1396 u8 vf_id; 1397 u8 enable_flr_ack; 1398 __le16 opaque_fid; 1399 u8 personality; 1400 u8 reserved[7]; 1401 struct hsi_fp_ver_struct hsi_fp_ver; 1402 1403 }; 1404 1405 /* Ramrod data for VF start ramrod */ 1406 struct vf_stop_ramrod_data { 1407 u8 vf_id; 1408 u8 reserved0; 1409 __le16 reserved1; 1410 __le32 reserved2; 1411 }; 1412 1413 /* VF zone size mode */ 1414 enum vf_zone_size_mode { 1415 VF_ZONE_SIZE_MODE_DEFAULT, 1416 VF_ZONE_SIZE_MODE_DOUBLE, 1417 VF_ZONE_SIZE_MODE_QUAD, 1418 MAX_VF_ZONE_SIZE_MODE 1419 }; 1420 1421 /* Xstorm non-triggering VF zone */ 1422 struct xstorm_non_trigger_vf_zone { 1423 struct regpair non_edpm_ack_pkts; 1424 }; 1425 1426 /* Tstorm VF zone */ 1427 struct xstorm_vf_zone { 1428 struct xstorm_non_trigger_vf_zone non_trigger; 1429 }; 1430 1431 /* Attentions status block */ 1432 struct atten_status_block { 1433 __le32 atten_bits; 1434 __le32 atten_ack; 1435 __le16 reserved0; 1436 __le16 sb_index; 1437 __le32 reserved1; 1438 }; 1439 1440 /* DMAE command */ 1441 struct dmae_cmd { 1442 __le32 opcode; 1443 #define DMAE_CMD_SRC_MASK 0x1 1444 #define DMAE_CMD_SRC_SHIFT 0 1445 #define DMAE_CMD_DST_MASK 0x3 1446 #define DMAE_CMD_DST_SHIFT 1 1447 #define DMAE_CMD_C_DST_MASK 0x1 1448 #define DMAE_CMD_C_DST_SHIFT 3 1449 #define DMAE_CMD_CRC_RESET_MASK 0x1 1450 #define DMAE_CMD_CRC_RESET_SHIFT 4 1451 #define DMAE_CMD_SRC_ADDR_RESET_MASK 0x1 1452 #define DMAE_CMD_SRC_ADDR_RESET_SHIFT 5 1453 #define DMAE_CMD_DST_ADDR_RESET_MASK 0x1 1454 #define DMAE_CMD_DST_ADDR_RESET_SHIFT 6 1455 #define DMAE_CMD_COMP_FUNC_MASK 0x1 1456 #define DMAE_CMD_COMP_FUNC_SHIFT 7 1457 #define DMAE_CMD_COMP_WORD_EN_MASK 0x1 1458 #define DMAE_CMD_COMP_WORD_EN_SHIFT 8 1459 #define DMAE_CMD_COMP_CRC_EN_MASK 0x1 1460 #define DMAE_CMD_COMP_CRC_EN_SHIFT 9 1461 #define DMAE_CMD_COMP_CRC_OFFSET_MASK 0x7 1462 #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10 1463 #define DMAE_CMD_RESERVED1_MASK 0x1 1464 #define DMAE_CMD_RESERVED1_SHIFT 13 1465 #define DMAE_CMD_ENDIANITY_MODE_MASK 0x3 1466 #define DMAE_CMD_ENDIANITY_MODE_SHIFT 14 1467 #define DMAE_CMD_ERR_HANDLING_MASK 0x3 1468 #define DMAE_CMD_ERR_HANDLING_SHIFT 16 1469 #define DMAE_CMD_PORT_ID_MASK 0x3 1470 #define DMAE_CMD_PORT_ID_SHIFT 18 1471 #define DMAE_CMD_SRC_PF_ID_MASK 0xF 1472 #define DMAE_CMD_SRC_PF_ID_SHIFT 20 1473 #define DMAE_CMD_DST_PF_ID_MASK 0xF 1474 #define DMAE_CMD_DST_PF_ID_SHIFT 24 1475 #define DMAE_CMD_SRC_VF_ID_VALID_MASK 0x1 1476 #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28 1477 #define DMAE_CMD_DST_VF_ID_VALID_MASK 0x1 1478 #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29 1479 #define DMAE_CMD_RESERVED2_MASK 0x3 1480 #define DMAE_CMD_RESERVED2_SHIFT 30 1481 __le32 src_addr_lo; 1482 __le32 src_addr_hi; 1483 __le32 dst_addr_lo; 1484 __le32 dst_addr_hi; 1485 __le16 length_dw; 1486 __le16 opcode_b; 1487 #define DMAE_CMD_SRC_VF_ID_MASK 0xFF 1488 #define DMAE_CMD_SRC_VF_ID_SHIFT 0 1489 #define DMAE_CMD_DST_VF_ID_MASK 0xFF 1490 #define DMAE_CMD_DST_VF_ID_SHIFT 8 1491 __le32 comp_addr_lo; 1492 __le32 comp_addr_hi; 1493 __le32 comp_val; 1494 __le32 crc32; 1495 __le32 crc_32_c; 1496 __le16 crc16; 1497 __le16 crc16_c; 1498 __le16 crc10; 1499 __le16 error_bit_reserved; 1500 #define DMAE_CMD_ERROR_BIT_MASK 0x1 1501 #define DMAE_CMD_ERROR_BIT_SHIFT 0 1502 #define DMAE_CMD_RESERVED_MASK 0x7FFF 1503 #define DMAE_CMD_RESERVED_SHIFT 1 1504 __le16 xsum16; 1505 __le16 xsum8; 1506 }; 1507 1508 enum dmae_cmd_comp_crc_en_enum { 1509 dmae_cmd_comp_crc_disabled, 1510 dmae_cmd_comp_crc_enabled, 1511 MAX_DMAE_CMD_COMP_CRC_EN_ENUM 1512 }; 1513 1514 enum dmae_cmd_comp_func_enum { 1515 dmae_cmd_comp_func_to_src, 1516 dmae_cmd_comp_func_to_dst, 1517 MAX_DMAE_CMD_COMP_FUNC_ENUM 1518 }; 1519 1520 enum dmae_cmd_comp_word_en_enum { 1521 dmae_cmd_comp_word_disabled, 1522 dmae_cmd_comp_word_enabled, 1523 MAX_DMAE_CMD_COMP_WORD_EN_ENUM 1524 }; 1525 1526 enum dmae_cmd_c_dst_enum { 1527 dmae_cmd_c_dst_pcie, 1528 dmae_cmd_c_dst_grc, 1529 MAX_DMAE_CMD_C_DST_ENUM 1530 }; 1531 1532 enum dmae_cmd_dst_enum { 1533 dmae_cmd_dst_none_0, 1534 dmae_cmd_dst_pcie, 1535 dmae_cmd_dst_grc, 1536 dmae_cmd_dst_none_3, 1537 MAX_DMAE_CMD_DST_ENUM 1538 }; 1539 1540 enum dmae_cmd_error_handling_enum { 1541 dmae_cmd_error_handling_send_regular_comp, 1542 dmae_cmd_error_handling_send_comp_with_err, 1543 dmae_cmd_error_handling_dont_send_comp, 1544 MAX_DMAE_CMD_ERROR_HANDLING_ENUM 1545 }; 1546 1547 enum dmae_cmd_src_enum { 1548 dmae_cmd_src_pcie, 1549 dmae_cmd_src_grc, 1550 MAX_DMAE_CMD_SRC_ENUM 1551 }; 1552 1553 struct e4_mstorm_core_conn_ag_ctx { 1554 u8 byte0; 1555 u8 byte1; 1556 u8 flags0; 1557 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 1558 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0 1559 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 1560 #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1 1561 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 1562 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2 1563 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 1564 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4 1565 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 1566 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6 1567 u8 flags1; 1568 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 1569 #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0 1570 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 1571 #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1 1572 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 1573 #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2 1574 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 1575 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3 1576 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 1577 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4 1578 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 1579 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5 1580 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 1581 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6 1582 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 1583 #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7 1584 __le16 word0; 1585 __le16 word1; 1586 __le32 reg0; 1587 __le32 reg1; 1588 }; 1589 1590 struct e4_ystorm_core_conn_ag_ctx { 1591 u8 byte0; 1592 u8 byte1; 1593 u8 flags0; 1594 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 1595 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0 1596 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 1597 #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1 1598 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 1599 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2 1600 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 1601 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4 1602 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 1603 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6 1604 u8 flags1; 1605 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 1606 #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0 1607 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 1608 #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1 1609 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 1610 #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2 1611 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 1612 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3 1613 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 1614 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4 1615 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 1616 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5 1617 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 1618 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6 1619 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 1620 #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7 1621 u8 byte2; 1622 u8 byte3; 1623 __le16 word0; 1624 __le32 reg0; 1625 __le32 reg1; 1626 __le16 word1; 1627 __le16 word2; 1628 __le16 word3; 1629 __le16 word4; 1630 __le32 reg2; 1631 __le32 reg3; 1632 }; 1633 1634 /* DMAE parameters */ 1635 struct qed_dmae_params { 1636 u32 flags; 1637 /* If QED_DMAE_PARAMS_RW_REPL_SRC flag is set and the 1638 * source is a block of length DMAE_MAX_RW_SIZE and the 1639 * destination is larger, the source block will be duplicated as 1640 * many times as required to fill the destination block. This is 1641 * used mostly to write a zeroed buffer to destination address 1642 * using DMA 1643 */ 1644 #define QED_DMAE_PARAMS_RW_REPL_SRC_MASK 0x1 1645 #define QED_DMAE_PARAMS_RW_REPL_SRC_SHIFT 0 1646 #define QED_DMAE_PARAMS_SRC_VF_VALID_MASK 0x1 1647 #define QED_DMAE_PARAMS_SRC_VF_VALID_SHIFT 1 1648 #define QED_DMAE_PARAMS_DST_VF_VALID_MASK 0x1 1649 #define QED_DMAE_PARAMS_DST_VF_VALID_SHIFT 2 1650 #define QED_DMAE_PARAMS_COMPLETION_DST_MASK 0x1 1651 #define QED_DMAE_PARAMS_COMPLETION_DST_SHIFT 3 1652 #define QED_DMAE_PARAMS_PORT_VALID_MASK 0x1 1653 #define QED_DMAE_PARAMS_PORT_VALID_SHIFT 4 1654 #define QED_DMAE_PARAMS_SRC_PF_VALID_MASK 0x1 1655 #define QED_DMAE_PARAMS_SRC_PF_VALID_SHIFT 5 1656 #define QED_DMAE_PARAMS_DST_PF_VALID_MASK 0x1 1657 #define QED_DMAE_PARAMS_DST_PF_VALID_SHIFT 6 1658 #define QED_DMAE_PARAMS_RESERVED_MASK 0x1FFFFFF 1659 #define QED_DMAE_PARAMS_RESERVED_SHIFT 7 1660 u8 src_vfid; 1661 u8 dst_vfid; 1662 u8 port_id; 1663 u8 src_pfid; 1664 u8 dst_pfid; 1665 u8 reserved1; 1666 __le16 reserved2; 1667 }; 1668 1669 /* IGU cleanup command */ 1670 struct igu_cleanup { 1671 __le32 sb_id_and_flags; 1672 #define IGU_CLEANUP_RESERVED0_MASK 0x7FFFFFF 1673 #define IGU_CLEANUP_RESERVED0_SHIFT 0 1674 #define IGU_CLEANUP_CLEANUP_SET_MASK 0x1 1675 #define IGU_CLEANUP_CLEANUP_SET_SHIFT 27 1676 #define IGU_CLEANUP_CLEANUP_TYPE_MASK 0x7 1677 #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28 1678 #define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1 1679 #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31 1680 __le32 reserved1; 1681 }; 1682 1683 /* IGU firmware driver command */ 1684 union igu_command { 1685 struct igu_prod_cons_update prod_cons_update; 1686 struct igu_cleanup cleanup; 1687 }; 1688 1689 /* IGU firmware driver command */ 1690 struct igu_command_reg_ctrl { 1691 __le16 opaque_fid; 1692 __le16 igu_command_reg_ctrl_fields; 1693 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK 0xFFF 1694 #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0 1695 #define IGU_COMMAND_REG_CTRL_RESERVED_MASK 0x7 1696 #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT 12 1697 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK 0x1 1698 #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15 1699 }; 1700 1701 /* IGU mapping line structure */ 1702 struct igu_mapping_line { 1703 __le32 igu_mapping_line_fields; 1704 #define IGU_MAPPING_LINE_VALID_MASK 0x1 1705 #define IGU_MAPPING_LINE_VALID_SHIFT 0 1706 #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK 0xFF 1707 #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT 1 1708 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK 0xFF 1709 #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9 1710 #define IGU_MAPPING_LINE_PF_VALID_MASK 0x1 1711 #define IGU_MAPPING_LINE_PF_VALID_SHIFT 17 1712 #define IGU_MAPPING_LINE_IPS_GROUP_MASK 0x3F 1713 #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT 18 1714 #define IGU_MAPPING_LINE_RESERVED_MASK 0xFF 1715 #define IGU_MAPPING_LINE_RESERVED_SHIFT 24 1716 }; 1717 1718 /* IGU MSIX line structure */ 1719 struct igu_msix_vector { 1720 struct regpair address; 1721 __le32 data; 1722 __le32 msix_vector_fields; 1723 #define IGU_MSIX_VECTOR_MASK_BIT_MASK 0x1 1724 #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT 0 1725 #define IGU_MSIX_VECTOR_RESERVED0_MASK 0x7FFF 1726 #define IGU_MSIX_VECTOR_RESERVED0_SHIFT 1 1727 #define IGU_MSIX_VECTOR_STEERING_TAG_MASK 0xFF 1728 #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16 1729 #define IGU_MSIX_VECTOR_RESERVED1_MASK 0xFF 1730 #define IGU_MSIX_VECTOR_RESERVED1_SHIFT 24 1731 }; 1732 /* per encapsulation type enabling flags */ 1733 struct prs_reg_encapsulation_type_en { 1734 u8 flags; 1735 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK 0x1 1736 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT 0 1737 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK 0x1 1738 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT 1 1739 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK 0x1 1740 #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT 2 1741 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK 0x1 1742 #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT 3 1743 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK 0x1 1744 #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4 1745 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK 0x1 1746 #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT 5 1747 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK 0x3 1748 #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT 6 1749 }; 1750 1751 enum pxp_tph_st_hint { 1752 TPH_ST_HINT_BIDIR, 1753 TPH_ST_HINT_REQUESTER, 1754 TPH_ST_HINT_TARGET, 1755 TPH_ST_HINT_TARGET_PRIO, 1756 MAX_PXP_TPH_ST_HINT 1757 }; 1758 1759 /* QM hardware structure of enable bypass credit mask */ 1760 struct qm_rf_bypass_mask { 1761 u8 flags; 1762 #define QM_RF_BYPASS_MASK_LINEVOQ_MASK 0x1 1763 #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT 0 1764 #define QM_RF_BYPASS_MASK_RESERVED0_MASK 0x1 1765 #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1 1766 #define QM_RF_BYPASS_MASK_PFWFQ_MASK 0x1 1767 #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT 2 1768 #define QM_RF_BYPASS_MASK_VPWFQ_MASK 0x1 1769 #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT 3 1770 #define QM_RF_BYPASS_MASK_PFRL_MASK 0x1 1771 #define QM_RF_BYPASS_MASK_PFRL_SHIFT 4 1772 #define QM_RF_BYPASS_MASK_VPQCNRL_MASK 0x1 1773 #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT 5 1774 #define QM_RF_BYPASS_MASK_FWPAUSE_MASK 0x1 1775 #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT 6 1776 #define QM_RF_BYPASS_MASK_RESERVED1_MASK 0x1 1777 #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7 1778 }; 1779 1780 /* QM hardware structure of opportunistic credit mask */ 1781 struct qm_rf_opportunistic_mask { 1782 __le16 flags; 1783 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK 0x1 1784 #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT 0 1785 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK 0x1 1786 #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT 1 1787 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK 0x1 1788 #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT 2 1789 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK 0x1 1790 #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT 3 1791 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK 0x1 1792 #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT 4 1793 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK 0x1 1794 #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT 5 1795 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK 0x1 1796 #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT 6 1797 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK 0x1 1798 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT 7 1799 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK 0x1 1800 #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8 1801 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK 0x7F 1802 #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT 9 1803 }; 1804 1805 /* QM hardware structure of QM map memory */ 1806 struct qm_rf_pq_map_e4 { 1807 __le32 reg; 1808 #define QM_RF_PQ_MAP_E4_PQ_VALID_MASK 0x1 1809 #define QM_RF_PQ_MAP_E4_PQ_VALID_SHIFT 0 1810 #define QM_RF_PQ_MAP_E4_RL_ID_MASK 0xFF 1811 #define QM_RF_PQ_MAP_E4_RL_ID_SHIFT 1 1812 #define QM_RF_PQ_MAP_E4_VP_PQ_ID_MASK 0x1FF 1813 #define QM_RF_PQ_MAP_E4_VP_PQ_ID_SHIFT 9 1814 #define QM_RF_PQ_MAP_E4_VOQ_MASK 0x1F 1815 #define QM_RF_PQ_MAP_E4_VOQ_SHIFT 18 1816 #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_MASK 0x3 1817 #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_SHIFT 23 1818 #define QM_RF_PQ_MAP_E4_RL_VALID_MASK 0x1 1819 #define QM_RF_PQ_MAP_E4_RL_VALID_SHIFT 25 1820 #define QM_RF_PQ_MAP_E4_RESERVED_MASK 0x3F 1821 #define QM_RF_PQ_MAP_E4_RESERVED_SHIFT 26 1822 }; 1823 1824 /* Completion params for aggregated interrupt completion */ 1825 struct sdm_agg_int_comp_params { 1826 __le16 params; 1827 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK 0x3F 1828 #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT 0 1829 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK 0x1 1830 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6 1831 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK 0x1FF 1832 #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT 7 1833 }; 1834 1835 /* SDM operation gen command (generate aggregative interrupt) */ 1836 struct sdm_op_gen { 1837 __le32 command; 1838 #define SDM_OP_GEN_COMP_PARAM_MASK 0xFFFF 1839 #define SDM_OP_GEN_COMP_PARAM_SHIFT 0 1840 #define SDM_OP_GEN_COMP_TYPE_MASK 0xF 1841 #define SDM_OP_GEN_COMP_TYPE_SHIFT 16 1842 #define SDM_OP_GEN_RESERVED_MASK 0xFFF 1843 #define SDM_OP_GEN_RESERVED_SHIFT 20 1844 }; 1845 1846 /* Physical memory descriptor */ 1847 struct phys_mem_desc { 1848 dma_addr_t phys_addr; 1849 void *virt_addr; 1850 u32 size; /* In bytes */ 1851 }; 1852 1853 /* Virtual memory descriptor */ 1854 struct virt_mem_desc { 1855 void *ptr; 1856 u32 size; /* In bytes */ 1857 }; 1858 1859 /****************************************/ 1860 /* Debug Tools HSI constants and macros */ 1861 /****************************************/ 1862 1863 enum block_id { 1864 BLOCK_GRC, 1865 BLOCK_MISCS, 1866 BLOCK_MISC, 1867 BLOCK_DBU, 1868 BLOCK_PGLUE_B, 1869 BLOCK_CNIG, 1870 BLOCK_CPMU, 1871 BLOCK_NCSI, 1872 BLOCK_OPTE, 1873 BLOCK_BMB, 1874 BLOCK_PCIE, 1875 BLOCK_MCP, 1876 BLOCK_MCP2, 1877 BLOCK_PSWHST, 1878 BLOCK_PSWHST2, 1879 BLOCK_PSWRD, 1880 BLOCK_PSWRD2, 1881 BLOCK_PSWWR, 1882 BLOCK_PSWWR2, 1883 BLOCK_PSWRQ, 1884 BLOCK_PSWRQ2, 1885 BLOCK_PGLCS, 1886 BLOCK_DMAE, 1887 BLOCK_PTU, 1888 BLOCK_TCM, 1889 BLOCK_MCM, 1890 BLOCK_UCM, 1891 BLOCK_XCM, 1892 BLOCK_YCM, 1893 BLOCK_PCM, 1894 BLOCK_QM, 1895 BLOCK_TM, 1896 BLOCK_DORQ, 1897 BLOCK_BRB, 1898 BLOCK_SRC, 1899 BLOCK_PRS, 1900 BLOCK_TSDM, 1901 BLOCK_MSDM, 1902 BLOCK_USDM, 1903 BLOCK_XSDM, 1904 BLOCK_YSDM, 1905 BLOCK_PSDM, 1906 BLOCK_TSEM, 1907 BLOCK_MSEM, 1908 BLOCK_USEM, 1909 BLOCK_XSEM, 1910 BLOCK_YSEM, 1911 BLOCK_PSEM, 1912 BLOCK_RSS, 1913 BLOCK_TMLD, 1914 BLOCK_MULD, 1915 BLOCK_YULD, 1916 BLOCK_XYLD, 1917 BLOCK_PRM, 1918 BLOCK_PBF_PB1, 1919 BLOCK_PBF_PB2, 1920 BLOCK_RPB, 1921 BLOCK_BTB, 1922 BLOCK_PBF, 1923 BLOCK_RDIF, 1924 BLOCK_TDIF, 1925 BLOCK_CDU, 1926 BLOCK_CCFC, 1927 BLOCK_TCFC, 1928 BLOCK_IGU, 1929 BLOCK_CAU, 1930 BLOCK_UMAC, 1931 BLOCK_XMAC, 1932 BLOCK_MSTAT, 1933 BLOCK_DBG, 1934 BLOCK_NIG, 1935 BLOCK_WOL, 1936 BLOCK_BMBN, 1937 BLOCK_IPC, 1938 BLOCK_NWM, 1939 BLOCK_NWS, 1940 BLOCK_MS, 1941 BLOCK_PHY_PCIE, 1942 BLOCK_LED, 1943 BLOCK_AVS_WRAP, 1944 BLOCK_PXPREQBUS, 1945 BLOCK_BAR0_MAP, 1946 BLOCK_MCP_FIO, 1947 BLOCK_LAST_INIT, 1948 BLOCK_PRS_FC, 1949 BLOCK_PBF_FC, 1950 BLOCK_NIG_LB_FC, 1951 BLOCK_NIG_LB_FC_PLLH, 1952 BLOCK_NIG_TX_FC_PLLH, 1953 BLOCK_NIG_TX_FC, 1954 BLOCK_NIG_RX_FC_PLLH, 1955 BLOCK_NIG_RX_FC, 1956 MAX_BLOCK_ID 1957 }; 1958 1959 /* binary debug buffer types */ 1960 enum bin_dbg_buffer_type { 1961 BIN_BUF_DBG_MODE_TREE, 1962 BIN_BUF_DBG_DUMP_REG, 1963 BIN_BUF_DBG_DUMP_MEM, 1964 BIN_BUF_DBG_IDLE_CHK_REGS, 1965 BIN_BUF_DBG_IDLE_CHK_IMMS, 1966 BIN_BUF_DBG_IDLE_CHK_RULES, 1967 BIN_BUF_DBG_IDLE_CHK_PARSING_DATA, 1968 BIN_BUF_DBG_ATTN_BLOCKS, 1969 BIN_BUF_DBG_ATTN_REGS, 1970 BIN_BUF_DBG_ATTN_INDEXES, 1971 BIN_BUF_DBG_ATTN_NAME_OFFSETS, 1972 BIN_BUF_DBG_BLOCKS, 1973 BIN_BUF_DBG_BLOCKS_CHIP_DATA, 1974 BIN_BUF_DBG_BUS_LINES, 1975 BIN_BUF_DBG_BLOCKS_USER_DATA, 1976 BIN_BUF_DBG_BLOCKS_CHIP_USER_DATA, 1977 BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS, 1978 BIN_BUF_DBG_RESET_REGS, 1979 BIN_BUF_DBG_PARSING_STRINGS, 1980 MAX_BIN_DBG_BUFFER_TYPE 1981 }; 1982 1983 1984 /* Attention bit mapping */ 1985 struct dbg_attn_bit_mapping { 1986 u16 data; 1987 #define DBG_ATTN_BIT_MAPPING_VAL_MASK 0x7FFF 1988 #define DBG_ATTN_BIT_MAPPING_VAL_SHIFT 0 1989 #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK 0x1 1990 #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT 15 1991 }; 1992 1993 /* Attention block per-type data */ 1994 struct dbg_attn_block_type_data { 1995 u16 names_offset; 1996 u16 reserved1; 1997 u8 num_regs; 1998 u8 reserved2; 1999 u16 regs_offset; 2000 2001 }; 2002 2003 /* Block attentions */ 2004 struct dbg_attn_block { 2005 struct dbg_attn_block_type_data per_type_data[2]; 2006 }; 2007 2008 /* Attention register result */ 2009 struct dbg_attn_reg_result { 2010 u32 data; 2011 #define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK 0xFFFFFF 2012 #define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT 0 2013 #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK 0xFF 2014 #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT 24 2015 u16 block_attn_offset; 2016 u16 reserved; 2017 u32 sts_val; 2018 u32 mask_val; 2019 }; 2020 2021 /* Attention block result */ 2022 struct dbg_attn_block_result { 2023 u8 block_id; 2024 u8 data; 2025 #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK 0x3 2026 #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT 0 2027 #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK 0x3F 2028 #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT 2 2029 u16 names_offset; 2030 struct dbg_attn_reg_result reg_results[15]; 2031 }; 2032 2033 /* Mode header */ 2034 struct dbg_mode_hdr { 2035 u16 data; 2036 #define DBG_MODE_HDR_EVAL_MODE_MASK 0x1 2037 #define DBG_MODE_HDR_EVAL_MODE_SHIFT 0 2038 #define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK 0x7FFF 2039 #define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT 1 2040 }; 2041 2042 /* Attention register */ 2043 struct dbg_attn_reg { 2044 struct dbg_mode_hdr mode; 2045 u16 block_attn_offset; 2046 u32 data; 2047 #define DBG_ATTN_REG_STS_ADDRESS_MASK 0xFFFFFF 2048 #define DBG_ATTN_REG_STS_ADDRESS_SHIFT 0 2049 #define DBG_ATTN_REG_NUM_REG_ATTN_MASK 0xFF 2050 #define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24 2051 u32 sts_clr_address; 2052 u32 mask_address; 2053 }; 2054 2055 /* Attention types */ 2056 enum dbg_attn_type { 2057 ATTN_TYPE_INTERRUPT, 2058 ATTN_TYPE_PARITY, 2059 MAX_DBG_ATTN_TYPE 2060 }; 2061 2062 /* Block debug data */ 2063 struct dbg_block { 2064 u8 name[15]; 2065 u8 associated_storm_letter; 2066 }; 2067 2068 /* Chip-specific block debug data */ 2069 struct dbg_block_chip { 2070 u8 flags; 2071 #define DBG_BLOCK_CHIP_IS_REMOVED_MASK 0x1 2072 #define DBG_BLOCK_CHIP_IS_REMOVED_SHIFT 0 2073 #define DBG_BLOCK_CHIP_HAS_RESET_REG_MASK 0x1 2074 #define DBG_BLOCK_CHIP_HAS_RESET_REG_SHIFT 1 2075 #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_MASK 0x1 2076 #define DBG_BLOCK_CHIP_UNRESET_BEFORE_DUMP_SHIFT 2 2077 #define DBG_BLOCK_CHIP_HAS_DBG_BUS_MASK 0x1 2078 #define DBG_BLOCK_CHIP_HAS_DBG_BUS_SHIFT 3 2079 #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_MASK 0x1 2080 #define DBG_BLOCK_CHIP_HAS_LATENCY_EVENTS_SHIFT 4 2081 #define DBG_BLOCK_CHIP_RESERVED0_MASK 0x7 2082 #define DBG_BLOCK_CHIP_RESERVED0_SHIFT 5 2083 u8 dbg_client_id; 2084 u8 reset_reg_id; 2085 u8 reset_reg_bit_offset; 2086 struct dbg_mode_hdr dbg_bus_mode; 2087 u16 reserved1; 2088 u8 reserved2; 2089 u8 num_of_dbg_bus_lines; 2090 u16 dbg_bus_lines_offset; 2091 u32 dbg_select_reg_addr; 2092 u32 dbg_dword_enable_reg_addr; 2093 u32 dbg_shift_reg_addr; 2094 u32 dbg_force_valid_reg_addr; 2095 u32 dbg_force_frame_reg_addr; 2096 }; 2097 2098 /* Chip-specific block user debug data */ 2099 struct dbg_block_chip_user { 2100 u8 num_of_dbg_bus_lines; 2101 u8 has_latency_events; 2102 u16 names_offset; 2103 }; 2104 2105 /* Block user debug data */ 2106 struct dbg_block_user { 2107 u8 name[16]; 2108 }; 2109 2110 /* Block Debug line data */ 2111 struct dbg_bus_line { 2112 u8 data; 2113 #define DBG_BUS_LINE_NUM_OF_GROUPS_MASK 0xF 2114 #define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT 0 2115 #define DBG_BUS_LINE_IS_256B_MASK 0x1 2116 #define DBG_BUS_LINE_IS_256B_SHIFT 4 2117 #define DBG_BUS_LINE_RESERVED_MASK 0x7 2118 #define DBG_BUS_LINE_RESERVED_SHIFT 5 2119 u8 group_sizes; 2120 }; 2121 2122 /* Condition header for registers dump */ 2123 struct dbg_dump_cond_hdr { 2124 struct dbg_mode_hdr mode; /* Mode header */ 2125 u8 block_id; /* block ID */ 2126 u8 data_size; /* size in dwords of the data following this header */ 2127 }; 2128 2129 /* Memory data for registers dump */ 2130 struct dbg_dump_mem { 2131 u32 dword0; 2132 #define DBG_DUMP_MEM_ADDRESS_MASK 0xFFFFFF 2133 #define DBG_DUMP_MEM_ADDRESS_SHIFT 0 2134 #define DBG_DUMP_MEM_MEM_GROUP_ID_MASK 0xFF 2135 #define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT 24 2136 u32 dword1; 2137 #define DBG_DUMP_MEM_LENGTH_MASK 0xFFFFFF 2138 #define DBG_DUMP_MEM_LENGTH_SHIFT 0 2139 #define DBG_DUMP_MEM_WIDE_BUS_MASK 0x1 2140 #define DBG_DUMP_MEM_WIDE_BUS_SHIFT 24 2141 #define DBG_DUMP_MEM_RESERVED_MASK 0x7F 2142 #define DBG_DUMP_MEM_RESERVED_SHIFT 25 2143 }; 2144 2145 /* Register data for registers dump */ 2146 struct dbg_dump_reg { 2147 u32 data; 2148 #define DBG_DUMP_REG_ADDRESS_MASK 0x7FFFFF 2149 #define DBG_DUMP_REG_ADDRESS_SHIFT 0 2150 #define DBG_DUMP_REG_WIDE_BUS_MASK 0x1 2151 #define DBG_DUMP_REG_WIDE_BUS_SHIFT 23 2152 #define DBG_DUMP_REG_LENGTH_MASK 0xFF 2153 #define DBG_DUMP_REG_LENGTH_SHIFT 24 2154 }; 2155 2156 /* Split header for registers dump */ 2157 struct dbg_dump_split_hdr { 2158 u32 hdr; 2159 #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK 0xFFFFFF 2160 #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT 0 2161 #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK 0xFF 2162 #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT 24 2163 }; 2164 2165 /* Condition header for idle check */ 2166 struct dbg_idle_chk_cond_hdr { 2167 struct dbg_mode_hdr mode; /* Mode header */ 2168 u16 data_size; /* size in dwords of the data following this header */ 2169 }; 2170 2171 /* Idle Check condition register */ 2172 struct dbg_idle_chk_cond_reg { 2173 u32 data; 2174 #define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK 0x7FFFFF 2175 #define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT 0 2176 #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK 0x1 2177 #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT 23 2178 #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK 0xFF 2179 #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT 24 2180 u16 num_entries; 2181 u8 entry_size; 2182 u8 start_entry; 2183 }; 2184 2185 /* Idle Check info register */ 2186 struct dbg_idle_chk_info_reg { 2187 u32 data; 2188 #define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK 0x7FFFFF 2189 #define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT 0 2190 #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK 0x1 2191 #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT 23 2192 #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK 0xFF 2193 #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT 24 2194 u16 size; /* register size in dwords */ 2195 struct dbg_mode_hdr mode; /* Mode header */ 2196 }; 2197 2198 /* Idle Check register */ 2199 union dbg_idle_chk_reg { 2200 struct dbg_idle_chk_cond_reg cond_reg; /* condition register */ 2201 struct dbg_idle_chk_info_reg info_reg; /* info register */ 2202 }; 2203 2204 /* Idle Check result header */ 2205 struct dbg_idle_chk_result_hdr { 2206 u16 rule_id; /* Failing rule index */ 2207 u16 mem_entry_id; /* Failing memory entry index */ 2208 u8 num_dumped_cond_regs; /* number of dumped condition registers */ 2209 u8 num_dumped_info_regs; /* number of dumped condition registers */ 2210 u8 severity; /* from dbg_idle_chk_severity_types enum */ 2211 u8 reserved; 2212 }; 2213 2214 /* Idle Check result register header */ 2215 struct dbg_idle_chk_result_reg_hdr { 2216 u8 data; 2217 #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK 0x1 2218 #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0 2219 #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK 0x7F 2220 #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1 2221 u8 start_entry; /* index of the first checked entry */ 2222 u16 size; /* register size in dwords */ 2223 }; 2224 2225 /* Idle Check rule */ 2226 struct dbg_idle_chk_rule { 2227 u16 rule_id; /* Idle Check rule ID */ 2228 u8 severity; /* value from dbg_idle_chk_severity_types enum */ 2229 u8 cond_id; /* Condition ID */ 2230 u8 num_cond_regs; /* number of condition registers */ 2231 u8 num_info_regs; /* number of info registers */ 2232 u8 num_imms; /* number of immediates in the condition */ 2233 u8 reserved1; 2234 u16 reg_offset; /* offset of this rules registers in the idle check 2235 * register array (in dbg_idle_chk_reg units). 2236 */ 2237 u16 imm_offset; /* offset of this rules immediate values in the 2238 * immediate values array (in dwords). 2239 */ 2240 }; 2241 2242 /* Idle Check rule parsing data */ 2243 struct dbg_idle_chk_rule_parsing_data { 2244 u32 data; 2245 #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK 0x1 2246 #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT 0 2247 #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK 0x7FFFFFFF 2248 #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT 1 2249 }; 2250 2251 /* Idle check severity types */ 2252 enum dbg_idle_chk_severity_types { 2253 /* idle check failure should cause an error */ 2254 IDLE_CHK_SEVERITY_ERROR, 2255 /* idle check failure should cause an error only if theres no traffic */ 2256 IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC, 2257 /* idle check failure should cause a warning */ 2258 IDLE_CHK_SEVERITY_WARNING, 2259 MAX_DBG_IDLE_CHK_SEVERITY_TYPES 2260 }; 2261 2262 /* Reset register */ 2263 struct dbg_reset_reg { 2264 u32 data; 2265 #define DBG_RESET_REG_ADDR_MASK 0xFFFFFF 2266 #define DBG_RESET_REG_ADDR_SHIFT 0 2267 #define DBG_RESET_REG_IS_REMOVED_MASK 0x1 2268 #define DBG_RESET_REG_IS_REMOVED_SHIFT 24 2269 #define DBG_RESET_REG_RESERVED_MASK 0x7F 2270 #define DBG_RESET_REG_RESERVED_SHIFT 25 2271 }; 2272 2273 /* Debug Bus block data */ 2274 struct dbg_bus_block_data { 2275 u8 enable_mask; 2276 u8 right_shift; 2277 u8 force_valid_mask; 2278 u8 force_frame_mask; 2279 u8 dword_mask; 2280 u8 line_num; 2281 u8 hw_id; 2282 u8 flags; 2283 #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_MASK 0x1 2284 #define DBG_BUS_BLOCK_DATA_IS_256B_LINE_SHIFT 0 2285 #define DBG_BUS_BLOCK_DATA_RESERVED_MASK 0x7F 2286 #define DBG_BUS_BLOCK_DATA_RESERVED_SHIFT 1 2287 }; 2288 2289 enum dbg_bus_clients { 2290 DBG_BUS_CLIENT_RBCN, 2291 DBG_BUS_CLIENT_RBCP, 2292 DBG_BUS_CLIENT_RBCR, 2293 DBG_BUS_CLIENT_RBCT, 2294 DBG_BUS_CLIENT_RBCU, 2295 DBG_BUS_CLIENT_RBCF, 2296 DBG_BUS_CLIENT_RBCX, 2297 DBG_BUS_CLIENT_RBCS, 2298 DBG_BUS_CLIENT_RBCH, 2299 DBG_BUS_CLIENT_RBCZ, 2300 DBG_BUS_CLIENT_OTHER_ENGINE, 2301 DBG_BUS_CLIENT_TIMESTAMP, 2302 DBG_BUS_CLIENT_CPU, 2303 DBG_BUS_CLIENT_RBCY, 2304 DBG_BUS_CLIENT_RBCQ, 2305 DBG_BUS_CLIENT_RBCM, 2306 DBG_BUS_CLIENT_RBCB, 2307 DBG_BUS_CLIENT_RBCW, 2308 DBG_BUS_CLIENT_RBCV, 2309 MAX_DBG_BUS_CLIENTS 2310 }; 2311 2312 /* Debug Bus constraint operation types */ 2313 enum dbg_bus_constraint_ops { 2314 DBG_BUS_CONSTRAINT_OP_EQ, 2315 DBG_BUS_CONSTRAINT_OP_NE, 2316 DBG_BUS_CONSTRAINT_OP_LT, 2317 DBG_BUS_CONSTRAINT_OP_LTC, 2318 DBG_BUS_CONSTRAINT_OP_LE, 2319 DBG_BUS_CONSTRAINT_OP_LEC, 2320 DBG_BUS_CONSTRAINT_OP_GT, 2321 DBG_BUS_CONSTRAINT_OP_GTC, 2322 DBG_BUS_CONSTRAINT_OP_GE, 2323 DBG_BUS_CONSTRAINT_OP_GEC, 2324 MAX_DBG_BUS_CONSTRAINT_OPS 2325 }; 2326 2327 /* Debug Bus trigger state data */ 2328 struct dbg_bus_trigger_state_data { 2329 u8 msg_len; 2330 u8 constraint_dword_mask; 2331 u8 storm_id; 2332 u8 reserved; 2333 }; 2334 2335 /* Debug Bus memory address */ 2336 struct dbg_bus_mem_addr { 2337 u32 lo; 2338 u32 hi; 2339 }; 2340 2341 /* Debug Bus PCI buffer data */ 2342 struct dbg_bus_pci_buf_data { 2343 struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */ 2344 struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */ 2345 u32 size; /* PCI buffer size in bytes */ 2346 }; 2347 2348 /* Debug Bus Storm EID range filter params */ 2349 struct dbg_bus_storm_eid_range_params { 2350 u8 min; /* Minimal event ID to filter on */ 2351 u8 max; /* Maximal event ID to filter on */ 2352 }; 2353 2354 /* Debug Bus Storm EID mask filter params */ 2355 struct dbg_bus_storm_eid_mask_params { 2356 u8 val; /* Event ID value */ 2357 u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */ 2358 }; 2359 2360 /* Debug Bus Storm EID filter params */ 2361 union dbg_bus_storm_eid_params { 2362 struct dbg_bus_storm_eid_range_params range; 2363 struct dbg_bus_storm_eid_mask_params mask; 2364 }; 2365 2366 /* Debug Bus Storm data */ 2367 struct dbg_bus_storm_data { 2368 u8 enabled; 2369 u8 mode; 2370 u8 hw_id; 2371 u8 eid_filter_en; 2372 u8 eid_range_not_mask; 2373 u8 cid_filter_en; 2374 union dbg_bus_storm_eid_params eid_filter_params; 2375 u32 cid; 2376 }; 2377 2378 /* Debug Bus data */ 2379 struct dbg_bus_data { 2380 u32 app_version; 2381 u8 state; 2382 u8 mode_256b_en; 2383 u8 num_enabled_blocks; 2384 u8 num_enabled_storms; 2385 u8 target; 2386 u8 one_shot_en; 2387 u8 grc_input_en; 2388 u8 timestamp_input_en; 2389 u8 filter_en; 2390 u8 adding_filter; 2391 u8 filter_pre_trigger; 2392 u8 filter_post_trigger; 2393 u8 trigger_en; 2394 u8 filter_constraint_dword_mask; 2395 u8 next_trigger_state; 2396 u8 next_constraint_id; 2397 struct dbg_bus_trigger_state_data trigger_states[3]; 2398 u8 filter_msg_len; 2399 u8 rcv_from_other_engine; 2400 u8 blocks_dword_mask; 2401 u8 blocks_dword_overlap; 2402 u32 hw_id_mask; 2403 struct dbg_bus_pci_buf_data pci_buf; 2404 struct dbg_bus_block_data blocks[132]; 2405 struct dbg_bus_storm_data storms[6]; 2406 }; 2407 2408 /* Debug bus states */ 2409 enum dbg_bus_states { 2410 DBG_BUS_STATE_IDLE, 2411 DBG_BUS_STATE_READY, 2412 DBG_BUS_STATE_RECORDING, 2413 DBG_BUS_STATE_STOPPED, 2414 MAX_DBG_BUS_STATES 2415 }; 2416 2417 /* Debug Bus Storm modes */ 2418 enum dbg_bus_storm_modes { 2419 DBG_BUS_STORM_MODE_PRINTF, 2420 DBG_BUS_STORM_MODE_PRAM_ADDR, 2421 DBG_BUS_STORM_MODE_DRA_RW, 2422 DBG_BUS_STORM_MODE_DRA_W, 2423 DBG_BUS_STORM_MODE_LD_ST_ADDR, 2424 DBG_BUS_STORM_MODE_DRA_FSM, 2425 DBG_BUS_STORM_MODE_FAST_DBGMUX, 2426 DBG_BUS_STORM_MODE_RH, 2427 DBG_BUS_STORM_MODE_RH_WITH_STORE, 2428 DBG_BUS_STORM_MODE_FOC, 2429 DBG_BUS_STORM_MODE_EXT_STORE, 2430 MAX_DBG_BUS_STORM_MODES 2431 }; 2432 2433 /* Debug bus target IDs */ 2434 enum dbg_bus_targets { 2435 DBG_BUS_TARGET_ID_INT_BUF, 2436 DBG_BUS_TARGET_ID_NIG, 2437 DBG_BUS_TARGET_ID_PCI, 2438 MAX_DBG_BUS_TARGETS 2439 }; 2440 2441 /* GRC Dump data */ 2442 struct dbg_grc_data { 2443 u8 params_initialized; 2444 u8 reserved1; 2445 u16 reserved2; 2446 u32 param_val[48]; 2447 }; 2448 2449 /* Debug GRC params */ 2450 enum dbg_grc_params { 2451 DBG_GRC_PARAM_DUMP_TSTORM, 2452 DBG_GRC_PARAM_DUMP_MSTORM, 2453 DBG_GRC_PARAM_DUMP_USTORM, 2454 DBG_GRC_PARAM_DUMP_XSTORM, 2455 DBG_GRC_PARAM_DUMP_YSTORM, 2456 DBG_GRC_PARAM_DUMP_PSTORM, 2457 DBG_GRC_PARAM_DUMP_REGS, 2458 DBG_GRC_PARAM_DUMP_RAM, 2459 DBG_GRC_PARAM_DUMP_PBUF, 2460 DBG_GRC_PARAM_DUMP_IOR, 2461 DBG_GRC_PARAM_DUMP_VFC, 2462 DBG_GRC_PARAM_DUMP_CM_CTX, 2463 DBG_GRC_PARAM_DUMP_PXP, 2464 DBG_GRC_PARAM_DUMP_RSS, 2465 DBG_GRC_PARAM_DUMP_CAU, 2466 DBG_GRC_PARAM_DUMP_QM, 2467 DBG_GRC_PARAM_DUMP_MCP, 2468 DBG_GRC_PARAM_DUMP_DORQ, 2469 DBG_GRC_PARAM_DUMP_CFC, 2470 DBG_GRC_PARAM_DUMP_IGU, 2471 DBG_GRC_PARAM_DUMP_BRB, 2472 DBG_GRC_PARAM_DUMP_BTB, 2473 DBG_GRC_PARAM_DUMP_BMB, 2474 DBG_GRC_PARAM_RESERVD1, 2475 DBG_GRC_PARAM_DUMP_MULD, 2476 DBG_GRC_PARAM_DUMP_PRS, 2477 DBG_GRC_PARAM_DUMP_DMAE, 2478 DBG_GRC_PARAM_DUMP_TM, 2479 DBG_GRC_PARAM_DUMP_SDM, 2480 DBG_GRC_PARAM_DUMP_DIF, 2481 DBG_GRC_PARAM_DUMP_STATIC, 2482 DBG_GRC_PARAM_UNSTALL, 2483 DBG_GRC_PARAM_RESERVED2, 2484 DBG_GRC_PARAM_MCP_TRACE_META_SIZE, 2485 DBG_GRC_PARAM_EXCLUDE_ALL, 2486 DBG_GRC_PARAM_CRASH, 2487 DBG_GRC_PARAM_PARITY_SAFE, 2488 DBG_GRC_PARAM_DUMP_CM, 2489 DBG_GRC_PARAM_DUMP_PHY, 2490 DBG_GRC_PARAM_NO_MCP, 2491 DBG_GRC_PARAM_NO_FW_VER, 2492 DBG_GRC_PARAM_RESERVED3, 2493 DBG_GRC_PARAM_DUMP_MCP_HW_DUMP, 2494 DBG_GRC_PARAM_DUMP_ILT_CDUC, 2495 DBG_GRC_PARAM_DUMP_ILT_CDUT, 2496 DBG_GRC_PARAM_DUMP_CAU_EXT, 2497 MAX_DBG_GRC_PARAMS 2498 }; 2499 2500 /* Debug status codes */ 2501 enum dbg_status { 2502 DBG_STATUS_OK, 2503 DBG_STATUS_APP_VERSION_NOT_SET, 2504 DBG_STATUS_UNSUPPORTED_APP_VERSION, 2505 DBG_STATUS_DBG_BLOCK_NOT_RESET, 2506 DBG_STATUS_INVALID_ARGS, 2507 DBG_STATUS_OUTPUT_ALREADY_SET, 2508 DBG_STATUS_INVALID_PCI_BUF_SIZE, 2509 DBG_STATUS_PCI_BUF_ALLOC_FAILED, 2510 DBG_STATUS_PCI_BUF_NOT_ALLOCATED, 2511 DBG_STATUS_INVALID_FILTER_TRIGGER_DWORDS, 2512 DBG_STATUS_NO_MATCHING_FRAMING_MODE, 2513 DBG_STATUS_VFC_READ_ERROR, 2514 DBG_STATUS_STORM_ALREADY_ENABLED, 2515 DBG_STATUS_STORM_NOT_ENABLED, 2516 DBG_STATUS_BLOCK_ALREADY_ENABLED, 2517 DBG_STATUS_BLOCK_NOT_ENABLED, 2518 DBG_STATUS_NO_INPUT_ENABLED, 2519 DBG_STATUS_NO_FILTER_TRIGGER_256B, 2520 DBG_STATUS_FILTER_ALREADY_ENABLED, 2521 DBG_STATUS_TRIGGER_ALREADY_ENABLED, 2522 DBG_STATUS_TRIGGER_NOT_ENABLED, 2523 DBG_STATUS_CANT_ADD_CONSTRAINT, 2524 DBG_STATUS_TOO_MANY_TRIGGER_STATES, 2525 DBG_STATUS_TOO_MANY_CONSTRAINTS, 2526 DBG_STATUS_RECORDING_NOT_STARTED, 2527 DBG_STATUS_DATA_DIDNT_TRIGGER, 2528 DBG_STATUS_NO_DATA_RECORDED, 2529 DBG_STATUS_DUMP_BUF_TOO_SMALL, 2530 DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED, 2531 DBG_STATUS_UNKNOWN_CHIP, 2532 DBG_STATUS_VIRT_MEM_ALLOC_FAILED, 2533 DBG_STATUS_BLOCK_IN_RESET, 2534 DBG_STATUS_INVALID_TRACE_SIGNATURE, 2535 DBG_STATUS_INVALID_NVRAM_BUNDLE, 2536 DBG_STATUS_NVRAM_GET_IMAGE_FAILED, 2537 DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE, 2538 DBG_STATUS_NVRAM_READ_FAILED, 2539 DBG_STATUS_IDLE_CHK_PARSE_FAILED, 2540 DBG_STATUS_MCP_TRACE_BAD_DATA, 2541 DBG_STATUS_MCP_TRACE_NO_META, 2542 DBG_STATUS_MCP_COULD_NOT_HALT, 2543 DBG_STATUS_MCP_COULD_NOT_RESUME, 2544 DBG_STATUS_RESERVED0, 2545 DBG_STATUS_SEMI_FIFO_NOT_EMPTY, 2546 DBG_STATUS_IGU_FIFO_BAD_DATA, 2547 DBG_STATUS_MCP_COULD_NOT_MASK_PRTY, 2548 DBG_STATUS_FW_ASSERTS_PARSE_FAILED, 2549 DBG_STATUS_REG_FIFO_BAD_DATA, 2550 DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA, 2551 DBG_STATUS_DBG_ARRAY_NOT_SET, 2552 DBG_STATUS_RESERVED1, 2553 DBG_STATUS_NON_MATCHING_LINES, 2554 DBG_STATUS_INSUFFICIENT_HW_IDS, 2555 DBG_STATUS_DBG_BUS_IN_USE, 2556 DBG_STATUS_INVALID_STORM_DBG_MODE, 2557 DBG_STATUS_OTHER_ENGINE_BB_ONLY, 2558 DBG_STATUS_FILTER_SINGLE_HW_ID, 2559 DBG_STATUS_TRIGGER_SINGLE_HW_ID, 2560 DBG_STATUS_MISSING_TRIGGER_STATE_STORM, 2561 MAX_DBG_STATUS 2562 }; 2563 2564 /* Debug Storms IDs */ 2565 enum dbg_storms { 2566 DBG_TSTORM_ID, 2567 DBG_MSTORM_ID, 2568 DBG_USTORM_ID, 2569 DBG_XSTORM_ID, 2570 DBG_YSTORM_ID, 2571 DBG_PSTORM_ID, 2572 MAX_DBG_STORMS 2573 }; 2574 2575 /* Idle Check data */ 2576 struct idle_chk_data { 2577 u32 buf_size; 2578 u8 buf_size_set; 2579 u8 reserved1; 2580 u16 reserved2; 2581 }; 2582 2583 struct pretend_params { 2584 u8 split_type; 2585 u8 reserved; 2586 u16 split_id; 2587 }; 2588 2589 /* Debug Tools data (per HW function) 2590 */ 2591 struct dbg_tools_data { 2592 struct dbg_grc_data grc; 2593 struct dbg_bus_data bus; 2594 struct idle_chk_data idle_chk; 2595 u8 mode_enable[40]; 2596 u8 block_in_reset[132]; 2597 u8 chip_id; 2598 u8 hw_type; 2599 u8 num_ports; 2600 u8 num_pfs_per_port; 2601 u8 num_vfs; 2602 u8 initialized; 2603 u8 use_dmae; 2604 u8 reserved; 2605 struct pretend_params pretend; 2606 u32 num_regs_read; 2607 }; 2608 2609 /* ILT Clients */ 2610 enum ilt_clients { 2611 ILT_CLI_CDUC, 2612 ILT_CLI_CDUT, 2613 ILT_CLI_QM, 2614 ILT_CLI_TM, 2615 ILT_CLI_SRC, 2616 ILT_CLI_TSDM, 2617 ILT_CLI_RGFS, 2618 ILT_CLI_TGFS, 2619 MAX_ILT_CLIENTS 2620 }; 2621 2622 /********************************/ 2623 /* HSI Init Functions constants */ 2624 /********************************/ 2625 2626 /* Number of VLAN priorities */ 2627 #define NUM_OF_VLAN_PRIORITIES 8 2628 2629 /* BRB RAM init requirements */ 2630 struct init_brb_ram_req { 2631 u32 guranteed_per_tc; 2632 u32 headroom_per_tc; 2633 u32 min_pkt_size; 2634 u32 max_ports_per_engine; 2635 u8 num_active_tcs[MAX_NUM_PORTS]; 2636 }; 2637 2638 /* ETS per-TC init requirements */ 2639 struct init_ets_tc_req { 2640 u8 use_sp; 2641 u8 use_wfq; 2642 u16 weight; 2643 }; 2644 2645 /* ETS init requirements */ 2646 struct init_ets_req { 2647 u32 mtu; 2648 struct init_ets_tc_req tc_req[NUM_OF_TCS]; 2649 }; 2650 2651 /* NIG LB RL init requirements */ 2652 struct init_nig_lb_rl_req { 2653 u16 lb_mac_rate; 2654 u16 lb_rate; 2655 u32 mtu; 2656 u16 tc_rate[NUM_OF_PHYS_TCS]; 2657 }; 2658 2659 /* NIG TC mapping for each priority */ 2660 struct init_nig_pri_tc_map_entry { 2661 u8 tc_id; 2662 u8 valid; 2663 }; 2664 2665 /* NIG priority to TC map init requirements */ 2666 struct init_nig_pri_tc_map_req { 2667 struct init_nig_pri_tc_map_entry pri[NUM_OF_VLAN_PRIORITIES]; 2668 }; 2669 2670 /* QM per global RL init parameters */ 2671 struct init_qm_global_rl_params { 2672 u32 rate_limit; 2673 }; 2674 2675 /* QM per-port init parameters */ 2676 struct init_qm_port_params { 2677 u16 active_phys_tcs; 2678 u16 num_pbf_cmd_lines; 2679 u16 num_btb_blocks; 2680 u8 active; 2681 u8 reserved; 2682 }; 2683 2684 /* QM per-PQ init parameters */ 2685 struct init_qm_pq_params { 2686 u8 vport_id; 2687 u8 tc_id; 2688 u8 wrr_group; 2689 u8 rl_valid; 2690 u16 rl_id; 2691 u8 port_id; 2692 u8 reserved; 2693 }; 2694 2695 /* QM per-vport init parameters */ 2696 struct init_qm_vport_params { 2697 u16 wfq; 2698 u16 first_tx_pq_id[NUM_OF_TCS]; 2699 }; 2700 2701 /**************************************/ 2702 /* Init Tool HSI constants and macros */ 2703 /**************************************/ 2704 2705 /* Width of GRC address in bits (addresses are specified in dwords) */ 2706 #define GRC_ADDR_BITS 23 2707 #define MAX_GRC_ADDR (BIT(GRC_ADDR_BITS) - 1) 2708 2709 /* indicates an init that should be applied to any phase ID */ 2710 #define ANY_PHASE_ID 0xffff 2711 2712 /* Max size in dwords of a zipped array */ 2713 #define MAX_ZIPPED_SIZE 8192 2714 enum chip_ids { 2715 CHIP_BB, 2716 CHIP_K2, 2717 MAX_CHIP_IDS 2718 }; 2719 2720 struct fw_asserts_ram_section { 2721 __le16 section_ram_line_offset; 2722 __le16 section_ram_line_size; 2723 u8 list_dword_offset; 2724 u8 list_element_dword_size; 2725 u8 list_num_elements; 2726 u8 list_next_index_dword_offset; 2727 }; 2728 2729 struct fw_ver_num { 2730 u8 major; 2731 u8 minor; 2732 u8 rev; 2733 u8 eng; 2734 }; 2735 2736 struct fw_ver_info { 2737 __le16 tools_ver; 2738 u8 image_id; 2739 u8 reserved1; 2740 struct fw_ver_num num; 2741 __le32 timestamp; 2742 __le32 reserved2; 2743 }; 2744 2745 struct fw_info { 2746 struct fw_ver_info ver; 2747 struct fw_asserts_ram_section fw_asserts_section; 2748 }; 2749 2750 struct fw_info_location { 2751 __le32 grc_addr; 2752 __le32 size; 2753 }; 2754 2755 enum init_modes { 2756 MODE_RESERVED, 2757 MODE_BB, 2758 MODE_K2, 2759 MODE_ASIC, 2760 MODE_RESERVED2, 2761 MODE_RESERVED3, 2762 MODE_RESERVED4, 2763 MODE_RESERVED5, 2764 MODE_SF, 2765 MODE_MF_SD, 2766 MODE_MF_SI, 2767 MODE_PORTS_PER_ENG_1, 2768 MODE_PORTS_PER_ENG_2, 2769 MODE_PORTS_PER_ENG_4, 2770 MODE_100G, 2771 MODE_RESERVED6, 2772 MODE_RESERVED7, 2773 MAX_INIT_MODES 2774 }; 2775 2776 enum init_phases { 2777 PHASE_ENGINE, 2778 PHASE_PORT, 2779 PHASE_PF, 2780 PHASE_VF, 2781 PHASE_QM_PF, 2782 MAX_INIT_PHASES 2783 }; 2784 2785 enum init_split_types { 2786 SPLIT_TYPE_NONE, 2787 SPLIT_TYPE_PORT, 2788 SPLIT_TYPE_PF, 2789 SPLIT_TYPE_PORT_PF, 2790 SPLIT_TYPE_VF, 2791 MAX_INIT_SPLIT_TYPES 2792 }; 2793 2794 /* Binary buffer header */ 2795 struct bin_buffer_hdr { 2796 u32 offset; 2797 u32 length; 2798 }; 2799 2800 /* Binary init buffer types */ 2801 enum bin_init_buffer_type { 2802 BIN_BUF_INIT_FW_VER_INFO, 2803 BIN_BUF_INIT_CMD, 2804 BIN_BUF_INIT_VAL, 2805 BIN_BUF_INIT_MODE_TREE, 2806 BIN_BUF_INIT_IRO, 2807 BIN_BUF_INIT_OVERLAYS, 2808 MAX_BIN_INIT_BUFFER_TYPE 2809 }; 2810 2811 /* FW overlay buffer header */ 2812 struct fw_overlay_buf_hdr { 2813 u32 data; 2814 #define FW_OVERLAY_BUF_HDR_STORM_ID_MASK 0xFF 2815 #define FW_OVERLAY_BUF_HDR_STORM_ID_SHIFT 0 2816 #define FW_OVERLAY_BUF_HDR_BUF_SIZE_MASK 0xFFFFFF 2817 #define FW_OVERLAY_BUF_HDR_BUF_SIZE_SHIFT 8 2818 }; 2819 2820 /* init array header: raw */ 2821 struct init_array_raw_hdr { 2822 u32 data; 2823 #define INIT_ARRAY_RAW_HDR_TYPE_MASK 0xF 2824 #define INIT_ARRAY_RAW_HDR_TYPE_SHIFT 0 2825 #define INIT_ARRAY_RAW_HDR_PARAMS_MASK 0xFFFFFFF 2826 #define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT 4 2827 }; 2828 2829 /* init array header: standard */ 2830 struct init_array_standard_hdr { 2831 u32 data; 2832 #define INIT_ARRAY_STANDARD_HDR_TYPE_MASK 0xF 2833 #define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT 0 2834 #define INIT_ARRAY_STANDARD_HDR_SIZE_MASK 0xFFFFFFF 2835 #define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT 4 2836 }; 2837 2838 /* init array header: zipped */ 2839 struct init_array_zipped_hdr { 2840 u32 data; 2841 #define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK 0xF 2842 #define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT 0 2843 #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK 0xFFFFFFF 2844 #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT 4 2845 }; 2846 2847 /* init array header: pattern */ 2848 struct init_array_pattern_hdr { 2849 u32 data; 2850 #define INIT_ARRAY_PATTERN_HDR_TYPE_MASK 0xF 2851 #define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT 0 2852 #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK 0xF 2853 #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT 4 2854 #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK 0xFFFFFF 2855 #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT 8 2856 }; 2857 2858 /* init array header union */ 2859 union init_array_hdr { 2860 struct init_array_raw_hdr raw; 2861 struct init_array_standard_hdr standard; 2862 struct init_array_zipped_hdr zipped; 2863 struct init_array_pattern_hdr pattern; 2864 }; 2865 2866 /* init array types */ 2867 enum init_array_types { 2868 INIT_ARR_STANDARD, 2869 INIT_ARR_ZIPPED, 2870 INIT_ARR_PATTERN, 2871 MAX_INIT_ARRAY_TYPES 2872 }; 2873 2874 /* init operation: callback */ 2875 struct init_callback_op { 2876 u32 op_data; 2877 #define INIT_CALLBACK_OP_OP_MASK 0xF 2878 #define INIT_CALLBACK_OP_OP_SHIFT 0 2879 #define INIT_CALLBACK_OP_RESERVED_MASK 0xFFFFFFF 2880 #define INIT_CALLBACK_OP_RESERVED_SHIFT 4 2881 u16 callback_id; 2882 u16 block_id; 2883 }; 2884 2885 /* init operation: delay */ 2886 struct init_delay_op { 2887 u32 op_data; 2888 #define INIT_DELAY_OP_OP_MASK 0xF 2889 #define INIT_DELAY_OP_OP_SHIFT 0 2890 #define INIT_DELAY_OP_RESERVED_MASK 0xFFFFFFF 2891 #define INIT_DELAY_OP_RESERVED_SHIFT 4 2892 u32 delay; 2893 }; 2894 2895 /* init operation: if_mode */ 2896 struct init_if_mode_op { 2897 u32 op_data; 2898 #define INIT_IF_MODE_OP_OP_MASK 0xF 2899 #define INIT_IF_MODE_OP_OP_SHIFT 0 2900 #define INIT_IF_MODE_OP_RESERVED1_MASK 0xFFF 2901 #define INIT_IF_MODE_OP_RESERVED1_SHIFT 4 2902 #define INIT_IF_MODE_OP_CMD_OFFSET_MASK 0xFFFF 2903 #define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT 16 2904 u16 reserved2; 2905 u16 modes_buf_offset; 2906 }; 2907 2908 /* init operation: if_phase */ 2909 struct init_if_phase_op { 2910 u32 op_data; 2911 #define INIT_IF_PHASE_OP_OP_MASK 0xF 2912 #define INIT_IF_PHASE_OP_OP_SHIFT 0 2913 #define INIT_IF_PHASE_OP_RESERVED1_MASK 0xFFF 2914 #define INIT_IF_PHASE_OP_RESERVED1_SHIFT 4 2915 #define INIT_IF_PHASE_OP_CMD_OFFSET_MASK 0xFFFF 2916 #define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT 16 2917 u32 phase_data; 2918 #define INIT_IF_PHASE_OP_PHASE_MASK 0xFF 2919 #define INIT_IF_PHASE_OP_PHASE_SHIFT 0 2920 #define INIT_IF_PHASE_OP_RESERVED2_MASK 0xFF 2921 #define INIT_IF_PHASE_OP_RESERVED2_SHIFT 8 2922 #define INIT_IF_PHASE_OP_PHASE_ID_MASK 0xFFFF 2923 #define INIT_IF_PHASE_OP_PHASE_ID_SHIFT 16 2924 }; 2925 2926 /* init mode operators */ 2927 enum init_mode_ops { 2928 INIT_MODE_OP_NOT, 2929 INIT_MODE_OP_OR, 2930 INIT_MODE_OP_AND, 2931 MAX_INIT_MODE_OPS 2932 }; 2933 2934 /* init operation: raw */ 2935 struct init_raw_op { 2936 u32 op_data; 2937 #define INIT_RAW_OP_OP_MASK 0xF 2938 #define INIT_RAW_OP_OP_SHIFT 0 2939 #define INIT_RAW_OP_PARAM1_MASK 0xFFFFFFF 2940 #define INIT_RAW_OP_PARAM1_SHIFT 4 2941 u32 param2; 2942 }; 2943 2944 /* init array params */ 2945 struct init_op_array_params { 2946 u16 size; 2947 u16 offset; 2948 }; 2949 2950 /* Write init operation arguments */ 2951 union init_write_args { 2952 u32 inline_val; 2953 u32 zeros_count; 2954 u32 array_offset; 2955 struct init_op_array_params runtime; 2956 }; 2957 2958 /* init operation: write */ 2959 struct init_write_op { 2960 u32 data; 2961 #define INIT_WRITE_OP_OP_MASK 0xF 2962 #define INIT_WRITE_OP_OP_SHIFT 0 2963 #define INIT_WRITE_OP_SOURCE_MASK 0x7 2964 #define INIT_WRITE_OP_SOURCE_SHIFT 4 2965 #define INIT_WRITE_OP_RESERVED_MASK 0x1 2966 #define INIT_WRITE_OP_RESERVED_SHIFT 7 2967 #define INIT_WRITE_OP_WIDE_BUS_MASK 0x1 2968 #define INIT_WRITE_OP_WIDE_BUS_SHIFT 8 2969 #define INIT_WRITE_OP_ADDRESS_MASK 0x7FFFFF 2970 #define INIT_WRITE_OP_ADDRESS_SHIFT 9 2971 union init_write_args args; 2972 }; 2973 2974 /* init operation: read */ 2975 struct init_read_op { 2976 u32 op_data; 2977 #define INIT_READ_OP_OP_MASK 0xF 2978 #define INIT_READ_OP_OP_SHIFT 0 2979 #define INIT_READ_OP_POLL_TYPE_MASK 0xF 2980 #define INIT_READ_OP_POLL_TYPE_SHIFT 4 2981 #define INIT_READ_OP_RESERVED_MASK 0x1 2982 #define INIT_READ_OP_RESERVED_SHIFT 8 2983 #define INIT_READ_OP_ADDRESS_MASK 0x7FFFFF 2984 #define INIT_READ_OP_ADDRESS_SHIFT 9 2985 u32 expected_val; 2986 }; 2987 2988 /* Init operations union */ 2989 union init_op { 2990 struct init_raw_op raw; 2991 struct init_write_op write; 2992 struct init_read_op read; 2993 struct init_if_mode_op if_mode; 2994 struct init_if_phase_op if_phase; 2995 struct init_callback_op callback; 2996 struct init_delay_op delay; 2997 }; 2998 2999 /* Init command operation types */ 3000 enum init_op_types { 3001 INIT_OP_READ, 3002 INIT_OP_WRITE, 3003 INIT_OP_IF_MODE, 3004 INIT_OP_IF_PHASE, 3005 INIT_OP_DELAY, 3006 INIT_OP_CALLBACK, 3007 MAX_INIT_OP_TYPES 3008 }; 3009 3010 /* init polling types */ 3011 enum init_poll_types { 3012 INIT_POLL_NONE, 3013 INIT_POLL_EQ, 3014 INIT_POLL_OR, 3015 INIT_POLL_AND, 3016 MAX_INIT_POLL_TYPES 3017 }; 3018 3019 /* init source types */ 3020 enum init_source_types { 3021 INIT_SRC_INLINE, 3022 INIT_SRC_ZEROS, 3023 INIT_SRC_ARRAY, 3024 INIT_SRC_RUNTIME, 3025 MAX_INIT_SOURCE_TYPES 3026 }; 3027 3028 /* Internal RAM Offsets macro data */ 3029 struct iro { 3030 u32 base; 3031 u16 m1; 3032 u16 m2; 3033 u16 m3; 3034 u16 size; 3035 }; 3036 3037 /***************************** Public Functions *******************************/ 3038 3039 /** 3040 * @brief qed_dbg_set_bin_ptr - Sets a pointer to the binary data with debug 3041 * arrays. 3042 * 3043 * @param p_hwfn - HW device data 3044 * @param bin_ptr - a pointer to the binary data with debug arrays. 3045 */ 3046 enum dbg_status qed_dbg_set_bin_ptr(struct qed_hwfn *p_hwfn, 3047 const u8 * const bin_ptr); 3048 3049 /** 3050 * @brief qed_read_regs - Reads registers into a buffer (using GRC). 3051 * 3052 * @param p_hwfn - HW device data 3053 * @param p_ptt - Ptt window used for writing the registers. 3054 * @param buf - Destination buffer. 3055 * @param addr - Source GRC address in dwords. 3056 * @param len - Number of registers to read. 3057 */ 3058 void qed_read_regs(struct qed_hwfn *p_hwfn, 3059 struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len); 3060 3061 /** 3062 * @brief qed_read_fw_info - Reads FW info from the chip. 3063 * 3064 * The FW info contains FW-related information, such as the FW version, 3065 * FW image (main/L2B/kuku), FW timestamp, etc. 3066 * The FW info is read from the internal RAM of the first Storm that is not in 3067 * reset. 3068 * 3069 * @param p_hwfn - HW device data 3070 * @param p_ptt - Ptt window used for writing the registers. 3071 * @param fw_info - Out: a pointer to write the FW info into. 3072 * 3073 * @return true if the FW info was read successfully from one of the Storms, 3074 * or false if all Storms are in reset. 3075 */ 3076 bool qed_read_fw_info(struct qed_hwfn *p_hwfn, 3077 struct qed_ptt *p_ptt, struct fw_info *fw_info); 3078 /** 3079 * @brief qed_dbg_grc_config - Sets the value of a GRC parameter. 3080 * 3081 * @param p_hwfn - HW device data 3082 * @param grc_param - GRC parameter 3083 * @param val - Value to set. 3084 * 3085 * @return error if one of the following holds: 3086 * - the version wasn't set 3087 * - grc_param is invalid 3088 * - val is outside the allowed boundaries 3089 */ 3090 enum dbg_status qed_dbg_grc_config(struct qed_hwfn *p_hwfn, 3091 enum dbg_grc_params grc_param, u32 val); 3092 3093 /** 3094 * @brief qed_dbg_grc_set_params_default - Reverts all GRC parameters to their 3095 * default value. 3096 * 3097 * @param p_hwfn - HW device data 3098 */ 3099 void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn); 3100 /** 3101 * @brief qed_dbg_grc_get_dump_buf_size - Returns the required buffer size for 3102 * GRC Dump. 3103 * 3104 * @param p_hwfn - HW device data 3105 * @param p_ptt - Ptt window used for writing the registers. 3106 * @param buf_size - OUT: required buffer size (in dwords) for the GRC Dump 3107 * data. 3108 * 3109 * @return error if one of the following holds: 3110 * - the version wasn't set 3111 * Otherwise, returns ok. 3112 */ 3113 enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3114 struct qed_ptt *p_ptt, 3115 u32 *buf_size); 3116 3117 /** 3118 * @brief qed_dbg_grc_dump - Dumps GRC data into the specified buffer. 3119 * 3120 * @param p_hwfn - HW device data 3121 * @param p_ptt - Ptt window used for writing the registers. 3122 * @param dump_buf - Pointer to write the collected GRC data into. 3123 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3124 * @param num_dumped_dwords - OUT: number of dumped dwords. 3125 * 3126 * @return error if one of the following holds: 3127 * - the version wasn't set 3128 * - the specified dump buffer is too small 3129 * Otherwise, returns ok. 3130 */ 3131 enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn, 3132 struct qed_ptt *p_ptt, 3133 u32 *dump_buf, 3134 u32 buf_size_in_dwords, 3135 u32 *num_dumped_dwords); 3136 3137 /** 3138 * @brief qed_dbg_idle_chk_get_dump_buf_size - Returns the required buffer size 3139 * for idle check results. 3140 * 3141 * @param p_hwfn - HW device data 3142 * @param p_ptt - Ptt window used for writing the registers. 3143 * @param buf_size - OUT: required buffer size (in dwords) for the idle check 3144 * data. 3145 * 3146 * @return error if one of the following holds: 3147 * - the version wasn't set 3148 * Otherwise, returns ok. 3149 */ 3150 enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3151 struct qed_ptt *p_ptt, 3152 u32 *buf_size); 3153 3154 /** 3155 * @brief qed_dbg_idle_chk_dump - Performs idle check and writes the results 3156 * into the specified buffer. 3157 * 3158 * @param p_hwfn - HW device data 3159 * @param p_ptt - Ptt window used for writing the registers. 3160 * @param dump_buf - Pointer to write the idle check data into. 3161 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3162 * @param num_dumped_dwords - OUT: number of dumped dwords. 3163 * 3164 * @return error if one of the following holds: 3165 * - the version wasn't set 3166 * - the specified buffer is too small 3167 * Otherwise, returns ok. 3168 */ 3169 enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn, 3170 struct qed_ptt *p_ptt, 3171 u32 *dump_buf, 3172 u32 buf_size_in_dwords, 3173 u32 *num_dumped_dwords); 3174 3175 /** 3176 * @brief qed_dbg_mcp_trace_get_dump_buf_size - Returns the required buffer size 3177 * for mcp trace results. 3178 * 3179 * @param p_hwfn - HW device data 3180 * @param p_ptt - Ptt window used for writing the registers. 3181 * @param buf_size - OUT: required buffer size (in dwords) for mcp trace data. 3182 * 3183 * @return error if one of the following holds: 3184 * - the version wasn't set 3185 * - the trace data in MCP scratchpad contain an invalid signature 3186 * - the bundle ID in NVRAM is invalid 3187 * - the trace meta data cannot be found (in NVRAM or image file) 3188 * Otherwise, returns ok. 3189 */ 3190 enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3191 struct qed_ptt *p_ptt, 3192 u32 *buf_size); 3193 3194 /** 3195 * @brief qed_dbg_mcp_trace_dump - Performs mcp trace and writes the results 3196 * into the specified buffer. 3197 * 3198 * @param p_hwfn - HW device data 3199 * @param p_ptt - Ptt window used for writing the registers. 3200 * @param dump_buf - Pointer to write the mcp trace data into. 3201 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3202 * @param num_dumped_dwords - OUT: number of dumped dwords. 3203 * 3204 * @return error if one of the following holds: 3205 * - the version wasn't set 3206 * - the specified buffer is too small 3207 * - the trace data in MCP scratchpad contain an invalid signature 3208 * - the bundle ID in NVRAM is invalid 3209 * - the trace meta data cannot be found (in NVRAM or image file) 3210 * - the trace meta data cannot be read (from NVRAM or image file) 3211 * Otherwise, returns ok. 3212 */ 3213 enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn, 3214 struct qed_ptt *p_ptt, 3215 u32 *dump_buf, 3216 u32 buf_size_in_dwords, 3217 u32 *num_dumped_dwords); 3218 3219 /** 3220 * @brief qed_dbg_reg_fifo_get_dump_buf_size - Returns the required buffer size 3221 * for grc trace fifo results. 3222 * 3223 * @param p_hwfn - HW device data 3224 * @param p_ptt - Ptt window used for writing the registers. 3225 * @param buf_size - OUT: required buffer size (in dwords) for reg fifo data. 3226 * 3227 * @return error if one of the following holds: 3228 * - the version wasn't set 3229 * Otherwise, returns ok. 3230 */ 3231 enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3232 struct qed_ptt *p_ptt, 3233 u32 *buf_size); 3234 3235 /** 3236 * @brief qed_dbg_reg_fifo_dump - Reads the reg fifo and writes the results into 3237 * the specified buffer. 3238 * 3239 * @param p_hwfn - HW device data 3240 * @param p_ptt - Ptt window used for writing the registers. 3241 * @param dump_buf - Pointer to write the reg fifo data into. 3242 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3243 * @param num_dumped_dwords - OUT: number of dumped dwords. 3244 * 3245 * @return error if one of the following holds: 3246 * - the version wasn't set 3247 * - the specified buffer is too small 3248 * - DMAE transaction failed 3249 * Otherwise, returns ok. 3250 */ 3251 enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn, 3252 struct qed_ptt *p_ptt, 3253 u32 *dump_buf, 3254 u32 buf_size_in_dwords, 3255 u32 *num_dumped_dwords); 3256 3257 /** 3258 * @brief qed_dbg_igu_fifo_get_dump_buf_size - Returns the required buffer size 3259 * for the IGU fifo results. 3260 * 3261 * @param p_hwfn - HW device data 3262 * @param p_ptt - Ptt window used for writing the registers. 3263 * @param buf_size - OUT: required buffer size (in dwords) for the IGU fifo 3264 * data. 3265 * 3266 * @return error if one of the following holds: 3267 * - the version wasn't set 3268 * Otherwise, returns ok. 3269 */ 3270 enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3271 struct qed_ptt *p_ptt, 3272 u32 *buf_size); 3273 3274 /** 3275 * @brief qed_dbg_igu_fifo_dump - Reads the IGU fifo and writes the results into 3276 * the specified buffer. 3277 * 3278 * @param p_hwfn - HW device data 3279 * @param p_ptt - Ptt window used for writing the registers. 3280 * @param dump_buf - Pointer to write the IGU fifo data into. 3281 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3282 * @param num_dumped_dwords - OUT: number of dumped dwords. 3283 * 3284 * @return error if one of the following holds: 3285 * - the version wasn't set 3286 * - the specified buffer is too small 3287 * - DMAE transaction failed 3288 * Otherwise, returns ok. 3289 */ 3290 enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn, 3291 struct qed_ptt *p_ptt, 3292 u32 *dump_buf, 3293 u32 buf_size_in_dwords, 3294 u32 *num_dumped_dwords); 3295 3296 /** 3297 * @brief qed_dbg_protection_override_get_dump_buf_size - Returns the required 3298 * buffer size for protection override window results. 3299 * 3300 * @param p_hwfn - HW device data 3301 * @param p_ptt - Ptt window used for writing the registers. 3302 * @param buf_size - OUT: required buffer size (in dwords) for protection 3303 * override data. 3304 * 3305 * @return error if one of the following holds: 3306 * - the version wasn't set 3307 * Otherwise, returns ok. 3308 */ 3309 enum dbg_status 3310 qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3311 struct qed_ptt *p_ptt, 3312 u32 *buf_size); 3313 /** 3314 * @brief qed_dbg_protection_override_dump - Reads protection override window 3315 * entries and writes the results into the specified buffer. 3316 * 3317 * @param p_hwfn - HW device data 3318 * @param p_ptt - Ptt window used for writing the registers. 3319 * @param dump_buf - Pointer to write the protection override data into. 3320 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3321 * @param num_dumped_dwords - OUT: number of dumped dwords. 3322 * 3323 * @return error if one of the following holds: 3324 * - the version wasn't set 3325 * - the specified buffer is too small 3326 * - DMAE transaction failed 3327 * Otherwise, returns ok. 3328 */ 3329 enum dbg_status qed_dbg_protection_override_dump(struct qed_hwfn *p_hwfn, 3330 struct qed_ptt *p_ptt, 3331 u32 *dump_buf, 3332 u32 buf_size_in_dwords, 3333 u32 *num_dumped_dwords); 3334 /** 3335 * @brief qed_dbg_fw_asserts_get_dump_buf_size - Returns the required buffer 3336 * size for FW Asserts results. 3337 * 3338 * @param p_hwfn - HW device data 3339 * @param p_ptt - Ptt window used for writing the registers. 3340 * @param buf_size - OUT: required buffer size (in dwords) for FW Asserts data. 3341 * 3342 * @return error if one of the following holds: 3343 * - the version wasn't set 3344 * Otherwise, returns ok. 3345 */ 3346 enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn, 3347 struct qed_ptt *p_ptt, 3348 u32 *buf_size); 3349 /** 3350 * @brief qed_dbg_fw_asserts_dump - Reads the FW Asserts and writes the results 3351 * into the specified buffer. 3352 * 3353 * @param p_hwfn - HW device data 3354 * @param p_ptt - Ptt window used for writing the registers. 3355 * @param dump_buf - Pointer to write the FW Asserts data into. 3356 * @param buf_size_in_dwords - Size of the specified buffer in dwords. 3357 * @param num_dumped_dwords - OUT: number of dumped dwords. 3358 * 3359 * @return error if one of the following holds: 3360 * - the version wasn't set 3361 * - the specified buffer is too small 3362 * Otherwise, returns ok. 3363 */ 3364 enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn, 3365 struct qed_ptt *p_ptt, 3366 u32 *dump_buf, 3367 u32 buf_size_in_dwords, 3368 u32 *num_dumped_dwords); 3369 3370 /** 3371 * @brief qed_dbg_read_attn - Reads the attention registers of the specified 3372 * block and type, and writes the results into the specified buffer. 3373 * 3374 * @param p_hwfn - HW device data 3375 * @param p_ptt - Ptt window used for writing the registers. 3376 * @param block - Block ID. 3377 * @param attn_type - Attention type. 3378 * @param clear_status - Indicates if the attention status should be cleared. 3379 * @param results - OUT: Pointer to write the read results into 3380 * 3381 * @return error if one of the following holds: 3382 * - the version wasn't set 3383 * Otherwise, returns ok. 3384 */ 3385 enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn, 3386 struct qed_ptt *p_ptt, 3387 enum block_id block, 3388 enum dbg_attn_type attn_type, 3389 bool clear_status, 3390 struct dbg_attn_block_result *results); 3391 3392 /** 3393 * @brief qed_dbg_print_attn - Prints attention registers values in the 3394 * specified results struct. 3395 * 3396 * @param p_hwfn 3397 * @param results - Pointer to the attention read results 3398 * 3399 * @return error if one of the following holds: 3400 * - the version wasn't set 3401 * Otherwise, returns ok. 3402 */ 3403 enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn, 3404 struct dbg_attn_block_result *results); 3405 3406 /******************************* Data Types **********************************/ 3407 3408 struct mcp_trace_format { 3409 u32 data; 3410 #define MCP_TRACE_FORMAT_MODULE_MASK 0x0000ffff 3411 #define MCP_TRACE_FORMAT_MODULE_OFFSET 0 3412 #define MCP_TRACE_FORMAT_LEVEL_MASK 0x00030000 3413 #define MCP_TRACE_FORMAT_LEVEL_OFFSET 16 3414 #define MCP_TRACE_FORMAT_P1_SIZE_MASK 0x000c0000 3415 #define MCP_TRACE_FORMAT_P1_SIZE_OFFSET 18 3416 #define MCP_TRACE_FORMAT_P2_SIZE_MASK 0x00300000 3417 #define MCP_TRACE_FORMAT_P2_SIZE_OFFSET 20 3418 #define MCP_TRACE_FORMAT_P3_SIZE_MASK 0x00c00000 3419 #define MCP_TRACE_FORMAT_P3_SIZE_OFFSET 22 3420 #define MCP_TRACE_FORMAT_LEN_MASK 0xff000000 3421 #define MCP_TRACE_FORMAT_LEN_OFFSET 24 3422 3423 char *format_str; 3424 }; 3425 3426 /* MCP Trace Meta data structure */ 3427 struct mcp_trace_meta { 3428 u32 modules_num; 3429 char **modules; 3430 u32 formats_num; 3431 struct mcp_trace_format *formats; 3432 bool is_allocated; 3433 }; 3434 3435 /* Debug Tools user data */ 3436 struct dbg_tools_user_data { 3437 struct mcp_trace_meta mcp_trace_meta; 3438 const u32 *mcp_trace_user_meta_buf; 3439 }; 3440 3441 /******************************** Constants **********************************/ 3442 3443 #define MAX_NAME_LEN 16 3444 3445 /***************************** Public Functions *******************************/ 3446 3447 /** 3448 * @brief qed_dbg_user_set_bin_ptr - Sets a pointer to the binary data with 3449 * debug arrays. 3450 * 3451 * @param p_hwfn - HW device data 3452 * @param bin_ptr - a pointer to the binary data with debug arrays. 3453 */ 3454 enum dbg_status qed_dbg_user_set_bin_ptr(struct qed_hwfn *p_hwfn, 3455 const u8 * const bin_ptr); 3456 3457 /** 3458 * @brief qed_dbg_alloc_user_data - Allocates user debug data. 3459 * 3460 * @param p_hwfn - HW device data 3461 * @param user_data_ptr - OUT: a pointer to the allocated memory. 3462 */ 3463 enum dbg_status qed_dbg_alloc_user_data(struct qed_hwfn *p_hwfn, 3464 void **user_data_ptr); 3465 3466 /** 3467 * @brief qed_dbg_get_status_str - Returns a string for the specified status. 3468 * 3469 * @param status - a debug status code. 3470 * 3471 * @return a string for the specified status 3472 */ 3473 const char *qed_dbg_get_status_str(enum dbg_status status); 3474 3475 /** 3476 * @brief qed_get_idle_chk_results_buf_size - Returns the required buffer size 3477 * for idle check results (in bytes). 3478 * 3479 * @param p_hwfn - HW device data 3480 * @param dump_buf - idle check dump buffer. 3481 * @param num_dumped_dwords - number of dwords that were dumped. 3482 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3483 * results. 3484 * 3485 * @return error if the parsing fails, ok otherwise. 3486 */ 3487 enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn, 3488 u32 *dump_buf, 3489 u32 num_dumped_dwords, 3490 u32 *results_buf_size); 3491 /** 3492 * @brief qed_print_idle_chk_results - Prints idle check results 3493 * 3494 * @param p_hwfn - HW device data 3495 * @param dump_buf - idle check dump buffer. 3496 * @param num_dumped_dwords - number of dwords that were dumped. 3497 * @param results_buf - buffer for printing the idle check results. 3498 * @param num_errors - OUT: number of errors found in idle check. 3499 * @param num_warnings - OUT: number of warnings found in idle check. 3500 * 3501 * @return error if the parsing fails, ok otherwise. 3502 */ 3503 enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn, 3504 u32 *dump_buf, 3505 u32 num_dumped_dwords, 3506 char *results_buf, 3507 u32 *num_errors, 3508 u32 *num_warnings); 3509 3510 /** 3511 * @brief qed_dbg_mcp_trace_set_meta_data - Sets the MCP Trace meta data. 3512 * 3513 * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to 3514 * no NVRAM access). 3515 * 3516 * @param data - pointer to MCP Trace meta data 3517 * @param size - size of MCP Trace meta data in dwords 3518 */ 3519 void qed_dbg_mcp_trace_set_meta_data(struct qed_hwfn *p_hwfn, 3520 const u32 *meta_buf); 3521 3522 /** 3523 * @brief qed_get_mcp_trace_results_buf_size - Returns the required buffer size 3524 * for MCP Trace results (in bytes). 3525 * 3526 * @param p_hwfn - HW device data 3527 * @param dump_buf - MCP Trace dump buffer. 3528 * @param num_dumped_dwords - number of dwords that were dumped. 3529 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3530 * results. 3531 * 3532 * @return error if the parsing fails, ok otherwise. 3533 */ 3534 enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn, 3535 u32 *dump_buf, 3536 u32 num_dumped_dwords, 3537 u32 *results_buf_size); 3538 3539 /** 3540 * @brief qed_print_mcp_trace_results - Prints MCP Trace results 3541 * 3542 * @param p_hwfn - HW device data 3543 * @param dump_buf - mcp trace dump buffer, starting from the header. 3544 * @param num_dumped_dwords - number of dwords that were dumped. 3545 * @param results_buf - buffer for printing the mcp trace results. 3546 * 3547 * @return error if the parsing fails, ok otherwise. 3548 */ 3549 enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn, 3550 u32 *dump_buf, 3551 u32 num_dumped_dwords, 3552 char *results_buf); 3553 3554 /** 3555 * @brief qed_print_mcp_trace_results_cont - Prints MCP Trace results, and 3556 * keeps the MCP trace meta data allocated, to support continuous MCP Trace 3557 * parsing. After the continuous parsing ends, mcp_trace_free_meta_data should 3558 * be called to free the meta data. 3559 * 3560 * @param p_hwfn - HW device data 3561 * @param dump_buf - mcp trace dump buffer, starting from the header. 3562 * @param results_buf - buffer for printing the mcp trace results. 3563 * 3564 * @return error if the parsing fails, ok otherwise. 3565 */ 3566 enum dbg_status qed_print_mcp_trace_results_cont(struct qed_hwfn *p_hwfn, 3567 u32 *dump_buf, 3568 char *results_buf); 3569 3570 /** 3571 * @brief print_mcp_trace_line - Prints MCP Trace results for a single line 3572 * 3573 * @param p_hwfn - HW device data 3574 * @param dump_buf - mcp trace dump buffer, starting from the header. 3575 * @param num_dumped_bytes - number of bytes that were dumped. 3576 * @param results_buf - buffer for printing the mcp trace results. 3577 * 3578 * @return error if the parsing fails, ok otherwise. 3579 */ 3580 enum dbg_status qed_print_mcp_trace_line(struct qed_hwfn *p_hwfn, 3581 u8 *dump_buf, 3582 u32 num_dumped_bytes, 3583 char *results_buf); 3584 3585 /** 3586 * @brief mcp_trace_free_meta_data - Frees the MCP Trace meta data. 3587 * Should be called after continuous MCP Trace parsing. 3588 * 3589 * @param p_hwfn - HW device data 3590 */ 3591 void qed_mcp_trace_free_meta_data(struct qed_hwfn *p_hwfn); 3592 3593 /** 3594 * @brief qed_get_reg_fifo_results_buf_size - Returns the required buffer size 3595 * for reg_fifo results (in bytes). 3596 * 3597 * @param p_hwfn - HW device data 3598 * @param dump_buf - reg fifo dump buffer. 3599 * @param num_dumped_dwords - number of dwords that were dumped. 3600 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3601 * results. 3602 * 3603 * @return error if the parsing fails, ok otherwise. 3604 */ 3605 enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 3606 u32 *dump_buf, 3607 u32 num_dumped_dwords, 3608 u32 *results_buf_size); 3609 3610 /** 3611 * @brief qed_print_reg_fifo_results - Prints reg fifo results 3612 * 3613 * @param p_hwfn - HW device data 3614 * @param dump_buf - reg fifo dump buffer, starting from the header. 3615 * @param num_dumped_dwords - number of dwords that were dumped. 3616 * @param results_buf - buffer for printing the reg fifo results. 3617 * 3618 * @return error if the parsing fails, ok otherwise. 3619 */ 3620 enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn, 3621 u32 *dump_buf, 3622 u32 num_dumped_dwords, 3623 char *results_buf); 3624 3625 /** 3626 * @brief qed_get_igu_fifo_results_buf_size - Returns the required buffer size 3627 * for igu_fifo results (in bytes). 3628 * 3629 * @param p_hwfn - HW device data 3630 * @param dump_buf - IGU fifo dump buffer. 3631 * @param num_dumped_dwords - number of dwords that were dumped. 3632 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3633 * results. 3634 * 3635 * @return error if the parsing fails, ok otherwise. 3636 */ 3637 enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn, 3638 u32 *dump_buf, 3639 u32 num_dumped_dwords, 3640 u32 *results_buf_size); 3641 3642 /** 3643 * @brief qed_print_igu_fifo_results - Prints IGU fifo results 3644 * 3645 * @param p_hwfn - HW device data 3646 * @param dump_buf - IGU fifo dump buffer, starting from the header. 3647 * @param num_dumped_dwords - number of dwords that were dumped. 3648 * @param results_buf - buffer for printing the IGU fifo results. 3649 * 3650 * @return error if the parsing fails, ok otherwise. 3651 */ 3652 enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn, 3653 u32 *dump_buf, 3654 u32 num_dumped_dwords, 3655 char *results_buf); 3656 3657 /** 3658 * @brief qed_get_protection_override_results_buf_size - Returns the required 3659 * buffer size for protection override results (in bytes). 3660 * 3661 * @param p_hwfn - HW device data 3662 * @param dump_buf - protection override dump buffer. 3663 * @param num_dumped_dwords - number of dwords that were dumped. 3664 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3665 * results. 3666 * 3667 * @return error if the parsing fails, ok otherwise. 3668 */ 3669 enum dbg_status 3670 qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn, 3671 u32 *dump_buf, 3672 u32 num_dumped_dwords, 3673 u32 *results_buf_size); 3674 3675 /** 3676 * @brief qed_print_protection_override_results - Prints protection override 3677 * results. 3678 * 3679 * @param p_hwfn - HW device data 3680 * @param dump_buf - protection override dump buffer, starting from the header. 3681 * @param num_dumped_dwords - number of dwords that were dumped. 3682 * @param results_buf - buffer for printing the reg fifo results. 3683 * 3684 * @return error if the parsing fails, ok otherwise. 3685 */ 3686 enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn, 3687 u32 *dump_buf, 3688 u32 num_dumped_dwords, 3689 char *results_buf); 3690 3691 /** 3692 * @brief qed_get_fw_asserts_results_buf_size - Returns the required buffer size 3693 * for FW Asserts results (in bytes). 3694 * 3695 * @param p_hwfn - HW device data 3696 * @param dump_buf - FW Asserts dump buffer. 3697 * @param num_dumped_dwords - number of dwords that were dumped. 3698 * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed 3699 * results. 3700 * 3701 * @return error if the parsing fails, ok otherwise. 3702 */ 3703 enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn, 3704 u32 *dump_buf, 3705 u32 num_dumped_dwords, 3706 u32 *results_buf_size); 3707 3708 /** 3709 * @brief qed_print_fw_asserts_results - Prints FW Asserts results 3710 * 3711 * @param p_hwfn - HW device data 3712 * @param dump_buf - FW Asserts dump buffer, starting from the header. 3713 * @param num_dumped_dwords - number of dwords that were dumped. 3714 * @param results_buf - buffer for printing the FW Asserts results. 3715 * 3716 * @return error if the parsing fails, ok otherwise. 3717 */ 3718 enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn, 3719 u32 *dump_buf, 3720 u32 num_dumped_dwords, 3721 char *results_buf); 3722 3723 /** 3724 * @brief qed_dbg_parse_attn - Parses and prints attention registers values in 3725 * the specified results struct. 3726 * 3727 * @param p_hwfn - HW device data 3728 * @param results - Pointer to the attention read results 3729 * 3730 * @return error if one of the following holds: 3731 * - the version wasn't set 3732 * Otherwise, returns ok. 3733 */ 3734 enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn, 3735 struct dbg_attn_block_result *results); 3736 3737 /* Win 2 */ 3738 #define GTT_BAR0_MAP_REG_IGU_CMD 0x00f000UL 3739 3740 /* Win 3 */ 3741 #define GTT_BAR0_MAP_REG_TSDM_RAM 0x010000UL 3742 3743 /* Win 4 */ 3744 #define GTT_BAR0_MAP_REG_MSDM_RAM 0x011000UL 3745 3746 /* Win 5 */ 3747 #define GTT_BAR0_MAP_REG_MSDM_RAM_1024 0x012000UL 3748 3749 /* Win 6 */ 3750 #define GTT_BAR0_MAP_REG_MSDM_RAM_2048 0x013000UL 3751 3752 /* Win 7 */ 3753 #define GTT_BAR0_MAP_REG_USDM_RAM 0x014000UL 3754 3755 /* Win 8 */ 3756 #define GTT_BAR0_MAP_REG_USDM_RAM_1024 0x015000UL 3757 3758 /* Win 9 */ 3759 #define GTT_BAR0_MAP_REG_USDM_RAM_2048 0x016000UL 3760 3761 /* Win 10 */ 3762 #define GTT_BAR0_MAP_REG_XSDM_RAM 0x017000UL 3763 3764 /* Win 11 */ 3765 #define GTT_BAR0_MAP_REG_XSDM_RAM_1024 0x018000UL 3766 3767 /* Win 12 */ 3768 #define GTT_BAR0_MAP_REG_YSDM_RAM 0x019000UL 3769 3770 /* Win 13 */ 3771 #define GTT_BAR0_MAP_REG_PSDM_RAM 0x01a000UL 3772 3773 /** 3774 * @brief qed_qm_pf_mem_size - prepare QM ILT sizes 3775 * 3776 * Returns the required host memory size in 4KB units. 3777 * Must be called before all QM init HSI functions. 3778 * 3779 * @param num_pf_cids - number of connections used by this PF 3780 * @param num_vf_cids - number of connections used by VFs of this PF 3781 * @param num_tids - number of tasks used by this PF 3782 * @param num_pf_pqs - number of PQs used by this PF 3783 * @param num_vf_pqs - number of PQs used by VFs of this PF 3784 * 3785 * @return The required host memory size in 4KB units. 3786 */ 3787 u32 qed_qm_pf_mem_size(u32 num_pf_cids, 3788 u32 num_vf_cids, 3789 u32 num_tids, u16 num_pf_pqs, u16 num_vf_pqs); 3790 3791 struct qed_qm_common_rt_init_params { 3792 u8 max_ports_per_engine; 3793 u8 max_phys_tcs_per_port; 3794 bool pf_rl_en; 3795 bool pf_wfq_en; 3796 bool global_rl_en; 3797 bool vport_wfq_en; 3798 struct init_qm_port_params *port_params; 3799 }; 3800 3801 int qed_qm_common_rt_init(struct qed_hwfn *p_hwfn, 3802 struct qed_qm_common_rt_init_params *p_params); 3803 3804 struct qed_qm_pf_rt_init_params { 3805 u8 port_id; 3806 u8 pf_id; 3807 u8 max_phys_tcs_per_port; 3808 bool is_pf_loading; 3809 u32 num_pf_cids; 3810 u32 num_vf_cids; 3811 u32 num_tids; 3812 u16 start_pq; 3813 u16 num_pf_pqs; 3814 u16 num_vf_pqs; 3815 u16 start_vport; 3816 u16 num_vports; 3817 u16 pf_wfq; 3818 u32 pf_rl; 3819 struct init_qm_pq_params *pq_params; 3820 struct init_qm_vport_params *vport_params; 3821 }; 3822 3823 int qed_qm_pf_rt_init(struct qed_hwfn *p_hwfn, 3824 struct qed_ptt *p_ptt, 3825 struct qed_qm_pf_rt_init_params *p_params); 3826 3827 /** 3828 * @brief qed_init_pf_wfq - Initializes the WFQ weight of the specified PF 3829 * 3830 * @param p_hwfn 3831 * @param p_ptt - ptt window used for writing the registers 3832 * @param pf_id - PF ID 3833 * @param pf_wfq - WFQ weight. Must be non-zero. 3834 * 3835 * @return 0 on success, -1 on error. 3836 */ 3837 int qed_init_pf_wfq(struct qed_hwfn *p_hwfn, 3838 struct qed_ptt *p_ptt, u8 pf_id, u16 pf_wfq); 3839 3840 /** 3841 * @brief qed_init_pf_rl - Initializes the rate limit of the specified PF 3842 * 3843 * @param p_hwfn 3844 * @param p_ptt - ptt window used for writing the registers 3845 * @param pf_id - PF ID 3846 * @param pf_rl - rate limit in Mb/sec units 3847 * 3848 * @return 0 on success, -1 on error. 3849 */ 3850 int qed_init_pf_rl(struct qed_hwfn *p_hwfn, 3851 struct qed_ptt *p_ptt, u8 pf_id, u32 pf_rl); 3852 3853 /** 3854 * @brief qed_init_vport_wfq Initializes the WFQ weight of the specified VPORT 3855 * 3856 * @param p_hwfn 3857 * @param p_ptt - ptt window used for writing the registers 3858 * @param first_tx_pq_id- An array containing the first Tx PQ ID associated 3859 * with the VPORT for each TC. This array is filled by 3860 * qed_qm_pf_rt_init 3861 * @param vport_wfq - WFQ weight. Must be non-zero. 3862 * 3863 * @return 0 on success, -1 on error. 3864 */ 3865 int qed_init_vport_wfq(struct qed_hwfn *p_hwfn, 3866 struct qed_ptt *p_ptt, 3867 u16 first_tx_pq_id[NUM_OF_TCS], u16 wfq); 3868 3869 /** 3870 * @brief qed_init_global_rl - Initializes the rate limit of the specified 3871 * rate limiter 3872 * 3873 * @param p_hwfn 3874 * @param p_ptt - ptt window used for writing the registers 3875 * @param rl_id - RL ID 3876 * @param rate_limit - rate limit in Mb/sec units 3877 * 3878 * @return 0 on success, -1 on error. 3879 */ 3880 int qed_init_global_rl(struct qed_hwfn *p_hwfn, 3881 struct qed_ptt *p_ptt, 3882 u16 rl_id, u32 rate_limit); 3883 3884 /** 3885 * @brief qed_send_qm_stop_cmd Sends a stop command to the QM 3886 * 3887 * @param p_hwfn 3888 * @param p_ptt 3889 * @param is_release_cmd - true for release, false for stop. 3890 * @param is_tx_pq - true for Tx PQs, false for Other PQs. 3891 * @param start_pq - first PQ ID to stop 3892 * @param num_pqs - Number of PQs to stop, starting from start_pq. 3893 * 3894 * @return bool, true if successful, false if timeout occurred while waiting for 3895 * QM command done. 3896 */ 3897 bool qed_send_qm_stop_cmd(struct qed_hwfn *p_hwfn, 3898 struct qed_ptt *p_ptt, 3899 bool is_release_cmd, 3900 bool is_tx_pq, u16 start_pq, u16 num_pqs); 3901 3902 /** 3903 * @brief qed_set_vxlan_dest_port - initializes vxlan tunnel destination udp port 3904 * 3905 * @param p_hwfn 3906 * @param p_ptt - ptt window used for writing the registers. 3907 * @param dest_port - vxlan destination udp port. 3908 */ 3909 void qed_set_vxlan_dest_port(struct qed_hwfn *p_hwfn, 3910 struct qed_ptt *p_ptt, u16 dest_port); 3911 3912 /** 3913 * @brief qed_set_vxlan_enable - enable or disable VXLAN tunnel in HW 3914 * 3915 * @param p_hwfn 3916 * @param p_ptt - ptt window used for writing the registers. 3917 * @param vxlan_enable - vxlan enable flag. 3918 */ 3919 void qed_set_vxlan_enable(struct qed_hwfn *p_hwfn, 3920 struct qed_ptt *p_ptt, bool vxlan_enable); 3921 3922 /** 3923 * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW 3924 * 3925 * @param p_hwfn 3926 * @param p_ptt - ptt window used for writing the registers. 3927 * @param eth_gre_enable - eth GRE enable enable flag. 3928 * @param ip_gre_enable - IP GRE enable enable flag. 3929 */ 3930 void qed_set_gre_enable(struct qed_hwfn *p_hwfn, 3931 struct qed_ptt *p_ptt, 3932 bool eth_gre_enable, bool ip_gre_enable); 3933 3934 /** 3935 * @brief qed_set_geneve_dest_port - initializes geneve tunnel destination udp port 3936 * 3937 * @param p_hwfn 3938 * @param p_ptt - ptt window used for writing the registers. 3939 * @param dest_port - geneve destination udp port. 3940 */ 3941 void qed_set_geneve_dest_port(struct qed_hwfn *p_hwfn, 3942 struct qed_ptt *p_ptt, u16 dest_port); 3943 3944 /** 3945 * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW 3946 * 3947 * @param p_ptt - ptt window used for writing the registers. 3948 * @param eth_geneve_enable - eth GENEVE enable enable flag. 3949 * @param ip_geneve_enable - IP GENEVE enable enable flag. 3950 */ 3951 void qed_set_geneve_enable(struct qed_hwfn *p_hwfn, 3952 struct qed_ptt *p_ptt, 3953 bool eth_geneve_enable, bool ip_geneve_enable); 3954 3955 void qed_set_vxlan_no_l2_enable(struct qed_hwfn *p_hwfn, 3956 struct qed_ptt *p_ptt, bool enable); 3957 3958 /** 3959 * @brief qed_gft_disable - Disable GFT 3960 * 3961 * @param p_hwfn 3962 * @param p_ptt - ptt window used for writing the registers. 3963 * @param pf_id - pf on which to disable GFT. 3964 */ 3965 void qed_gft_disable(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 pf_id); 3966 3967 /** 3968 * @brief qed_gft_config - Enable and configure HW for GFT 3969 * 3970 * @param p_hwfn - HW device data 3971 * @param p_ptt - ptt window used for writing the registers. 3972 * @param pf_id - pf on which to enable GFT. 3973 * @param tcp - set profile tcp packets. 3974 * @param udp - set profile udp packet. 3975 * @param ipv4 - set profile ipv4 packet. 3976 * @param ipv6 - set profile ipv6 packet. 3977 * @param profile_type - define packet same fields. Use enum gft_profile_type. 3978 */ 3979 void qed_gft_config(struct qed_hwfn *p_hwfn, 3980 struct qed_ptt *p_ptt, 3981 u16 pf_id, 3982 bool tcp, 3983 bool udp, 3984 bool ipv4, bool ipv6, enum gft_profile_type profile_type); 3985 3986 /** 3987 * @brief qed_enable_context_validation - Enable and configure context 3988 * validation. 3989 * 3990 * @param p_hwfn 3991 * @param p_ptt - ptt window used for writing the registers. 3992 */ 3993 void qed_enable_context_validation(struct qed_hwfn *p_hwfn, 3994 struct qed_ptt *p_ptt); 3995 3996 /** 3997 * @brief qed_calc_session_ctx_validation - Calcualte validation byte for 3998 * session context. 3999 * 4000 * @param p_ctx_mem - pointer to context memory. 4001 * @param ctx_size - context size. 4002 * @param ctx_type - context type. 4003 * @param cid - context cid. 4004 */ 4005 void qed_calc_session_ctx_validation(void *p_ctx_mem, 4006 u16 ctx_size, u8 ctx_type, u32 cid); 4007 4008 /** 4009 * @brief qed_calc_task_ctx_validation - Calcualte validation byte for task 4010 * context. 4011 * 4012 * @param p_ctx_mem - pointer to context memory. 4013 * @param ctx_size - context size. 4014 * @param ctx_type - context type. 4015 * @param tid - context tid. 4016 */ 4017 void qed_calc_task_ctx_validation(void *p_ctx_mem, 4018 u16 ctx_size, u8 ctx_type, u32 tid); 4019 4020 /** 4021 * @brief qed_memset_session_ctx - Memset session context to 0 while 4022 * preserving validation bytes. 4023 * 4024 * @param p_hwfn - 4025 * @param p_ctx_mem - pointer to context memory. 4026 * @param ctx_size - size to initialzie. 4027 * @param ctx_type - context type. 4028 */ 4029 void qed_memset_session_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type); 4030 4031 /** 4032 * @brief qed_memset_task_ctx - Memset task context to 0 while preserving 4033 * validation bytes. 4034 * 4035 * @param p_ctx_mem - pointer to context memory. 4036 * @param ctx_size - size to initialzie. 4037 * @param ctx_type - context type. 4038 */ 4039 void qed_memset_task_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type); 4040 4041 #define NUM_STORMS 6 4042 4043 /** 4044 * @brief qed_set_rdma_error_level - Sets the RDMA assert level. 4045 * If the severity of the error will be 4046 * above the level, the FW will assert. 4047 * @param p_hwfn - HW device data 4048 * @param p_ptt - ptt window used for writing the registers 4049 * @param assert_level - An array of assert levels for each storm. 4050 * 4051 */ 4052 void qed_set_rdma_error_level(struct qed_hwfn *p_hwfn, 4053 struct qed_ptt *p_ptt, 4054 u8 assert_level[NUM_STORMS]); 4055 /** 4056 * @brief qed_fw_overlay_mem_alloc - Allocates and fills the FW overlay memory. 4057 * 4058 * @param p_hwfn - HW device data 4059 * @param fw_overlay_in_buf - the input FW overlay buffer. 4060 * @param buf_size - the size of the input FW overlay buffer in bytes. 4061 * must be aligned to dwords. 4062 * @param fw_overlay_out_mem - OUT: a pointer to the allocated overlays memory. 4063 * 4064 * @return a pointer to the allocated overlays memory, 4065 * or NULL in case of failures. 4066 */ 4067 struct phys_mem_desc * 4068 qed_fw_overlay_mem_alloc(struct qed_hwfn *p_hwfn, 4069 const u32 * const fw_overlay_in_buf, 4070 u32 buf_size_in_bytes); 4071 4072 /** 4073 * @brief qed_fw_overlay_init_ram - Initializes the FW overlay RAM. 4074 * 4075 * @param p_hwfn - HW device data. 4076 * @param p_ptt - ptt window used for writing the registers. 4077 * @param fw_overlay_mem - the allocated FW overlay memory. 4078 */ 4079 void qed_fw_overlay_init_ram(struct qed_hwfn *p_hwfn, 4080 struct qed_ptt *p_ptt, 4081 struct phys_mem_desc *fw_overlay_mem); 4082 4083 /** 4084 * @brief qed_fw_overlay_mem_free - Frees the FW overlay memory. 4085 * 4086 * @param p_hwfn - HW device data. 4087 * @param fw_overlay_mem - the allocated FW overlay memory to free. 4088 */ 4089 void qed_fw_overlay_mem_free(struct qed_hwfn *p_hwfn, 4090 struct phys_mem_desc *fw_overlay_mem); 4091 4092 /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */ 4093 #define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base) 4094 #define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size) 4095 4096 /* Tstorm port statistics */ 4097 #define TSTORM_PORT_STAT_OFFSET(port_id) \ 4098 (IRO[1].base + ((port_id) * IRO[1].m1)) 4099 #define TSTORM_PORT_STAT_SIZE (IRO[1].size) 4100 4101 /* Tstorm ll2 port statistics */ 4102 #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \ 4103 (IRO[2].base + ((port_id) * IRO[2].m1)) 4104 #define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size) 4105 4106 /* Ustorm VF-PF Channel ready flag */ 4107 #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \ 4108 (IRO[3].base + ((vf_id) * IRO[3].m1)) 4109 #define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size) 4110 4111 /* Ustorm Final flr cleanup ack */ 4112 #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \ 4113 (IRO[4].base + ((pf_id) * IRO[4].m1)) 4114 #define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size) 4115 4116 /* Ustorm Event ring consumer */ 4117 #define USTORM_EQE_CONS_OFFSET(pf_id) \ 4118 (IRO[5].base + ((pf_id) * IRO[5].m1)) 4119 #define USTORM_EQE_CONS_SIZE (IRO[5].size) 4120 4121 /* Ustorm eth queue zone */ 4122 #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \ 4123 (IRO[6].base + ((queue_zone_id) * IRO[6].m1)) 4124 #define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[6].size) 4125 4126 /* Ustorm Common Queue ring consumer */ 4127 #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \ 4128 (IRO[7].base + ((queue_zone_id) * IRO[7].m1)) 4129 #define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[7].size) 4130 4131 /* Xstorm common PQ info */ 4132 #define XSTORM_PQ_INFO_OFFSET(pq_id) \ 4133 (IRO[8].base + ((pq_id) * IRO[8].m1)) 4134 #define XSTORM_PQ_INFO_SIZE (IRO[8].size) 4135 4136 /* Xstorm Integration Test Data */ 4137 #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base) 4138 #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size) 4139 4140 /* Ystorm Integration Test Data */ 4141 #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base) 4142 #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size) 4143 4144 /* Pstorm Integration Test Data */ 4145 #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base) 4146 #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size) 4147 4148 /* Tstorm Integration Test Data */ 4149 #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base) 4150 #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[12].size) 4151 4152 /* Mstorm Integration Test Data */ 4153 #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[13].base) 4154 #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[13].size) 4155 4156 /* Ustorm Integration Test Data */ 4157 #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[14].base) 4158 #define USTORM_INTEG_TEST_DATA_SIZE (IRO[14].size) 4159 4160 /* Xstorm overlay buffer host address */ 4161 #define XSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[15].base) 4162 #define XSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[15].size) 4163 4164 /* Ystorm overlay buffer host address */ 4165 #define YSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[16].base) 4166 #define YSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[16].size) 4167 4168 /* Pstorm overlay buffer host address */ 4169 #define PSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[17].base) 4170 #define PSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[17].size) 4171 4172 /* Tstorm overlay buffer host address */ 4173 #define TSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[18].base) 4174 #define TSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[18].size) 4175 4176 /* Mstorm overlay buffer host address */ 4177 #define MSTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[19].base) 4178 #define MSTORM_OVERLAY_BUF_ADDR_SIZE (IRO[19].size) 4179 4180 /* Ustorm overlay buffer host address */ 4181 #define USTORM_OVERLAY_BUF_ADDR_OFFSET (IRO[20].base) 4182 #define USTORM_OVERLAY_BUF_ADDR_SIZE (IRO[20].size) 4183 4184 /* Tstorm producers */ 4185 #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \ 4186 (IRO[21].base + ((core_rx_queue_id) * IRO[21].m1)) 4187 #define TSTORM_LL2_RX_PRODS_SIZE (IRO[21].size) 4188 4189 /* Tstorm LightL2 queue statistics */ 4190 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 4191 (IRO[22].base + ((core_rx_queue_id) * IRO[22].m1)) 4192 #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[22].size) 4193 4194 /* Ustorm LiteL2 queue statistics */ 4195 #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \ 4196 (IRO[23].base + ((core_rx_queue_id) * IRO[23].m1)) 4197 #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[23].size) 4198 4199 /* Pstorm LiteL2 queue statistics */ 4200 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \ 4201 (IRO[24].base + ((core_tx_stats_id) * IRO[24].m1)) 4202 #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[24].size) 4203 4204 /* Mstorm queue statistics */ 4205 #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 4206 (IRO[25].base + ((stat_counter_id) * IRO[25].m1)) 4207 #define MSTORM_QUEUE_STAT_SIZE (IRO[25].size) 4208 4209 /* TPA agregation timeout in us resolution (on ASIC) */ 4210 #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[26].base) 4211 #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[26].size) 4212 4213 /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size 4214 * mode 4215 */ 4216 #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \ 4217 (IRO[27].base + ((vf_id) * IRO[27].m1) + ((vf_queue_id) * IRO[27].m2)) 4218 #define MSTORM_ETH_VF_PRODS_SIZE (IRO[27].size) 4219 4220 /* Mstorm ETH PF queues producers */ 4221 #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \ 4222 (IRO[28].base + ((queue_id) * IRO[28].m1)) 4223 #define MSTORM_ETH_PF_PRODS_SIZE (IRO[28].size) 4224 4225 /* Mstorm pf statistics */ 4226 #define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 4227 (IRO[29].base + ((pf_id) * IRO[29].m1)) 4228 #define MSTORM_ETH_PF_STAT_SIZE (IRO[29].size) 4229 4230 /* Ustorm queue statistics */ 4231 #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 4232 (IRO[30].base + ((stat_counter_id) * IRO[30].m1)) 4233 #define USTORM_QUEUE_STAT_SIZE (IRO[30].size) 4234 4235 /* Ustorm pf statistics */ 4236 #define USTORM_ETH_PF_STAT_OFFSET(pf_id) \ 4237 (IRO[31].base + ((pf_id) * IRO[31].m1)) 4238 #define USTORM_ETH_PF_STAT_SIZE (IRO[31].size) 4239 4240 /* Pstorm queue statistics */ 4241 #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \ 4242 (IRO[32].base + ((stat_counter_id) * IRO[32].m1)) 4243 #define PSTORM_QUEUE_STAT_SIZE (IRO[32].size) 4244 4245 /* Pstorm pf statistics */ 4246 #define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \ 4247 (IRO[33].base + ((pf_id) * IRO[33].m1)) 4248 #define PSTORM_ETH_PF_STAT_SIZE (IRO[33].size) 4249 4250 /* Control frame's EthType configuration for TX control frame security */ 4251 #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id) \ 4252 (IRO[34].base + ((eth_type_id) * IRO[34].m1)) 4253 #define PSTORM_CTL_FRAME_ETHTYPE_SIZE (IRO[34].size) 4254 4255 /* Tstorm last parser message */ 4256 #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[35].base) 4257 #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[35].size) 4258 4259 /* Tstorm Eth limit Rx rate */ 4260 #define ETH_RX_RATE_LIMIT_OFFSET(pf_id) \ 4261 (IRO[36].base + ((pf_id) * IRO[36].m1)) 4262 #define ETH_RX_RATE_LIMIT_SIZE (IRO[36].size) 4263 4264 /* RSS indirection table entry update command per PF offset in TSTORM PF BAR0. 4265 * Use eth_tstorm_rss_update_data for update 4266 */ 4267 #define TSTORM_ETH_RSS_UPDATE_OFFSET(pf_id) \ 4268 (IRO[37].base + ((pf_id) * IRO[37].m1)) 4269 #define TSTORM_ETH_RSS_UPDATE_SIZE (IRO[37].size) 4270 4271 /* Xstorm queue zone */ 4272 #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \ 4273 (IRO[38].base + ((queue_id) * IRO[38].m1)) 4274 #define XSTORM_ETH_QUEUE_ZONE_SIZE (IRO[38].size) 4275 4276 /* Ystorm cqe producer */ 4277 #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 4278 (IRO[39].base + ((rss_id) * IRO[39].m1)) 4279 #define YSTORM_TOE_CQ_PROD_SIZE (IRO[39].size) 4280 4281 /* Ustorm cqe producer */ 4282 #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \ 4283 (IRO[40].base + ((rss_id) * IRO[40].m1)) 4284 #define USTORM_TOE_CQ_PROD_SIZE (IRO[40].size) 4285 4286 /* Ustorm grq producer */ 4287 #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \ 4288 (IRO[41].base + ((pf_id) * IRO[41].m1)) 4289 #define USTORM_TOE_GRQ_PROD_SIZE (IRO[41].size) 4290 4291 /* Tstorm cmdq-cons of given command queue-id */ 4292 #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \ 4293 (IRO[42].base + ((cmdq_queue_id) * IRO[42].m1)) 4294 #define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[42].size) 4295 4296 /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID, 4297 * BDqueue-id 4298 */ 4299 #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 4300 (IRO[43].base + ((storage_func_id) * IRO[43].m1) + \ 4301 ((bdq_id) * IRO[43].m2)) 4302 #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[43].size) 4303 4304 /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */ 4305 #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(storage_func_id, bdq_id) \ 4306 (IRO[44].base + ((storage_func_id) * IRO[44].m1) + \ 4307 ((bdq_id) * IRO[44].m2)) 4308 #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[44].size) 4309 4310 /* Tstorm iSCSI RX stats */ 4311 #define TSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 4312 (IRO[45].base + ((storage_func_id) * IRO[45].m1)) 4313 #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[45].size) 4314 4315 /* Mstorm iSCSI RX stats */ 4316 #define MSTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 4317 (IRO[46].base + ((storage_func_id) * IRO[46].m1)) 4318 #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[46].size) 4319 4320 /* Ustorm iSCSI RX stats */ 4321 #define USTORM_ISCSI_RX_STATS_OFFSET(storage_func_id) \ 4322 (IRO[47].base + ((storage_func_id) * IRO[47].m1)) 4323 #define USTORM_ISCSI_RX_STATS_SIZE (IRO[47].size) 4324 4325 /* Xstorm iSCSI TX stats */ 4326 #define XSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 4327 (IRO[48].base + ((storage_func_id) * IRO[48].m1)) 4328 #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[48].size) 4329 4330 /* Ystorm iSCSI TX stats */ 4331 #define YSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 4332 (IRO[49].base + ((storage_func_id) * IRO[49].m1)) 4333 #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[49].size) 4334 4335 /* Pstorm iSCSI TX stats */ 4336 #define PSTORM_ISCSI_TX_STATS_OFFSET(storage_func_id) \ 4337 (IRO[50].base + ((storage_func_id) * IRO[50].m1)) 4338 #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[50].size) 4339 4340 /* Tstorm FCoE RX stats */ 4341 #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \ 4342 (IRO[51].base + ((pf_id) * IRO[51].m1)) 4343 #define TSTORM_FCOE_RX_STATS_SIZE (IRO[51].size) 4344 4345 /* Pstorm FCoE TX stats */ 4346 #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \ 4347 (IRO[52].base + ((pf_id) * IRO[52].m1)) 4348 #define PSTORM_FCOE_TX_STATS_SIZE (IRO[52].size) 4349 4350 /* Pstorm RDMA queue statistics */ 4351 #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 4352 (IRO[53].base + ((rdma_stat_counter_id) * IRO[53].m1)) 4353 #define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[53].size) 4354 4355 /* Tstorm RDMA queue statistics */ 4356 #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \ 4357 (IRO[54].base + ((rdma_stat_counter_id) * IRO[54].m1)) 4358 #define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[54].size) 4359 4360 /* Xstorm error level for assert */ 4361 #define XSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4362 (IRO[55].base + ((pf_id) * IRO[55].m1)) 4363 #define XSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[55].size) 4364 4365 /* Ystorm error level for assert */ 4366 #define YSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4367 (IRO[56].base + ((pf_id) * IRO[56].m1)) 4368 #define YSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[56].size) 4369 4370 /* Pstorm error level for assert */ 4371 #define PSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4372 (IRO[57].base + ((pf_id) * IRO[57].m1)) 4373 #define PSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[57].size) 4374 4375 /* Tstorm error level for assert */ 4376 #define TSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4377 (IRO[58].base + ((pf_id) * IRO[58].m1)) 4378 #define TSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[58].size) 4379 4380 /* Mstorm error level for assert */ 4381 #define MSTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4382 (IRO[59].base + ((pf_id) * IRO[59].m1)) 4383 #define MSTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[59].size) 4384 4385 /* Ustorm error level for assert */ 4386 #define USTORM_RDMA_ASSERT_LEVEL_OFFSET(pf_id) \ 4387 (IRO[60].base + ((pf_id) * IRO[60].m1)) 4388 #define USTORM_RDMA_ASSERT_LEVEL_SIZE (IRO[60].size) 4389 4390 /* Xstorm iWARP rxmit stats */ 4391 #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \ 4392 (IRO[61].base + ((pf_id) * IRO[61].m1)) 4393 #define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[61].size) 4394 4395 /* Tstorm RoCE Event Statistics */ 4396 #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \ 4397 (IRO[62].base + ((roce_pf_id) * IRO[62].m1)) 4398 #define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[62].size) 4399 4400 /* DCQCN Received Statistics */ 4401 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id)\ 4402 (IRO[63].base + ((roce_pf_id) * IRO[63].m1)) 4403 #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE (IRO[63].size) 4404 4405 /* RoCE Error Statistics */ 4406 #define YSTORM_ROCE_ERROR_STATS_OFFSET(roce_pf_id) \ 4407 (IRO[64].base + ((roce_pf_id) * IRO[64].m1)) 4408 #define YSTORM_ROCE_ERROR_STATS_SIZE (IRO[64].size) 4409 4410 /* DCQCN Sent Statistics */ 4411 #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \ 4412 (IRO[65].base + ((roce_pf_id) * IRO[65].m1)) 4413 #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE (IRO[65].size) 4414 4415 /* RoCE CQEs Statistics */ 4416 #define USTORM_ROCE_CQE_STATS_OFFSET(roce_pf_id) \ 4417 (IRO[66].base + ((roce_pf_id) * IRO[66].m1)) 4418 #define USTORM_ROCE_CQE_STATS_SIZE (IRO[66].size) 4419 4420 /* IRO Array */ 4421 static const u32 iro_arr[] = { 4422 0x00000000, 0x00000000, 0x00080000, 4423 0x00003288, 0x00000088, 0x00880000, 4424 0x000058e8, 0x00000020, 0x00200000, 4425 0x00000b00, 0x00000008, 0x00040000, 4426 0x00000a80, 0x00000008, 0x00040000, 4427 0x00000000, 0x00000008, 0x00020000, 4428 0x00000080, 0x00000008, 0x00040000, 4429 0x00000084, 0x00000008, 0x00020000, 4430 0x00005718, 0x00000004, 0x00040000, 4431 0x00004dd0, 0x00000000, 0x00780000, 4432 0x00003e40, 0x00000000, 0x00780000, 4433 0x00004480, 0x00000000, 0x00780000, 4434 0x00003210, 0x00000000, 0x00780000, 4435 0x00003b50, 0x00000000, 0x00780000, 4436 0x00007f58, 0x00000000, 0x00780000, 4437 0x00005f58, 0x00000000, 0x00080000, 4438 0x00007100, 0x00000000, 0x00080000, 4439 0x0000aea0, 0x00000000, 0x00080000, 4440 0x00004398, 0x00000000, 0x00080000, 4441 0x0000a5a0, 0x00000000, 0x00080000, 4442 0x0000bde8, 0x00000000, 0x00080000, 4443 0x00000020, 0x00000004, 0x00040000, 4444 0x000056c8, 0x00000010, 0x00100000, 4445 0x0000c210, 0x00000030, 0x00300000, 4446 0x0000b088, 0x00000038, 0x00380000, 4447 0x00003d20, 0x00000080, 0x00400000, 4448 0x0000bf60, 0x00000000, 0x00040000, 4449 0x00004560, 0x00040080, 0x00040000, 4450 0x000001f8, 0x00000004, 0x00040000, 4451 0x00003d60, 0x00000080, 0x00200000, 4452 0x00008960, 0x00000040, 0x00300000, 4453 0x0000e840, 0x00000060, 0x00600000, 4454 0x00004618, 0x00000080, 0x00380000, 4455 0x00010738, 0x000000c0, 0x00c00000, 4456 0x000001f8, 0x00000002, 0x00020000, 4457 0x0000a2a0, 0x00000000, 0x01080000, 4458 0x0000a3a8, 0x00000008, 0x00080000, 4459 0x000001c0, 0x00000008, 0x00080000, 4460 0x000001f8, 0x00000008, 0x00080000, 4461 0x00000ac0, 0x00000008, 0x00080000, 4462 0x00002578, 0x00000008, 0x00080000, 4463 0x000024f8, 0x00000008, 0x00080000, 4464 0x00000280, 0x00000008, 0x00080000, 4465 0x00000680, 0x00080018, 0x00080000, 4466 0x00000b78, 0x00080018, 0x00020000, 4467 0x0000c640, 0x00000050, 0x003c0000, 4468 0x00012038, 0x00000018, 0x00100000, 4469 0x00011b00, 0x00000040, 0x00180000, 4470 0x000095d0, 0x00000050, 0x00200000, 4471 0x00008b10, 0x00000040, 0x00280000, 4472 0x00011640, 0x00000018, 0x00100000, 4473 0x0000c828, 0x00000048, 0x00380000, 4474 0x00011710, 0x00000020, 0x00200000, 4475 0x00004650, 0x00000080, 0x00100000, 4476 0x00003618, 0x00000010, 0x00100000, 4477 0x0000a968, 0x00000008, 0x00010000, 4478 0x000097a0, 0x00000008, 0x00010000, 4479 0x00011990, 0x00000008, 0x00010000, 4480 0x0000f018, 0x00000008, 0x00010000, 4481 0x00012628, 0x00000008, 0x00010000, 4482 0x00011da8, 0x00000008, 0x00010000, 4483 0x0000aa78, 0x00000030, 0x00100000, 4484 0x0000d768, 0x00000028, 0x00280000, 4485 0x00009a58, 0x00000018, 0x00180000, 4486 0x00009bd8, 0x00000008, 0x00080000, 4487 0x00013a18, 0x00000008, 0x00080000, 4488 0x000126e8, 0x00000018, 0x00180000, 4489 0x0000e608, 0x00500288, 0x00100000, 4490 0x00012970, 0x00000138, 0x00280000, 4491 }; 4492 4493 /* Runtime array offsets */ 4494 #define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET 0 4495 #define DORQ_REG_PF_MAX_ICID_1_RT_OFFSET 1 4496 #define DORQ_REG_PF_MAX_ICID_2_RT_OFFSET 2 4497 #define DORQ_REG_PF_MAX_ICID_3_RT_OFFSET 3 4498 #define DORQ_REG_PF_MAX_ICID_4_RT_OFFSET 4 4499 #define DORQ_REG_PF_MAX_ICID_5_RT_OFFSET 5 4500 #define DORQ_REG_PF_MAX_ICID_6_RT_OFFSET 6 4501 #define DORQ_REG_PF_MAX_ICID_7_RT_OFFSET 7 4502 #define DORQ_REG_VF_MAX_ICID_0_RT_OFFSET 8 4503 #define DORQ_REG_VF_MAX_ICID_1_RT_OFFSET 9 4504 #define DORQ_REG_VF_MAX_ICID_2_RT_OFFSET 10 4505 #define DORQ_REG_VF_MAX_ICID_3_RT_OFFSET 11 4506 #define DORQ_REG_VF_MAX_ICID_4_RT_OFFSET 12 4507 #define DORQ_REG_VF_MAX_ICID_5_RT_OFFSET 13 4508 #define DORQ_REG_VF_MAX_ICID_6_RT_OFFSET 14 4509 #define DORQ_REG_VF_MAX_ICID_7_RT_OFFSET 15 4510 #define DORQ_REG_VF_ICID_BIT_SHIFT_NORM_RT_OFFSET 16 4511 #define DORQ_REG_PF_WAKE_ALL_RT_OFFSET 17 4512 #define DORQ_REG_TAG1_ETHERTYPE_RT_OFFSET 18 4513 #define IGU_REG_PF_CONFIGURATION_RT_OFFSET 19 4514 #define IGU_REG_VF_CONFIGURATION_RT_OFFSET 20 4515 #define IGU_REG_ATTN_MSG_ADDR_L_RT_OFFSET 21 4516 #define IGU_REG_ATTN_MSG_ADDR_H_RT_OFFSET 22 4517 #define IGU_REG_LEADING_EDGE_LATCH_RT_OFFSET 23 4518 #define IGU_REG_TRAILING_EDGE_LATCH_RT_OFFSET 24 4519 #define CAU_REG_CQE_AGG_UNIT_SIZE_RT_OFFSET 25 4520 #define CAU_REG_SB_VAR_MEMORY_RT_OFFSET 26 4521 #define CAU_REG_SB_VAR_MEMORY_RT_SIZE 736 4522 #define CAU_REG_SB_ADDR_MEMORY_RT_OFFSET 762 4523 #define CAU_REG_SB_ADDR_MEMORY_RT_SIZE 736 4524 #define CAU_REG_PI_MEMORY_RT_OFFSET 1498 4525 #define CAU_REG_PI_MEMORY_RT_SIZE 4416 4526 #define PRS_REG_SEARCH_RESP_INITIATOR_TYPE_RT_OFFSET 5914 4527 #define PRS_REG_TASK_ID_MAX_INITIATOR_PF_RT_OFFSET 5915 4528 #define PRS_REG_TASK_ID_MAX_INITIATOR_VF_RT_OFFSET 5916 4529 #define PRS_REG_TASK_ID_MAX_TARGET_PF_RT_OFFSET 5917 4530 #define PRS_REG_TASK_ID_MAX_TARGET_VF_RT_OFFSET 5918 4531 #define PRS_REG_SEARCH_TCP_RT_OFFSET 5919 4532 #define PRS_REG_SEARCH_FCOE_RT_OFFSET 5920 4533 #define PRS_REG_SEARCH_ROCE_RT_OFFSET 5921 4534 #define PRS_REG_ROCE_DEST_QP_MAX_VF_RT_OFFSET 5922 4535 #define PRS_REG_ROCE_DEST_QP_MAX_PF_RT_OFFSET 5923 4536 #define PRS_REG_SEARCH_OPENFLOW_RT_OFFSET 5924 4537 #define PRS_REG_SEARCH_NON_IP_AS_OPENFLOW_RT_OFFSET 5925 4538 #define PRS_REG_OPENFLOW_SUPPORT_ONLY_KNOWN_OVER_IP_RT_OFFSET 5926 4539 #define PRS_REG_OPENFLOW_SEARCH_KEY_MASK_RT_OFFSET 5927 4540 #define PRS_REG_TAG_ETHERTYPE_0_RT_OFFSET 5928 4541 #define PRS_REG_LIGHT_L2_ETHERTYPE_EN_RT_OFFSET 5929 4542 #define SRC_REG_FIRSTFREE_RT_OFFSET 5930 4543 #define SRC_REG_FIRSTFREE_RT_SIZE 2 4544 #define SRC_REG_LASTFREE_RT_OFFSET 5932 4545 #define SRC_REG_LASTFREE_RT_SIZE 2 4546 #define SRC_REG_COUNTFREE_RT_OFFSET 5934 4547 #define SRC_REG_NUMBER_HASH_BITS_RT_OFFSET 5935 4548 #define PSWRQ2_REG_CDUT_P_SIZE_RT_OFFSET 5936 4549 #define PSWRQ2_REG_CDUC_P_SIZE_RT_OFFSET 5937 4550 #define PSWRQ2_REG_TM_P_SIZE_RT_OFFSET 5938 4551 #define PSWRQ2_REG_QM_P_SIZE_RT_OFFSET 5939 4552 #define PSWRQ2_REG_SRC_P_SIZE_RT_OFFSET 5940 4553 #define PSWRQ2_REG_TSDM_P_SIZE_RT_OFFSET 5941 4554 #define PSWRQ2_REG_TM_FIRST_ILT_RT_OFFSET 5942 4555 #define PSWRQ2_REG_TM_LAST_ILT_RT_OFFSET 5943 4556 #define PSWRQ2_REG_QM_FIRST_ILT_RT_OFFSET 5944 4557 #define PSWRQ2_REG_QM_LAST_ILT_RT_OFFSET 5945 4558 #define PSWRQ2_REG_SRC_FIRST_ILT_RT_OFFSET 5946 4559 #define PSWRQ2_REG_SRC_LAST_ILT_RT_OFFSET 5947 4560 #define PSWRQ2_REG_CDUC_FIRST_ILT_RT_OFFSET 5948 4561 #define PSWRQ2_REG_CDUC_LAST_ILT_RT_OFFSET 5949 4562 #define PSWRQ2_REG_CDUT_FIRST_ILT_RT_OFFSET 5950 4563 #define PSWRQ2_REG_CDUT_LAST_ILT_RT_OFFSET 5951 4564 #define PSWRQ2_REG_TSDM_FIRST_ILT_RT_OFFSET 5952 4565 #define PSWRQ2_REG_TSDM_LAST_ILT_RT_OFFSET 5953 4566 #define PSWRQ2_REG_TM_NUMBER_OF_PF_BLOCKS_RT_OFFSET 5954 4567 #define PSWRQ2_REG_CDUT_NUMBER_OF_PF_BLOCKS_RT_OFFSET 5955 4568 #define PSWRQ2_REG_CDUC_NUMBER_OF_PF_BLOCKS_RT_OFFSET 5956 4569 #define PSWRQ2_REG_TM_VF_BLOCKS_RT_OFFSET 5957 4570 #define PSWRQ2_REG_CDUT_VF_BLOCKS_RT_OFFSET 5958 4571 #define PSWRQ2_REG_CDUC_VF_BLOCKS_RT_OFFSET 5959 4572 #define PSWRQ2_REG_TM_BLOCKS_FACTOR_RT_OFFSET 5960 4573 #define PSWRQ2_REG_CDUT_BLOCKS_FACTOR_RT_OFFSET 5961 4574 #define PSWRQ2_REG_CDUC_BLOCKS_FACTOR_RT_OFFSET 5962 4575 #define PSWRQ2_REG_VF_BASE_RT_OFFSET 5963 4576 #define PSWRQ2_REG_VF_LAST_ILT_RT_OFFSET 5964 4577 #define PSWRQ2_REG_DRAM_ALIGN_WR_RT_OFFSET 5965 4578 #define PSWRQ2_REG_DRAM_ALIGN_RD_RT_OFFSET 5966 4579 #define PSWRQ2_REG_ILT_MEMORY_RT_OFFSET 5967 4580 #define PSWRQ2_REG_ILT_MEMORY_RT_SIZE 22000 4581 #define PGLUE_REG_B_VF_BASE_RT_OFFSET 27967 4582 #define PGLUE_REG_B_MSDM_OFFSET_MASK_B_RT_OFFSET 27968 4583 #define PGLUE_REG_B_MSDM_VF_SHIFT_B_RT_OFFSET 27969 4584 #define PGLUE_REG_B_CACHE_LINE_SIZE_RT_OFFSET 27970 4585 #define PGLUE_REG_B_PF_BAR0_SIZE_RT_OFFSET 27971 4586 #define PGLUE_REG_B_PF_BAR1_SIZE_RT_OFFSET 27972 4587 #define PGLUE_REG_B_VF_BAR1_SIZE_RT_OFFSET 27973 4588 #define TM_REG_VF_ENABLE_CONN_RT_OFFSET 27974 4589 #define TM_REG_PF_ENABLE_CONN_RT_OFFSET 27975 4590 #define TM_REG_PF_ENABLE_TASK_RT_OFFSET 27976 4591 #define TM_REG_GROUP_SIZE_RESOLUTION_CONN_RT_OFFSET 27977 4592 #define TM_REG_GROUP_SIZE_RESOLUTION_TASK_RT_OFFSET 27978 4593 #define TM_REG_CONFIG_CONN_MEM_RT_OFFSET 27979 4594 #define TM_REG_CONFIG_CONN_MEM_RT_SIZE 416 4595 #define TM_REG_CONFIG_TASK_MEM_RT_OFFSET 28395 4596 #define TM_REG_CONFIG_TASK_MEM_RT_SIZE 512 4597 #define QM_REG_MAXPQSIZE_0_RT_OFFSET 28907 4598 #define QM_REG_MAXPQSIZE_1_RT_OFFSET 28908 4599 #define QM_REG_MAXPQSIZE_2_RT_OFFSET 28909 4600 #define QM_REG_MAXPQSIZETXSEL_0_RT_OFFSET 28910 4601 #define QM_REG_MAXPQSIZETXSEL_1_RT_OFFSET 28911 4602 #define QM_REG_MAXPQSIZETXSEL_2_RT_OFFSET 28912 4603 #define QM_REG_MAXPQSIZETXSEL_3_RT_OFFSET 28913 4604 #define QM_REG_MAXPQSIZETXSEL_4_RT_OFFSET 28914 4605 #define QM_REG_MAXPQSIZETXSEL_5_RT_OFFSET 28915 4606 #define QM_REG_MAXPQSIZETXSEL_6_RT_OFFSET 28916 4607 #define QM_REG_MAXPQSIZETXSEL_7_RT_OFFSET 28917 4608 #define QM_REG_MAXPQSIZETXSEL_8_RT_OFFSET 28918 4609 #define QM_REG_MAXPQSIZETXSEL_9_RT_OFFSET 28919 4610 #define QM_REG_MAXPQSIZETXSEL_10_RT_OFFSET 28920 4611 #define QM_REG_MAXPQSIZETXSEL_11_RT_OFFSET 28921 4612 #define QM_REG_MAXPQSIZETXSEL_12_RT_OFFSET 28922 4613 #define QM_REG_MAXPQSIZETXSEL_13_RT_OFFSET 28923 4614 #define QM_REG_MAXPQSIZETXSEL_14_RT_OFFSET 28924 4615 #define QM_REG_MAXPQSIZETXSEL_15_RT_OFFSET 28925 4616 #define QM_REG_MAXPQSIZETXSEL_16_RT_OFFSET 28926 4617 #define QM_REG_MAXPQSIZETXSEL_17_RT_OFFSET 28927 4618 #define QM_REG_MAXPQSIZETXSEL_18_RT_OFFSET 28928 4619 #define QM_REG_MAXPQSIZETXSEL_19_RT_OFFSET 28929 4620 #define QM_REG_MAXPQSIZETXSEL_20_RT_OFFSET 28930 4621 #define QM_REG_MAXPQSIZETXSEL_21_RT_OFFSET 28931 4622 #define QM_REG_MAXPQSIZETXSEL_22_RT_OFFSET 28932 4623 #define QM_REG_MAXPQSIZETXSEL_23_RT_OFFSET 28933 4624 #define QM_REG_MAXPQSIZETXSEL_24_RT_OFFSET 28934 4625 #define QM_REG_MAXPQSIZETXSEL_25_RT_OFFSET 28935 4626 #define QM_REG_MAXPQSIZETXSEL_26_RT_OFFSET 28936 4627 #define QM_REG_MAXPQSIZETXSEL_27_RT_OFFSET 28937 4628 #define QM_REG_MAXPQSIZETXSEL_28_RT_OFFSET 28938 4629 #define QM_REG_MAXPQSIZETXSEL_29_RT_OFFSET 28939 4630 #define QM_REG_MAXPQSIZETXSEL_30_RT_OFFSET 28940 4631 #define QM_REG_MAXPQSIZETXSEL_31_RT_OFFSET 28941 4632 #define QM_REG_MAXPQSIZETXSEL_32_RT_OFFSET 28942 4633 #define QM_REG_MAXPQSIZETXSEL_33_RT_OFFSET 28943 4634 #define QM_REG_MAXPQSIZETXSEL_34_RT_OFFSET 28944 4635 #define QM_REG_MAXPQSIZETXSEL_35_RT_OFFSET 28945 4636 #define QM_REG_MAXPQSIZETXSEL_36_RT_OFFSET 28946 4637 #define QM_REG_MAXPQSIZETXSEL_37_RT_OFFSET 28947 4638 #define QM_REG_MAXPQSIZETXSEL_38_RT_OFFSET 28948 4639 #define QM_REG_MAXPQSIZETXSEL_39_RT_OFFSET 28949 4640 #define QM_REG_MAXPQSIZETXSEL_40_RT_OFFSET 28950 4641 #define QM_REG_MAXPQSIZETXSEL_41_RT_OFFSET 28951 4642 #define QM_REG_MAXPQSIZETXSEL_42_RT_OFFSET 28952 4643 #define QM_REG_MAXPQSIZETXSEL_43_RT_OFFSET 28953 4644 #define QM_REG_MAXPQSIZETXSEL_44_RT_OFFSET 28954 4645 #define QM_REG_MAXPQSIZETXSEL_45_RT_OFFSET 28955 4646 #define QM_REG_MAXPQSIZETXSEL_46_RT_OFFSET 28956 4647 #define QM_REG_MAXPQSIZETXSEL_47_RT_OFFSET 28957 4648 #define QM_REG_MAXPQSIZETXSEL_48_RT_OFFSET 28958 4649 #define QM_REG_MAXPQSIZETXSEL_49_RT_OFFSET 28959 4650 #define QM_REG_MAXPQSIZETXSEL_50_RT_OFFSET 28960 4651 #define QM_REG_MAXPQSIZETXSEL_51_RT_OFFSET 28961 4652 #define QM_REG_MAXPQSIZETXSEL_52_RT_OFFSET 28962 4653 #define QM_REG_MAXPQSIZETXSEL_53_RT_OFFSET 28963 4654 #define QM_REG_MAXPQSIZETXSEL_54_RT_OFFSET 28964 4655 #define QM_REG_MAXPQSIZETXSEL_55_RT_OFFSET 28965 4656 #define QM_REG_MAXPQSIZETXSEL_56_RT_OFFSET 28966 4657 #define QM_REG_MAXPQSIZETXSEL_57_RT_OFFSET 28967 4658 #define QM_REG_MAXPQSIZETXSEL_58_RT_OFFSET 28968 4659 #define QM_REG_MAXPQSIZETXSEL_59_RT_OFFSET 28969 4660 #define QM_REG_MAXPQSIZETXSEL_60_RT_OFFSET 28970 4661 #define QM_REG_MAXPQSIZETXSEL_61_RT_OFFSET 28971 4662 #define QM_REG_MAXPQSIZETXSEL_62_RT_OFFSET 28972 4663 #define QM_REG_MAXPQSIZETXSEL_63_RT_OFFSET 28973 4664 #define QM_REG_BASEADDROTHERPQ_RT_OFFSET 28974 4665 #define QM_REG_BASEADDROTHERPQ_RT_SIZE 128 4666 #define QM_REG_PTRTBLOTHER_RT_OFFSET 29102 4667 #define QM_REG_PTRTBLOTHER_RT_SIZE 256 4668 #define QM_REG_VOQCRDLINE_RT_OFFSET 29358 4669 #define QM_REG_VOQCRDLINE_RT_SIZE 20 4670 #define QM_REG_VOQINITCRDLINE_RT_OFFSET 29378 4671 #define QM_REG_VOQINITCRDLINE_RT_SIZE 20 4672 #define QM_REG_AFULLQMBYPTHRPFWFQ_RT_OFFSET 29398 4673 #define QM_REG_AFULLQMBYPTHRVPWFQ_RT_OFFSET 29399 4674 #define QM_REG_AFULLQMBYPTHRPFRL_RT_OFFSET 29400 4675 #define QM_REG_AFULLQMBYPTHRGLBLRL_RT_OFFSET 29401 4676 #define QM_REG_AFULLOPRTNSTCCRDMASK_RT_OFFSET 29402 4677 #define QM_REG_WRROTHERPQGRP_0_RT_OFFSET 29403 4678 #define QM_REG_WRROTHERPQGRP_1_RT_OFFSET 29404 4679 #define QM_REG_WRROTHERPQGRP_2_RT_OFFSET 29405 4680 #define QM_REG_WRROTHERPQGRP_3_RT_OFFSET 29406 4681 #define QM_REG_WRROTHERPQGRP_4_RT_OFFSET 29407 4682 #define QM_REG_WRROTHERPQGRP_5_RT_OFFSET 29408 4683 #define QM_REG_WRROTHERPQGRP_6_RT_OFFSET 29409 4684 #define QM_REG_WRROTHERPQGRP_7_RT_OFFSET 29410 4685 #define QM_REG_WRROTHERPQGRP_8_RT_OFFSET 29411 4686 #define QM_REG_WRROTHERPQGRP_9_RT_OFFSET 29412 4687 #define QM_REG_WRROTHERPQGRP_10_RT_OFFSET 29413 4688 #define QM_REG_WRROTHERPQGRP_11_RT_OFFSET 29414 4689 #define QM_REG_WRROTHERPQGRP_12_RT_OFFSET 29415 4690 #define QM_REG_WRROTHERPQGRP_13_RT_OFFSET 29416 4691 #define QM_REG_WRROTHERPQGRP_14_RT_OFFSET 29417 4692 #define QM_REG_WRROTHERPQGRP_15_RT_OFFSET 29418 4693 #define QM_REG_WRROTHERGRPWEIGHT_0_RT_OFFSET 29419 4694 #define QM_REG_WRROTHERGRPWEIGHT_1_RT_OFFSET 29420 4695 #define QM_REG_WRROTHERGRPWEIGHT_2_RT_OFFSET 29421 4696 #define QM_REG_WRROTHERGRPWEIGHT_3_RT_OFFSET 29422 4697 #define QM_REG_WRRTXGRPWEIGHT_0_RT_OFFSET 29423 4698 #define QM_REG_WRRTXGRPWEIGHT_1_RT_OFFSET 29424 4699 #define QM_REG_PQTX2PF_0_RT_OFFSET 29425 4700 #define QM_REG_PQTX2PF_1_RT_OFFSET 29426 4701 #define QM_REG_PQTX2PF_2_RT_OFFSET 29427 4702 #define QM_REG_PQTX2PF_3_RT_OFFSET 29428 4703 #define QM_REG_PQTX2PF_4_RT_OFFSET 29429 4704 #define QM_REG_PQTX2PF_5_RT_OFFSET 29430 4705 #define QM_REG_PQTX2PF_6_RT_OFFSET 29431 4706 #define QM_REG_PQTX2PF_7_RT_OFFSET 29432 4707 #define QM_REG_PQTX2PF_8_RT_OFFSET 29433 4708 #define QM_REG_PQTX2PF_9_RT_OFFSET 29434 4709 #define QM_REG_PQTX2PF_10_RT_OFFSET 29435 4710 #define QM_REG_PQTX2PF_11_RT_OFFSET 29436 4711 #define QM_REG_PQTX2PF_12_RT_OFFSET 29437 4712 #define QM_REG_PQTX2PF_13_RT_OFFSET 29438 4713 #define QM_REG_PQTX2PF_14_RT_OFFSET 29439 4714 #define QM_REG_PQTX2PF_15_RT_OFFSET 29440 4715 #define QM_REG_PQTX2PF_16_RT_OFFSET 29441 4716 #define QM_REG_PQTX2PF_17_RT_OFFSET 29442 4717 #define QM_REG_PQTX2PF_18_RT_OFFSET 29443 4718 #define QM_REG_PQTX2PF_19_RT_OFFSET 29444 4719 #define QM_REG_PQTX2PF_20_RT_OFFSET 29445 4720 #define QM_REG_PQTX2PF_21_RT_OFFSET 29446 4721 #define QM_REG_PQTX2PF_22_RT_OFFSET 29447 4722 #define QM_REG_PQTX2PF_23_RT_OFFSET 29448 4723 #define QM_REG_PQTX2PF_24_RT_OFFSET 29449 4724 #define QM_REG_PQTX2PF_25_RT_OFFSET 29450 4725 #define QM_REG_PQTX2PF_26_RT_OFFSET 29451 4726 #define QM_REG_PQTX2PF_27_RT_OFFSET 29452 4727 #define QM_REG_PQTX2PF_28_RT_OFFSET 29453 4728 #define QM_REG_PQTX2PF_29_RT_OFFSET 29454 4729 #define QM_REG_PQTX2PF_30_RT_OFFSET 29455 4730 #define QM_REG_PQTX2PF_31_RT_OFFSET 29456 4731 #define QM_REG_PQTX2PF_32_RT_OFFSET 29457 4732 #define QM_REG_PQTX2PF_33_RT_OFFSET 29458 4733 #define QM_REG_PQTX2PF_34_RT_OFFSET 29459 4734 #define QM_REG_PQTX2PF_35_RT_OFFSET 29460 4735 #define QM_REG_PQTX2PF_36_RT_OFFSET 29461 4736 #define QM_REG_PQTX2PF_37_RT_OFFSET 29462 4737 #define QM_REG_PQTX2PF_38_RT_OFFSET 29463 4738 #define QM_REG_PQTX2PF_39_RT_OFFSET 29464 4739 #define QM_REG_PQTX2PF_40_RT_OFFSET 29465 4740 #define QM_REG_PQTX2PF_41_RT_OFFSET 29466 4741 #define QM_REG_PQTX2PF_42_RT_OFFSET 29467 4742 #define QM_REG_PQTX2PF_43_RT_OFFSET 29468 4743 #define QM_REG_PQTX2PF_44_RT_OFFSET 29469 4744 #define QM_REG_PQTX2PF_45_RT_OFFSET 29470 4745 #define QM_REG_PQTX2PF_46_RT_OFFSET 29471 4746 #define QM_REG_PQTX2PF_47_RT_OFFSET 29472 4747 #define QM_REG_PQTX2PF_48_RT_OFFSET 29473 4748 #define QM_REG_PQTX2PF_49_RT_OFFSET 29474 4749 #define QM_REG_PQTX2PF_50_RT_OFFSET 29475 4750 #define QM_REG_PQTX2PF_51_RT_OFFSET 29476 4751 #define QM_REG_PQTX2PF_52_RT_OFFSET 29477 4752 #define QM_REG_PQTX2PF_53_RT_OFFSET 29478 4753 #define QM_REG_PQTX2PF_54_RT_OFFSET 29479 4754 #define QM_REG_PQTX2PF_55_RT_OFFSET 29480 4755 #define QM_REG_PQTX2PF_56_RT_OFFSET 29481 4756 #define QM_REG_PQTX2PF_57_RT_OFFSET 29482 4757 #define QM_REG_PQTX2PF_58_RT_OFFSET 29483 4758 #define QM_REG_PQTX2PF_59_RT_OFFSET 29484 4759 #define QM_REG_PQTX2PF_60_RT_OFFSET 29485 4760 #define QM_REG_PQTX2PF_61_RT_OFFSET 29486 4761 #define QM_REG_PQTX2PF_62_RT_OFFSET 29487 4762 #define QM_REG_PQTX2PF_63_RT_OFFSET 29488 4763 #define QM_REG_PQOTHER2PF_0_RT_OFFSET 29489 4764 #define QM_REG_PQOTHER2PF_1_RT_OFFSET 29490 4765 #define QM_REG_PQOTHER2PF_2_RT_OFFSET 29491 4766 #define QM_REG_PQOTHER2PF_3_RT_OFFSET 29492 4767 #define QM_REG_PQOTHER2PF_4_RT_OFFSET 29493 4768 #define QM_REG_PQOTHER2PF_5_RT_OFFSET 29494 4769 #define QM_REG_PQOTHER2PF_6_RT_OFFSET 29495 4770 #define QM_REG_PQOTHER2PF_7_RT_OFFSET 29496 4771 #define QM_REG_PQOTHER2PF_8_RT_OFFSET 29497 4772 #define QM_REG_PQOTHER2PF_9_RT_OFFSET 29498 4773 #define QM_REG_PQOTHER2PF_10_RT_OFFSET 29499 4774 #define QM_REG_PQOTHER2PF_11_RT_OFFSET 29500 4775 #define QM_REG_PQOTHER2PF_12_RT_OFFSET 29501 4776 #define QM_REG_PQOTHER2PF_13_RT_OFFSET 29502 4777 #define QM_REG_PQOTHER2PF_14_RT_OFFSET 29503 4778 #define QM_REG_PQOTHER2PF_15_RT_OFFSET 29504 4779 #define QM_REG_RLGLBLPERIOD_0_RT_OFFSET 29505 4780 #define QM_REG_RLGLBLPERIOD_1_RT_OFFSET 29506 4781 #define QM_REG_RLGLBLPERIODTIMER_0_RT_OFFSET 29507 4782 #define QM_REG_RLGLBLPERIODTIMER_1_RT_OFFSET 29508 4783 #define QM_REG_RLGLBLPERIODSEL_0_RT_OFFSET 29509 4784 #define QM_REG_RLGLBLPERIODSEL_1_RT_OFFSET 29510 4785 #define QM_REG_RLGLBLPERIODSEL_2_RT_OFFSET 29511 4786 #define QM_REG_RLGLBLPERIODSEL_3_RT_OFFSET 29512 4787 #define QM_REG_RLGLBLPERIODSEL_4_RT_OFFSET 29513 4788 #define QM_REG_RLGLBLPERIODSEL_5_RT_OFFSET 29514 4789 #define QM_REG_RLGLBLPERIODSEL_6_RT_OFFSET 29515 4790 #define QM_REG_RLGLBLPERIODSEL_7_RT_OFFSET 29516 4791 #define QM_REG_RLGLBLINCVAL_RT_OFFSET 29517 4792 #define QM_REG_RLGLBLINCVAL_RT_SIZE 256 4793 #define QM_REG_RLGLBLUPPERBOUND_RT_OFFSET 29773 4794 #define QM_REG_RLGLBLUPPERBOUND_RT_SIZE 256 4795 #define QM_REG_RLGLBLCRD_RT_OFFSET 30029 4796 #define QM_REG_RLGLBLCRD_RT_SIZE 256 4797 #define QM_REG_RLGLBLENABLE_RT_OFFSET 30285 4798 #define QM_REG_RLPFPERIOD_RT_OFFSET 30286 4799 #define QM_REG_RLPFPERIODTIMER_RT_OFFSET 30287 4800 #define QM_REG_RLPFINCVAL_RT_OFFSET 30288 4801 #define QM_REG_RLPFINCVAL_RT_SIZE 16 4802 #define QM_REG_RLPFUPPERBOUND_RT_OFFSET 30304 4803 #define QM_REG_RLPFUPPERBOUND_RT_SIZE 16 4804 #define QM_REG_RLPFCRD_RT_OFFSET 30320 4805 #define QM_REG_RLPFCRD_RT_SIZE 16 4806 #define QM_REG_RLPFENABLE_RT_OFFSET 30336 4807 #define QM_REG_RLPFVOQENABLE_RT_OFFSET 30337 4808 #define QM_REG_WFQPFWEIGHT_RT_OFFSET 30338 4809 #define QM_REG_WFQPFWEIGHT_RT_SIZE 16 4810 #define QM_REG_WFQPFUPPERBOUND_RT_OFFSET 30354 4811 #define QM_REG_WFQPFUPPERBOUND_RT_SIZE 16 4812 #define QM_REG_WFQPFCRD_RT_OFFSET 30370 4813 #define QM_REG_WFQPFCRD_RT_SIZE 160 4814 #define QM_REG_WFQPFENABLE_RT_OFFSET 30530 4815 #define QM_REG_WFQVPENABLE_RT_OFFSET 30531 4816 #define QM_REG_BASEADDRTXPQ_RT_OFFSET 30532 4817 #define QM_REG_BASEADDRTXPQ_RT_SIZE 512 4818 #define QM_REG_TXPQMAP_RT_OFFSET 31044 4819 #define QM_REG_TXPQMAP_RT_SIZE 512 4820 #define QM_REG_WFQVPWEIGHT_RT_OFFSET 31556 4821 #define QM_REG_WFQVPWEIGHT_RT_SIZE 512 4822 #define QM_REG_WFQVPCRD_RT_OFFSET 32068 4823 #define QM_REG_WFQVPCRD_RT_SIZE 512 4824 #define QM_REG_WFQVPMAP_RT_OFFSET 32580 4825 #define QM_REG_WFQVPMAP_RT_SIZE 512 4826 #define QM_REG_PTRTBLTX_RT_OFFSET 33092 4827 #define QM_REG_PTRTBLTX_RT_SIZE 1024 4828 #define QM_REG_WFQPFCRD_MSB_RT_OFFSET 34116 4829 #define QM_REG_WFQPFCRD_MSB_RT_SIZE 160 4830 #define NIG_REG_TAG_ETHERTYPE_0_RT_OFFSET 34276 4831 #define NIG_REG_BRB_GATE_DNTFWD_PORT_RT_OFFSET 34277 4832 #define NIG_REG_OUTER_TAG_VALUE_LIST0_RT_OFFSET 34278 4833 #define NIG_REG_OUTER_TAG_VALUE_LIST1_RT_OFFSET 34279 4834 #define NIG_REG_OUTER_TAG_VALUE_LIST2_RT_OFFSET 34280 4835 #define NIG_REG_OUTER_TAG_VALUE_LIST3_RT_OFFSET 34281 4836 #define NIG_REG_LLH_FUNC_TAGMAC_CLS_TYPE_RT_OFFSET 34282 4837 #define NIG_REG_LLH_FUNC_TAG_EN_RT_OFFSET 34283 4838 #define NIG_REG_LLH_FUNC_TAG_EN_RT_SIZE 4 4839 #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_OFFSET 34287 4840 #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_SIZE 4 4841 #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_OFFSET 34291 4842 #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_SIZE 32 4843 #define NIG_REG_LLH_FUNC_FILTER_EN_RT_OFFSET 34323 4844 #define NIG_REG_LLH_FUNC_FILTER_EN_RT_SIZE 16 4845 #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_OFFSET 34339 4846 #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_SIZE 16 4847 #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 34355 4848 #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 16 4849 #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_OFFSET 34371 4850 #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_SIZE 16 4851 #define NIG_REG_TX_EDPM_CTRL_RT_OFFSET 34387 4852 #define NIG_REG_PPF_TO_ENGINE_SEL_RT_OFFSET 34388 4853 #define NIG_REG_PPF_TO_ENGINE_SEL_RT_SIZE 8 4854 #define CDU_REG_CID_ADDR_PARAMS_RT_OFFSET 34396 4855 #define CDU_REG_SEGMENT0_PARAMS_RT_OFFSET 34397 4856 #define CDU_REG_SEGMENT1_PARAMS_RT_OFFSET 34398 4857 #define CDU_REG_PF_SEG0_TYPE_OFFSET_RT_OFFSET 34399 4858 #define CDU_REG_PF_SEG1_TYPE_OFFSET_RT_OFFSET 34400 4859 #define CDU_REG_PF_SEG2_TYPE_OFFSET_RT_OFFSET 34401 4860 #define CDU_REG_PF_SEG3_TYPE_OFFSET_RT_OFFSET 34402 4861 #define CDU_REG_PF_FL_SEG0_TYPE_OFFSET_RT_OFFSET 34403 4862 #define CDU_REG_PF_FL_SEG1_TYPE_OFFSET_RT_OFFSET 34404 4863 #define CDU_REG_PF_FL_SEG2_TYPE_OFFSET_RT_OFFSET 34405 4864 #define CDU_REG_PF_FL_SEG3_TYPE_OFFSET_RT_OFFSET 34406 4865 #define CDU_REG_VF_SEG_TYPE_OFFSET_RT_OFFSET 34407 4866 #define CDU_REG_VF_FL_SEG_TYPE_OFFSET_RT_OFFSET 34408 4867 #define PBF_REG_TAG_ETHERTYPE_0_RT_OFFSET 34409 4868 #define PBF_REG_BTB_SHARED_AREA_SIZE_RT_OFFSET 34410 4869 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ0_RT_OFFSET 34411 4870 #define PBF_REG_BTB_GUARANTEED_VOQ0_RT_OFFSET 34412 4871 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ0_RT_OFFSET 34413 4872 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ1_RT_OFFSET 34414 4873 #define PBF_REG_BTB_GUARANTEED_VOQ1_RT_OFFSET 34415 4874 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ1_RT_OFFSET 34416 4875 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ2_RT_OFFSET 34417 4876 #define PBF_REG_BTB_GUARANTEED_VOQ2_RT_OFFSET 34418 4877 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ2_RT_OFFSET 34419 4878 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ3_RT_OFFSET 34420 4879 #define PBF_REG_BTB_GUARANTEED_VOQ3_RT_OFFSET 34421 4880 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ3_RT_OFFSET 34422 4881 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ4_RT_OFFSET 34423 4882 #define PBF_REG_BTB_GUARANTEED_VOQ4_RT_OFFSET 34424 4883 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ4_RT_OFFSET 34425 4884 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ5_RT_OFFSET 34426 4885 #define PBF_REG_BTB_GUARANTEED_VOQ5_RT_OFFSET 34427 4886 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ5_RT_OFFSET 34428 4887 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ6_RT_OFFSET 34429 4888 #define PBF_REG_BTB_GUARANTEED_VOQ6_RT_OFFSET 34430 4889 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ6_RT_OFFSET 34431 4890 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ7_RT_OFFSET 34432 4891 #define PBF_REG_BTB_GUARANTEED_VOQ7_RT_OFFSET 34433 4892 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ7_RT_OFFSET 34434 4893 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ8_RT_OFFSET 34435 4894 #define PBF_REG_BTB_GUARANTEED_VOQ8_RT_OFFSET 34436 4895 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ8_RT_OFFSET 34437 4896 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ9_RT_OFFSET 34438 4897 #define PBF_REG_BTB_GUARANTEED_VOQ9_RT_OFFSET 34439 4898 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ9_RT_OFFSET 34440 4899 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ10_RT_OFFSET 34441 4900 #define PBF_REG_BTB_GUARANTEED_VOQ10_RT_OFFSET 34442 4901 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ10_RT_OFFSET 34443 4902 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ11_RT_OFFSET 34444 4903 #define PBF_REG_BTB_GUARANTEED_VOQ11_RT_OFFSET 34445 4904 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ11_RT_OFFSET 34446 4905 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ12_RT_OFFSET 34447 4906 #define PBF_REG_BTB_GUARANTEED_VOQ12_RT_OFFSET 34448 4907 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ12_RT_OFFSET 34449 4908 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ13_RT_OFFSET 34450 4909 #define PBF_REG_BTB_GUARANTEED_VOQ13_RT_OFFSET 34451 4910 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ13_RT_OFFSET 34452 4911 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ14_RT_OFFSET 34453 4912 #define PBF_REG_BTB_GUARANTEED_VOQ14_RT_OFFSET 34454 4913 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ14_RT_OFFSET 34455 4914 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ15_RT_OFFSET 34456 4915 #define PBF_REG_BTB_GUARANTEED_VOQ15_RT_OFFSET 34457 4916 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ15_RT_OFFSET 34458 4917 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ16_RT_OFFSET 34459 4918 #define PBF_REG_BTB_GUARANTEED_VOQ16_RT_OFFSET 34460 4919 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ16_RT_OFFSET 34461 4920 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ17_RT_OFFSET 34462 4921 #define PBF_REG_BTB_GUARANTEED_VOQ17_RT_OFFSET 34463 4922 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ17_RT_OFFSET 34464 4923 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ18_RT_OFFSET 34465 4924 #define PBF_REG_BTB_GUARANTEED_VOQ18_RT_OFFSET 34466 4925 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ18_RT_OFFSET 34467 4926 #define PBF_REG_YCMD_QS_NUM_LINES_VOQ19_RT_OFFSET 34468 4927 #define PBF_REG_BTB_GUARANTEED_VOQ19_RT_OFFSET 34469 4928 #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ19_RT_OFFSET 34470 4929 #define XCM_REG_CON_PHY_Q3_RT_OFFSET 34471 4930 4931 #define RUNTIME_ARRAY_SIZE 34472 4932 4933 /* Init Callbacks */ 4934 #define DMAE_READY_CB 0 4935 4936 /* The eth storm context for the Tstorm */ 4937 struct tstorm_eth_conn_st_ctx { 4938 __le32 reserved[4]; 4939 }; 4940 4941 /* The eth storm context for the Pstorm */ 4942 struct pstorm_eth_conn_st_ctx { 4943 __le32 reserved[8]; 4944 }; 4945 4946 /* The eth storm context for the Xstorm */ 4947 struct xstorm_eth_conn_st_ctx { 4948 __le32 reserved[60]; 4949 }; 4950 4951 struct e4_xstorm_eth_conn_ag_ctx { 4952 u8 reserved0; 4953 u8 state; 4954 u8 flags0; 4955 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 4956 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 4957 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK 0x1 4958 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT 1 4959 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK 0x1 4960 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT 2 4961 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 4962 #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 4963 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK 0x1 4964 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT 4 4965 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK 0x1 4966 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT 5 4967 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK 0x1 4968 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT 6 4969 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK 0x1 4970 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT 7 4971 u8 flags1; 4972 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK 0x1 4973 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT 0 4974 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK 0x1 4975 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT 1 4976 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK 0x1 4977 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT 2 4978 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_MASK 0x1 4979 #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT 3 4980 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK 0x1 4981 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT 4 4982 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK 0x1 4983 #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT 5 4984 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1 4985 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6 4986 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1 4987 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7 4988 u8 flags2; 4989 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3 4990 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 0 4991 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3 4992 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 2 4993 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 4994 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 4 4995 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3 4996 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 6 4997 u8 flags3; 4998 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3 4999 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 0 5000 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3 5001 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 2 5002 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3 5003 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 4 5004 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3 5005 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 6 5006 u8 flags4; 5007 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3 5008 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 0 5009 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3 5010 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 2 5011 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3 5012 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 4 5013 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_MASK 0x3 5014 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT 6 5015 u8 flags5; 5016 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_MASK 0x3 5017 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT 0 5018 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_MASK 0x3 5019 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT 2 5020 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_MASK 0x3 5021 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT 4 5022 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_MASK 0x3 5023 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT 6 5024 u8 flags6; 5025 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3 5026 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0 5027 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3 5028 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2 5029 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK 0x3 5030 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT 4 5031 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK 0x3 5032 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT 6 5033 u8 flags7; 5034 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 5035 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 5036 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK 0x3 5037 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT 2 5038 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK 0x3 5039 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT 4 5040 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1 5041 #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 6 5042 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1 5043 #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 7 5044 u8 flags8; 5045 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 5046 #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 0 5047 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 5048 #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 1 5049 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1 5050 #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 2 5051 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1 5052 #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 3 5053 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1 5054 #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 4 5055 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1 5056 #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 5 5057 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1 5058 #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 6 5059 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1 5060 #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 7 5061 u8 flags9; 5062 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1 5063 #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 0 5064 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK 0x1 5065 #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT 1 5066 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK 0x1 5067 #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT 2 5068 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK 0x1 5069 #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT 3 5070 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK 0x1 5071 #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT 4 5072 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK 0x1 5073 #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT 5 5074 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1 5075 #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6 5076 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1 5077 #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7 5078 u8 flags10; 5079 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 5080 #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT 0 5081 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1 5082 #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1 5083 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 5084 #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2 5085 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK 0x1 5086 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT 3 5087 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 5088 #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 5089 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1 5090 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5 5091 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK 0x1 5092 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT 6 5093 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK 0x1 5094 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT 7 5095 u8 flags11; 5096 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK 0x1 5097 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT 0 5098 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK 0x1 5099 #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT 1 5100 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1 5101 #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2 5102 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 5103 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 3 5104 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1 5105 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 4 5106 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 5107 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 5 5108 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 5109 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 5110 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK 0x1 5111 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT 7 5112 u8 flags12; 5113 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK 0x1 5114 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT 0 5115 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK 0x1 5116 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT 1 5117 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 5118 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 5119 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 5120 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 5121 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK 0x1 5122 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT 4 5123 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK 0x1 5124 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT 5 5125 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK 0x1 5126 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT 6 5127 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK 0x1 5128 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT 7 5129 u8 flags13; 5130 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK 0x1 5131 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT 0 5132 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK 0x1 5133 #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT 1 5134 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 5135 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 5136 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 5137 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 5138 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 5139 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 5140 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 5141 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 5142 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 5143 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 5144 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 5145 #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 5146 u8 flags14; 5147 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1 5148 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0 5149 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1 5150 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1 5151 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1 5152 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2 5153 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1 5154 #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3 5155 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1 5156 #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4 5157 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1 5158 #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5 5159 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK 0x3 5160 #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT 6 5161 u8 edpm_event_id; 5162 __le16 physical_q0; 5163 __le16 e5_reserved1; 5164 __le16 edpm_num_bds; 5165 __le16 tx_bd_cons; 5166 __le16 tx_bd_prod; 5167 __le16 updated_qm_pq_id; 5168 __le16 conn_dpi; 5169 u8 byte3; 5170 u8 byte4; 5171 u8 byte5; 5172 u8 byte6; 5173 __le32 reg0; 5174 __le32 reg1; 5175 __le32 reg2; 5176 __le32 reg3; 5177 __le32 reg4; 5178 __le32 reg5; 5179 __le32 reg6; 5180 __le16 word7; 5181 __le16 word8; 5182 __le16 word9; 5183 __le16 word10; 5184 __le32 reg7; 5185 __le32 reg8; 5186 __le32 reg9; 5187 u8 byte7; 5188 u8 byte8; 5189 u8 byte9; 5190 u8 byte10; 5191 u8 byte11; 5192 u8 byte12; 5193 u8 byte13; 5194 u8 byte14; 5195 u8 byte15; 5196 u8 e5_reserved; 5197 __le16 word11; 5198 __le32 reg10; 5199 __le32 reg11; 5200 __le32 reg12; 5201 __le32 reg13; 5202 __le32 reg14; 5203 __le32 reg15; 5204 __le32 reg16; 5205 __le32 reg17; 5206 __le32 reg18; 5207 __le32 reg19; 5208 __le16 word12; 5209 __le16 word13; 5210 __le16 word14; 5211 __le16 word15; 5212 }; 5213 5214 /* The eth storm context for the Ystorm */ 5215 struct ystorm_eth_conn_st_ctx { 5216 __le32 reserved[8]; 5217 }; 5218 5219 struct e4_ystorm_eth_conn_ag_ctx { 5220 u8 byte0; 5221 u8 state; 5222 u8 flags0; 5223 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 5224 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0 5225 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 5226 #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1 5227 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3 5228 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 2 5229 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK 0x3 5230 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT 4 5231 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 5232 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6 5233 u8 flags1; 5234 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1 5235 #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0 5236 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK 0x1 5237 #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT 1 5238 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 5239 #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2 5240 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 5241 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3 5242 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 5243 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4 5244 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 5245 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5 5246 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 5247 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6 5248 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 5249 #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7 5250 u8 tx_q0_int_coallecing_timeset; 5251 u8 byte3; 5252 __le16 word0; 5253 __le32 terminate_spqe; 5254 __le32 reg1; 5255 __le16 tx_bd_cons_upd; 5256 __le16 word2; 5257 __le16 word3; 5258 __le16 word4; 5259 __le32 reg2; 5260 __le32 reg3; 5261 }; 5262 5263 struct e4_tstorm_eth_conn_ag_ctx { 5264 u8 byte0; 5265 u8 byte1; 5266 u8 flags0; 5267 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 5268 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0 5269 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 5270 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1 5271 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_MASK 0x1 5272 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT 2 5273 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_MASK 0x1 5274 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT 3 5275 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_MASK 0x1 5276 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT 4 5277 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_MASK 0x1 5278 #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT 5 5279 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3 5280 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 6 5281 u8 flags1; 5282 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3 5283 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 0 5284 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 5285 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 2 5286 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3 5287 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 4 5288 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3 5289 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 6 5290 u8 flags2; 5291 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3 5292 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 0 5293 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3 5294 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 2 5295 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3 5296 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 4 5297 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3 5298 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 6 5299 u8 flags3; 5300 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3 5301 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 0 5302 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3 5303 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 2 5304 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1 5305 #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 4 5306 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1 5307 #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 5 5308 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 5309 #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 6 5310 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 5311 #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 7 5312 u8 flags4; 5313 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1 5314 #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 0 5315 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1 5316 #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 1 5317 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1 5318 #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 2 5319 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1 5320 #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 3 5321 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1 5322 #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 4 5323 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1 5324 #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 5 5325 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1 5326 #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 6 5327 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 5328 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7 5329 u8 flags5; 5330 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 5331 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0 5332 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 5333 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1 5334 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 5335 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2 5336 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 5337 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3 5338 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 5339 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4 5340 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK 0x1 5341 #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5 5342 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 5343 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6 5344 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1 5345 #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7 5346 __le32 reg0; 5347 __le32 reg1; 5348 __le32 reg2; 5349 __le32 reg3; 5350 __le32 reg4; 5351 __le32 reg5; 5352 __le32 reg6; 5353 __le32 reg7; 5354 __le32 reg8; 5355 u8 byte2; 5356 u8 byte3; 5357 __le16 rx_bd_cons; 5358 u8 byte4; 5359 u8 byte5; 5360 __le16 rx_bd_prod; 5361 __le16 word2; 5362 __le16 word3; 5363 __le32 reg9; 5364 __le32 reg10; 5365 }; 5366 5367 struct e4_ustorm_eth_conn_ag_ctx { 5368 u8 byte0; 5369 u8 byte1; 5370 u8 flags0; 5371 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 5372 #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0 5373 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 5374 #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1 5375 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK 0x3 5376 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT 2 5377 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK 0x3 5378 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT 4 5379 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 5380 #define E4_USTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6 5381 u8 flags1; 5382 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3 5383 #define E4_USTORM_ETH_CONN_AG_CTX_CF3_SHIFT 0 5384 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK 0x3 5385 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT 2 5386 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK 0x3 5387 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT 4 5388 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3 5389 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 6 5390 u8 flags2; 5391 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK 0x1 5392 #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0 5393 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK 0x1 5394 #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1 5395 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 5396 #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2 5397 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 5398 #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 3 5399 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK 0x1 5400 #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT 4 5401 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK 0x1 5402 #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT 5 5403 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1 5404 #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 6 5405 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 5406 #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7 5407 u8 flags3; 5408 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 5409 #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0 5410 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 5411 #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1 5412 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 5413 #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2 5414 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 5415 #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3 5416 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 5417 #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4 5418 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1 5419 #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 5 5420 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 5421 #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6 5422 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1 5423 #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7 5424 u8 byte2; 5425 u8 byte3; 5426 __le16 word0; 5427 __le16 tx_bd_cons; 5428 __le32 reg0; 5429 __le32 reg1; 5430 __le32 reg2; 5431 __le32 tx_int_coallecing_timeset; 5432 __le16 tx_drv_bd_cons; 5433 __le16 rx_drv_cqe_cons; 5434 }; 5435 5436 /* The eth storm context for the Ustorm */ 5437 struct ustorm_eth_conn_st_ctx { 5438 __le32 reserved[40]; 5439 }; 5440 5441 /* The eth storm context for the Mstorm */ 5442 struct mstorm_eth_conn_st_ctx { 5443 __le32 reserved[8]; 5444 }; 5445 5446 /* eth connection context */ 5447 struct e4_eth_conn_context { 5448 struct tstorm_eth_conn_st_ctx tstorm_st_context; 5449 struct regpair tstorm_st_padding[2]; 5450 struct pstorm_eth_conn_st_ctx pstorm_st_context; 5451 struct xstorm_eth_conn_st_ctx xstorm_st_context; 5452 struct e4_xstorm_eth_conn_ag_ctx xstorm_ag_context; 5453 struct e4_tstorm_eth_conn_ag_ctx tstorm_ag_context; 5454 struct ystorm_eth_conn_st_ctx ystorm_st_context; 5455 struct e4_ystorm_eth_conn_ag_ctx ystorm_ag_context; 5456 struct e4_ustorm_eth_conn_ag_ctx ustorm_ag_context; 5457 struct ustorm_eth_conn_st_ctx ustorm_st_context; 5458 struct mstorm_eth_conn_st_ctx mstorm_st_context; 5459 }; 5460 5461 /* Ethernet filter types: mac/vlan/pair */ 5462 enum eth_error_code { 5463 ETH_OK = 0x00, 5464 ETH_FILTERS_MAC_ADD_FAIL_FULL, 5465 ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2, 5466 ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2, 5467 ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2, 5468 ETH_FILTERS_MAC_DEL_FAIL_NOF, 5469 ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2, 5470 ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2, 5471 ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC, 5472 ETH_FILTERS_VLAN_ADD_FAIL_FULL, 5473 ETH_FILTERS_VLAN_ADD_FAIL_DUP, 5474 ETH_FILTERS_VLAN_DEL_FAIL_NOF, 5475 ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1, 5476 ETH_FILTERS_PAIR_ADD_FAIL_DUP, 5477 ETH_FILTERS_PAIR_ADD_FAIL_FULL, 5478 ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC, 5479 ETH_FILTERS_PAIR_DEL_FAIL_NOF, 5480 ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1, 5481 ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC, 5482 ETH_FILTERS_VNI_ADD_FAIL_FULL, 5483 ETH_FILTERS_VNI_ADD_FAIL_DUP, 5484 ETH_FILTERS_GFT_UPDATE_FAIL, 5485 ETH_RX_QUEUE_FAIL_LOAD_VF_DATA, 5486 ETH_FILTERS_GFS_ADD_FILTER_FAIL_MAX_HOPS, 5487 ETH_FILTERS_GFS_ADD_FILTER_FAIL_NO_FREE_ENRTY, 5488 ETH_FILTERS_GFS_ADD_FILTER_FAIL_ALREADY_EXISTS, 5489 ETH_FILTERS_GFS_ADD_FILTER_FAIL_PCI_ERROR, 5490 ETH_FILTERS_GFS_ADD_FINLER_FAIL_MAGIC_NUM_ERROR, 5491 ETH_FILTERS_GFS_DEL_FILTER_FAIL_MAX_HOPS, 5492 ETH_FILTERS_GFS_DEL_FILTER_FAIL_NO_MATCH_ENRTY, 5493 ETH_FILTERS_GFS_DEL_FILTER_FAIL_PCI_ERROR, 5494 ETH_FILTERS_GFS_DEL_FILTER_FAIL_MAGIC_NUM_ERROR, 5495 MAX_ETH_ERROR_CODE 5496 }; 5497 5498 /* Opcodes for the event ring */ 5499 enum eth_event_opcode { 5500 ETH_EVENT_UNUSED, 5501 ETH_EVENT_VPORT_START, 5502 ETH_EVENT_VPORT_UPDATE, 5503 ETH_EVENT_VPORT_STOP, 5504 ETH_EVENT_TX_QUEUE_START, 5505 ETH_EVENT_TX_QUEUE_STOP, 5506 ETH_EVENT_RX_QUEUE_START, 5507 ETH_EVENT_RX_QUEUE_UPDATE, 5508 ETH_EVENT_RX_QUEUE_STOP, 5509 ETH_EVENT_FILTERS_UPDATE, 5510 ETH_EVENT_RX_ADD_OPENFLOW_FILTER, 5511 ETH_EVENT_RX_DELETE_OPENFLOW_FILTER, 5512 ETH_EVENT_RX_CREATE_OPENFLOW_ACTION, 5513 ETH_EVENT_RX_ADD_UDP_FILTER, 5514 ETH_EVENT_RX_DELETE_UDP_FILTER, 5515 ETH_EVENT_RX_CREATE_GFT_ACTION, 5516 ETH_EVENT_RX_GFT_UPDATE_FILTER, 5517 ETH_EVENT_TX_QUEUE_UPDATE, 5518 ETH_EVENT_RGFS_ADD_FILTER, 5519 ETH_EVENT_RGFS_DEL_FILTER, 5520 ETH_EVENT_TGFS_ADD_FILTER, 5521 ETH_EVENT_TGFS_DEL_FILTER, 5522 ETH_EVENT_GFS_COUNTERS_REPORT_REQUEST, 5523 MAX_ETH_EVENT_OPCODE 5524 }; 5525 5526 /* Classify rule types in E2/E3 */ 5527 enum eth_filter_action { 5528 ETH_FILTER_ACTION_UNUSED, 5529 ETH_FILTER_ACTION_REMOVE, 5530 ETH_FILTER_ACTION_ADD, 5531 ETH_FILTER_ACTION_REMOVE_ALL, 5532 MAX_ETH_FILTER_ACTION 5533 }; 5534 5535 /* Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$ */ 5536 struct eth_filter_cmd { 5537 u8 type; 5538 u8 vport_id; 5539 u8 action; 5540 u8 reserved0; 5541 __le32 vni; 5542 __le16 mac_lsb; 5543 __le16 mac_mid; 5544 __le16 mac_msb; 5545 __le16 vlan_id; 5546 }; 5547 5548 /* $$KEEP_ENDIANNESS$$ */ 5549 struct eth_filter_cmd_header { 5550 u8 rx; 5551 u8 tx; 5552 u8 cmd_cnt; 5553 u8 assert_on_error; 5554 u8 reserved1[4]; 5555 }; 5556 5557 /* Ethernet filter types: mac/vlan/pair */ 5558 enum eth_filter_type { 5559 ETH_FILTER_TYPE_UNUSED, 5560 ETH_FILTER_TYPE_MAC, 5561 ETH_FILTER_TYPE_VLAN, 5562 ETH_FILTER_TYPE_PAIR, 5563 ETH_FILTER_TYPE_INNER_MAC, 5564 ETH_FILTER_TYPE_INNER_VLAN, 5565 ETH_FILTER_TYPE_INNER_PAIR, 5566 ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR, 5567 ETH_FILTER_TYPE_MAC_VNI_PAIR, 5568 ETH_FILTER_TYPE_VNI, 5569 MAX_ETH_FILTER_TYPE 5570 }; 5571 5572 /* inner to inner vlan priority translation configurations */ 5573 struct eth_in_to_in_pri_map_cfg { 5574 u8 inner_vlan_pri_remap_en; 5575 u8 reserved[7]; 5576 u8 non_rdma_in_to_in_pri_map[8]; 5577 u8 rdma_in_to_in_pri_map[8]; 5578 }; 5579 5580 /* Eth IPv4 Fragment Type */ 5581 enum eth_ipv4_frag_type { 5582 ETH_IPV4_NOT_FRAG, 5583 ETH_IPV4_FIRST_FRAG, 5584 ETH_IPV4_NON_FIRST_FRAG, 5585 MAX_ETH_IPV4_FRAG_TYPE 5586 }; 5587 5588 /* eth IPv4 Fragment Type */ 5589 enum eth_ip_type { 5590 ETH_IPV4, 5591 ETH_IPV6, 5592 MAX_ETH_IP_TYPE 5593 }; 5594 5595 /* Ethernet Ramrod Command IDs */ 5596 enum eth_ramrod_cmd_id { 5597 ETH_RAMROD_UNUSED, 5598 ETH_RAMROD_VPORT_START, 5599 ETH_RAMROD_VPORT_UPDATE, 5600 ETH_RAMROD_VPORT_STOP, 5601 ETH_RAMROD_RX_QUEUE_START, 5602 ETH_RAMROD_RX_QUEUE_STOP, 5603 ETH_RAMROD_TX_QUEUE_START, 5604 ETH_RAMROD_TX_QUEUE_STOP, 5605 ETH_RAMROD_FILTERS_UPDATE, 5606 ETH_RAMROD_RX_QUEUE_UPDATE, 5607 ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION, 5608 ETH_RAMROD_RX_ADD_OPENFLOW_FILTER, 5609 ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER, 5610 ETH_RAMROD_RX_ADD_UDP_FILTER, 5611 ETH_RAMROD_RX_DELETE_UDP_FILTER, 5612 ETH_RAMROD_RX_CREATE_GFT_ACTION, 5613 ETH_RAMROD_GFT_UPDATE_FILTER, 5614 ETH_RAMROD_TX_QUEUE_UPDATE, 5615 ETH_RAMROD_RGFS_FILTER_ADD, 5616 ETH_RAMROD_RGFS_FILTER_DEL, 5617 ETH_RAMROD_TGFS_FILTER_ADD, 5618 ETH_RAMROD_TGFS_FILTER_DEL, 5619 ETH_RAMROD_GFS_COUNTERS_REPORT_REQUEST, 5620 MAX_ETH_RAMROD_CMD_ID 5621 }; 5622 5623 /* Return code from eth sp ramrods */ 5624 struct eth_return_code { 5625 u8 value; 5626 #define ETH_RETURN_CODE_ERR_CODE_MASK 0x3F 5627 #define ETH_RETURN_CODE_ERR_CODE_SHIFT 0 5628 #define ETH_RETURN_CODE_RESERVED_MASK 0x1 5629 #define ETH_RETURN_CODE_RESERVED_SHIFT 6 5630 #define ETH_RETURN_CODE_RX_TX_MASK 0x1 5631 #define ETH_RETURN_CODE_RX_TX_SHIFT 7 5632 }; 5633 5634 /* tx destination enum */ 5635 enum eth_tx_dst_mode_config_enum { 5636 ETH_TX_DST_MODE_CONFIG_DISABLE, 5637 ETH_TX_DST_MODE_CONFIG_FORWARD_DATA_IN_BD, 5638 ETH_TX_DST_MODE_CONFIG_FORWARD_DATA_IN_VPORT, 5639 MAX_ETH_TX_DST_MODE_CONFIG_ENUM 5640 }; 5641 5642 /* What to do in case an error occurs */ 5643 enum eth_tx_err { 5644 ETH_TX_ERR_DROP, 5645 ETH_TX_ERR_ASSERT_MALICIOUS, 5646 MAX_ETH_TX_ERR 5647 }; 5648 5649 /* Array of the different error type behaviors */ 5650 struct eth_tx_err_vals { 5651 __le16 values; 5652 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK 0x1 5653 #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT 0 5654 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK 0x1 5655 #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT 1 5656 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK 0x1 5657 #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT 2 5658 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK 0x1 5659 #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT 3 5660 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK 0x1 5661 #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4 5662 #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK 0x1 5663 #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT 5 5664 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK 0x1 5665 #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT 6 5666 #define ETH_TX_ERR_VALS_ILLEGAL_BD_FLAGS_MASK 0x1 5667 #define ETH_TX_ERR_VALS_ILLEGAL_BD_FLAGS_SHIFT 7 5668 #define ETH_TX_ERR_VALS_RESERVED_MASK 0xFF 5669 #define ETH_TX_ERR_VALS_RESERVED_SHIFT 8 5670 }; 5671 5672 /* vport rss configuration data */ 5673 struct eth_vport_rss_config { 5674 __le16 capabilities; 5675 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK 0x1 5676 #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT 0 5677 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK 0x1 5678 #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT 1 5679 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK 0x1 5680 #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT 2 5681 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK 0x1 5682 #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT 3 5683 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK 0x1 5684 #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT 4 5685 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK 0x1 5686 #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT 5 5687 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK 0x1 5688 #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6 5689 #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK 0x1FF 5690 #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT 7 5691 u8 rss_id; 5692 u8 rss_mode; 5693 u8 update_rss_key; 5694 u8 update_rss_ind_table; 5695 u8 update_rss_capabilities; 5696 u8 tbl_size; 5697 __le32 reserved2[2]; 5698 __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM]; 5699 __le32 rss_key[ETH_RSS_KEY_SIZE_REGS]; 5700 __le32 reserved3[2]; 5701 }; 5702 5703 /* eth vport RSS mode */ 5704 enum eth_vport_rss_mode { 5705 ETH_VPORT_RSS_MODE_DISABLED, 5706 ETH_VPORT_RSS_MODE_REGULAR, 5707 MAX_ETH_VPORT_RSS_MODE 5708 }; 5709 5710 /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */ 5711 struct eth_vport_rx_mode { 5712 __le16 state; 5713 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK 0x1 5714 #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT 0 5715 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK 0x1 5716 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT 1 5717 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK 0x1 5718 #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2 5719 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK 0x1 5720 #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT 3 5721 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK 0x1 5722 #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT 4 5723 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK 0x1 5724 #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT 5 5725 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_MASK 0x1 5726 #define ETH_VPORT_RX_MODE_ACCEPT_ANY_VNI_SHIFT 6 5727 #define ETH_VPORT_RX_MODE_RESERVED1_MASK 0x1FF 5728 #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT 7 5729 }; 5730 5731 /* Command for setting tpa parameters */ 5732 struct eth_vport_tpa_param { 5733 u8 tpa_ipv4_en_flg; 5734 u8 tpa_ipv6_en_flg; 5735 u8 tpa_ipv4_tunn_en_flg; 5736 u8 tpa_ipv6_tunn_en_flg; 5737 u8 tpa_pkt_split_flg; 5738 u8 tpa_hdr_data_split_flg; 5739 u8 tpa_gro_consistent_flg; 5740 5741 u8 tpa_max_aggs_num; 5742 5743 __le16 tpa_max_size; 5744 __le16 tpa_min_size_to_start; 5745 5746 __le16 tpa_min_size_to_cont; 5747 u8 max_buff_num; 5748 u8 reserved; 5749 }; 5750 5751 /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */ 5752 struct eth_vport_tx_mode { 5753 __le16 state; 5754 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK 0x1 5755 #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT 0 5756 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK 0x1 5757 #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1 5758 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK 0x1 5759 #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT 2 5760 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK 0x1 5761 #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3 5762 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK 0x1 5763 #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4 5764 #define ETH_VPORT_TX_MODE_RESERVED1_MASK 0x7FF 5765 #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT 5 5766 }; 5767 5768 /* GFT filter update action type */ 5769 enum gft_filter_update_action { 5770 GFT_ADD_FILTER, 5771 GFT_DELETE_FILTER, 5772 MAX_GFT_FILTER_UPDATE_ACTION 5773 }; 5774 5775 /* Ramrod data for rx add openflow filter */ 5776 struct rx_add_openflow_filter_data { 5777 __le16 action_icid; 5778 u8 priority; 5779 u8 reserved0; 5780 __le32 tenant_id; 5781 __le16 dst_mac_hi; 5782 __le16 dst_mac_mid; 5783 __le16 dst_mac_lo; 5784 __le16 src_mac_hi; 5785 __le16 src_mac_mid; 5786 __le16 src_mac_lo; 5787 __le16 vlan_id; 5788 __le16 l2_eth_type; 5789 u8 ipv4_dscp; 5790 u8 ipv4_frag_type; 5791 u8 ipv4_over_ip; 5792 u8 tenant_id_exists; 5793 __le32 ipv4_dst_addr; 5794 __le32 ipv4_src_addr; 5795 __le16 l4_dst_port; 5796 __le16 l4_src_port; 5797 }; 5798 5799 /* Ramrod data for rx create gft action */ 5800 struct rx_create_gft_action_data { 5801 u8 vport_id; 5802 u8 reserved[7]; 5803 }; 5804 5805 /* Ramrod data for rx create openflow action */ 5806 struct rx_create_openflow_action_data { 5807 u8 vport_id; 5808 u8 reserved[7]; 5809 }; 5810 5811 /* Ramrod data for rx queue start ramrod */ 5812 struct rx_queue_start_ramrod_data { 5813 __le16 rx_queue_id; 5814 __le16 num_of_pbl_pages; 5815 __le16 bd_max_bytes; 5816 __le16 sb_id; 5817 u8 sb_index; 5818 u8 vport_id; 5819 u8 default_rss_queue_flg; 5820 u8 complete_cqe_flg; 5821 u8 complete_event_flg; 5822 u8 stats_counter_id; 5823 u8 pin_context; 5824 u8 pxp_tph_valid_bd; 5825 u8 pxp_tph_valid_pkt; 5826 u8 pxp_st_hint; 5827 5828 __le16 pxp_st_index; 5829 u8 pmd_mode; 5830 5831 u8 notify_en; 5832 u8 toggle_val; 5833 5834 u8 vf_rx_prod_index; 5835 u8 vf_rx_prod_use_zone_a; 5836 u8 reserved[5]; 5837 __le16 reserved1; 5838 struct regpair cqe_pbl_addr; 5839 struct regpair bd_base; 5840 struct regpair reserved2; 5841 }; 5842 5843 /* Ramrod data for rx queue stop ramrod */ 5844 struct rx_queue_stop_ramrod_data { 5845 __le16 rx_queue_id; 5846 u8 complete_cqe_flg; 5847 u8 complete_event_flg; 5848 u8 vport_id; 5849 u8 reserved[3]; 5850 }; 5851 5852 /* Ramrod data for rx queue update ramrod */ 5853 struct rx_queue_update_ramrod_data { 5854 __le16 rx_queue_id; 5855 u8 complete_cqe_flg; 5856 u8 complete_event_flg; 5857 u8 vport_id; 5858 u8 set_default_rss_queue; 5859 u8 reserved[3]; 5860 u8 reserved1; 5861 u8 reserved2; 5862 u8 reserved3; 5863 __le16 reserved4; 5864 __le16 reserved5; 5865 struct regpair reserved6; 5866 }; 5867 5868 /* Ramrod data for rx Add UDP Filter */ 5869 struct rx_udp_filter_data { 5870 __le16 action_icid; 5871 __le16 vlan_id; 5872 u8 ip_type; 5873 u8 tenant_id_exists; 5874 __le16 reserved1; 5875 __le32 ip_dst_addr[4]; 5876 __le32 ip_src_addr[4]; 5877 __le16 udp_dst_port; 5878 __le16 udp_src_port; 5879 __le32 tenant_id; 5880 }; 5881 5882 /* Add or delete GFT filter - filter is packet header of type of packet wished 5883 * to pass certain FW flow. 5884 */ 5885 struct rx_update_gft_filter_data { 5886 struct regpair pkt_hdr_addr; 5887 __le16 pkt_hdr_length; 5888 __le16 action_icid; 5889 __le16 rx_qid; 5890 __le16 flow_id; 5891 __le16 vport_id; 5892 u8 action_icid_valid; 5893 u8 rx_qid_valid; 5894 u8 flow_id_valid; 5895 u8 filter_action; 5896 u8 assert_on_error; 5897 u8 inner_vlan_removal_en; 5898 }; 5899 5900 /* Ramrod data for tx queue start ramrod */ 5901 struct tx_queue_start_ramrod_data { 5902 __le16 sb_id; 5903 u8 sb_index; 5904 u8 vport_id; 5905 u8 reserved0; 5906 u8 stats_counter_id; 5907 __le16 qm_pq_id; 5908 u8 flags; 5909 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK 0x1 5910 #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0 5911 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK 0x1 5912 #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT 1 5913 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK 0x1 5914 #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT 2 5915 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK 0x1 5916 #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT 3 5917 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK 0x1 5918 #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT 4 5919 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK 0x7 5920 #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT 5 5921 u8 pxp_st_hint; 5922 u8 pxp_tph_valid_bd; 5923 u8 pxp_tph_valid_pkt; 5924 __le16 pxp_st_index; 5925 __le16 comp_agg_size; 5926 __le16 queue_zone_id; 5927 __le16 reserved2; 5928 __le16 pbl_size; 5929 __le16 tx_queue_id; 5930 __le16 same_as_last_id; 5931 __le16 reserved[3]; 5932 struct regpair pbl_base_addr; 5933 struct regpair bd_cons_address; 5934 }; 5935 5936 /* Ramrod data for tx queue stop ramrod */ 5937 struct tx_queue_stop_ramrod_data { 5938 __le16 reserved[4]; 5939 }; 5940 5941 /* Ramrod data for tx queue update ramrod */ 5942 struct tx_queue_update_ramrod_data { 5943 __le16 update_qm_pq_id_flg; 5944 __le16 qm_pq_id; 5945 __le32 reserved0; 5946 struct regpair reserved1[5]; 5947 }; 5948 5949 /* Inner to Inner VLAN priority map update mode */ 5950 enum update_in_to_in_pri_map_mode_enum { 5951 ETH_IN_TO_IN_PRI_MAP_UPDATE_DISABLED, 5952 ETH_IN_TO_IN_PRI_MAP_UPDATE_NON_RDMA_TBL, 5953 ETH_IN_TO_IN_PRI_MAP_UPDATE_RDMA_TBL, 5954 MAX_UPDATE_IN_TO_IN_PRI_MAP_MODE_ENUM 5955 }; 5956 5957 /* Ramrod data for vport update ramrod */ 5958 struct vport_filter_update_ramrod_data { 5959 struct eth_filter_cmd_header filter_cmd_hdr; 5960 struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT]; 5961 }; 5962 5963 /* Ramrod data for vport start ramrod */ 5964 struct vport_start_ramrod_data { 5965 u8 vport_id; 5966 u8 sw_fid; 5967 __le16 mtu; 5968 u8 drop_ttl0_en; 5969 u8 inner_vlan_removal_en; 5970 struct eth_vport_rx_mode rx_mode; 5971 struct eth_vport_tx_mode tx_mode; 5972 struct eth_vport_tpa_param tpa_param; 5973 __le16 default_vlan; 5974 u8 tx_switching_en; 5975 u8 anti_spoofing_en; 5976 u8 default_vlan_en; 5977 u8 handle_ptp_pkts; 5978 u8 silent_vlan_removal_en; 5979 u8 untagged; 5980 struct eth_tx_err_vals tx_err_behav; 5981 u8 zero_placement_offset; 5982 u8 ctl_frame_mac_check_en; 5983 u8 ctl_frame_ethtype_check_en; 5984 u8 reserved0; 5985 u8 reserved1; 5986 u8 tx_dst_port_mode_config; 5987 u8 dst_vport_id; 5988 u8 tx_dst_port_mode; 5989 u8 dst_vport_id_valid; 5990 u8 wipe_inner_vlan_pri_en; 5991 u8 reserved2[2]; 5992 struct eth_in_to_in_pri_map_cfg in_to_in_vlan_pri_map_cfg; 5993 }; 5994 5995 /* Ramrod data for vport stop ramrod */ 5996 struct vport_stop_ramrod_data { 5997 u8 vport_id; 5998 u8 reserved[7]; 5999 }; 6000 6001 /* Ramrod data for vport update ramrod */ 6002 struct vport_update_ramrod_data_cmn { 6003 u8 vport_id; 6004 u8 update_rx_active_flg; 6005 u8 rx_active_flg; 6006 u8 update_tx_active_flg; 6007 u8 tx_active_flg; 6008 u8 update_rx_mode_flg; 6009 u8 update_tx_mode_flg; 6010 u8 update_approx_mcast_flg; 6011 6012 u8 update_rss_flg; 6013 u8 update_inner_vlan_removal_en_flg; 6014 6015 u8 inner_vlan_removal_en; 6016 u8 update_tpa_param_flg; 6017 u8 update_tpa_en_flg; 6018 u8 update_tx_switching_en_flg; 6019 6020 u8 tx_switching_en; 6021 u8 update_anti_spoofing_en_flg; 6022 6023 u8 anti_spoofing_en; 6024 u8 update_handle_ptp_pkts; 6025 6026 u8 handle_ptp_pkts; 6027 u8 update_default_vlan_en_flg; 6028 6029 u8 default_vlan_en; 6030 6031 u8 update_default_vlan_flg; 6032 6033 __le16 default_vlan; 6034 u8 update_accept_any_vlan_flg; 6035 6036 u8 accept_any_vlan; 6037 u8 silent_vlan_removal_en; 6038 u8 update_mtu_flg; 6039 6040 __le16 mtu; 6041 u8 update_ctl_frame_checks_en_flg; 6042 u8 ctl_frame_mac_check_en; 6043 u8 ctl_frame_ethtype_check_en; 6044 u8 update_in_to_in_pri_map_mode; 6045 u8 in_to_in_pri_map[8]; 6046 u8 reserved[6]; 6047 }; 6048 6049 struct vport_update_ramrod_mcast { 6050 __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS]; 6051 }; 6052 6053 /* Ramrod data for vport update ramrod */ 6054 struct vport_update_ramrod_data { 6055 struct vport_update_ramrod_data_cmn common; 6056 6057 struct eth_vport_rx_mode rx_mode; 6058 struct eth_vport_tx_mode tx_mode; 6059 __le32 reserved[3]; 6060 struct eth_vport_tpa_param tpa_param; 6061 struct vport_update_ramrod_mcast approx_mcast; 6062 struct eth_vport_rss_config rss_config; 6063 }; 6064 6065 struct e4_xstorm_eth_conn_ag_ctx_dq_ext_ldpart { 6066 u8 reserved0; 6067 u8 state; 6068 u8 flags0; 6069 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1 6070 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0 6071 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK 0x1 6072 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT 1 6073 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK 0x1 6074 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT 2 6075 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1 6076 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3 6077 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK 0x1 6078 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT 4 6079 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK 0x1 6080 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT 5 6081 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK 0x1 6082 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT 6 6083 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK 0x1 6084 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT 7 6085 u8 flags1; 6086 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK 0x1 6087 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT 0 6088 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK 0x1 6089 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT 1 6090 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK 0x1 6091 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT 2 6092 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK 0x1 6093 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT 3 6094 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_MASK 0x1 6095 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_SHIFT 4 6096 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_MASK 0x1 6097 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_SHIFT 5 6098 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK 0x1 6099 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT 6 6100 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK 0x1 6101 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT 7 6102 u8 flags2; 6103 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK 0x3 6104 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT 0 6105 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK 0x3 6106 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT 2 6107 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK 0x3 6108 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT 4 6109 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK 0x3 6110 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT 6 6111 u8 flags3; 6112 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK 0x3 6113 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT 0 6114 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK 0x3 6115 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT 2 6116 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK 0x3 6117 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT 4 6118 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK 0x3 6119 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT 6 6120 u8 flags4; 6121 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK 0x3 6122 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT 0 6123 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK 0x3 6124 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT 2 6125 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK 0x3 6126 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT 4 6127 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK 0x3 6128 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT 6 6129 u8 flags5; 6130 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK 0x3 6131 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT 0 6132 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK 0x3 6133 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT 2 6134 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK 0x3 6135 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT 4 6136 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK 0x3 6137 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT 6 6138 u8 flags6; 6139 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK 0x3 6140 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT 0 6141 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK 0x3 6142 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT 2 6143 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK 0x3 6144 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT 4 6145 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK 0x3 6146 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT 6 6147 u8 flags7; 6148 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK 0x3 6149 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT 0 6150 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK 0x3 6151 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT 2 6152 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3 6153 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4 6154 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1 6155 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6 6156 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1 6157 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7 6158 u8 flags8; 6159 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1 6160 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0 6161 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1 6162 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1 6163 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1 6164 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2 6165 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1 6166 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3 6167 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1 6168 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4 6169 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK 0x1 6170 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT 5 6171 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1 6172 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6 6173 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1 6174 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7 6175 u8 flags9; 6176 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1 6177 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0 6178 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1 6179 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1 6180 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1 6181 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2 6182 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1 6183 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3 6184 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1 6185 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4 6186 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1 6187 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5 6188 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK 0x1 6189 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT 6 6190 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK 0x1 6191 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT 7 6192 u8 flags10; 6193 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK 0x1 6194 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT 0 6195 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK 0x1 6196 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT 1 6197 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK 0x1 6198 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT 2 6199 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK 0x1 6200 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT 3 6201 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1 6202 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4 6203 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK 0x1 6204 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT 5 6205 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK 0x1 6206 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT 6 6207 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK 0x1 6208 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT 7 6209 u8 flags11; 6210 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK 0x1 6211 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT 0 6212 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK 0x1 6213 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT 1 6214 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK 0x1 6215 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT 2 6216 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1 6217 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3 6218 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1 6219 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4 6220 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1 6221 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5 6222 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1 6223 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6 6224 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1 6225 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7 6226 u8 flags12; 6227 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1 6228 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0 6229 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1 6230 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1 6231 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1 6232 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2 6233 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1 6234 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3 6235 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1 6236 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4 6237 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1 6238 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5 6239 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1 6240 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6 6241 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1 6242 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7 6243 u8 flags13; 6244 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1 6245 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0 6246 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1 6247 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1 6248 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1 6249 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2 6250 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1 6251 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3 6252 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1 6253 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4 6254 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1 6255 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5 6256 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1 6257 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6 6258 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1 6259 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7 6260 u8 flags14; 6261 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK 0x1 6262 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT 0 6263 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK 0x1 6264 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT 1 6265 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK 0x1 6266 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT 2 6267 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK 0x1 6268 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT 3 6269 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK 0x1 6270 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT 4 6271 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1 6272 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5 6273 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK 0x3 6274 #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT 6 6275 u8 edpm_event_id; 6276 __le16 physical_q0; 6277 __le16 e5_reserved1; 6278 __le16 edpm_num_bds; 6279 __le16 tx_bd_cons; 6280 __le16 tx_bd_prod; 6281 __le16 updated_qm_pq_id; 6282 __le16 conn_dpi; 6283 u8 byte3; 6284 u8 byte4; 6285 u8 byte5; 6286 u8 byte6; 6287 __le32 reg0; 6288 __le32 reg1; 6289 __le32 reg2; 6290 __le32 reg3; 6291 __le32 reg4; 6292 }; 6293 6294 struct e4_mstorm_eth_conn_ag_ctx { 6295 u8 byte0; 6296 u8 byte1; 6297 u8 flags0; 6298 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 6299 #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 6300 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 6301 #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1 6302 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3 6303 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 2 6304 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3 6305 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 4 6306 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 6307 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6 6308 u8 flags1; 6309 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1 6310 #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 0 6311 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1 6312 #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 1 6313 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 6314 #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2 6315 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 6316 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3 6317 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 6318 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4 6319 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 6320 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5 6321 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 6322 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6 6323 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 6324 #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7 6325 __le16 word0; 6326 __le16 word1; 6327 __le32 reg0; 6328 __le32 reg1; 6329 }; 6330 6331 struct e4_xstorm_eth_hw_conn_ag_ctx { 6332 u8 reserved0; 6333 u8 state; 6334 u8 flags0; 6335 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 6336 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 6337 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK 0x1 6338 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT 1 6339 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK 0x1 6340 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT 2 6341 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 6342 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 6343 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK 0x1 6344 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT 4 6345 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK 0x1 6346 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT 5 6347 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK 0x1 6348 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT 6 6349 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK 0x1 6350 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT 7 6351 u8 flags1; 6352 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK 0x1 6353 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT 0 6354 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK 0x1 6355 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT 1 6356 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK 0x1 6357 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT 2 6358 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK 0x1 6359 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT 3 6360 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK 0x1 6361 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT 4 6362 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK 0x1 6363 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT 5 6364 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1 6365 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6 6366 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1 6367 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7 6368 u8 flags2; 6369 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK 0x3 6370 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT 0 6371 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK 0x3 6372 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT 2 6373 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK 0x3 6374 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT 4 6375 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK 0x3 6376 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT 6 6377 u8 flags3; 6378 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK 0x3 6379 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT 0 6380 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK 0x3 6381 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT 2 6382 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK 0x3 6383 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT 4 6384 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK 0x3 6385 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT 6 6386 u8 flags4; 6387 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK 0x3 6388 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT 0 6389 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK 0x3 6390 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT 2 6391 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK 0x3 6392 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT 4 6393 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK 0x3 6394 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT 6 6395 u8 flags5; 6396 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK 0x3 6397 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT 0 6398 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK 0x3 6399 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT 2 6400 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK 0x3 6401 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT 4 6402 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK 0x3 6403 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT 6 6404 u8 flags6; 6405 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3 6406 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0 6407 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3 6408 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2 6409 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK 0x3 6410 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT 4 6411 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK 0x3 6412 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT 6 6413 u8 flags7; 6414 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 6415 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 6416 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK 0x3 6417 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT 2 6418 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK 0x3 6419 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT 4 6420 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK 0x1 6421 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT 6 6422 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK 0x1 6423 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT 7 6424 u8 flags8; 6425 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK 0x1 6426 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT 0 6427 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK 0x1 6428 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT 1 6429 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK 0x1 6430 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT 2 6431 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK 0x1 6432 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT 3 6433 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK 0x1 6434 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT 4 6435 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK 0x1 6436 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT 5 6437 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK 0x1 6438 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT 6 6439 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK 0x1 6440 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT 7 6441 u8 flags9; 6442 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK 0x1 6443 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT 0 6444 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK 0x1 6445 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT 1 6446 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK 0x1 6447 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT 2 6448 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK 0x1 6449 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT 3 6450 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK 0x1 6451 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT 4 6452 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK 0x1 6453 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT 5 6454 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1 6455 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6 6456 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1 6457 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7 6458 u8 flags10; 6459 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 6460 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT 0 6461 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1 6462 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1 6463 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 6464 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2 6465 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK 0x1 6466 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT 3 6467 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 6468 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 6469 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1 6470 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5 6471 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK 0x1 6472 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT 6 6473 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK 0x1 6474 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT 7 6475 u8 flags11; 6476 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK 0x1 6477 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT 0 6478 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK 0x1 6479 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT 1 6480 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1 6481 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2 6482 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK 0x1 6483 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT 3 6484 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK 0x1 6485 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT 4 6486 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK 0x1 6487 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT 5 6488 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 6489 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 6490 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK 0x1 6491 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT 7 6492 u8 flags12; 6493 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK 0x1 6494 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT 0 6495 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK 0x1 6496 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT 1 6497 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 6498 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 6499 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 6500 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 6501 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK 0x1 6502 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT 4 6503 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK 0x1 6504 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT 5 6505 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK 0x1 6506 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT 6 6507 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK 0x1 6508 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT 7 6509 u8 flags13; 6510 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK 0x1 6511 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT 0 6512 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK 0x1 6513 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT 1 6514 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 6515 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 6516 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 6517 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 6518 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 6519 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 6520 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 6521 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 6522 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 6523 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 6524 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 6525 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 6526 u8 flags14; 6527 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1 6528 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0 6529 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1 6530 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1 6531 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1 6532 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2 6533 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1 6534 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3 6535 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1 6536 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4 6537 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1 6538 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5 6539 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK 0x3 6540 #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT 6 6541 u8 edpm_event_id; 6542 __le16 physical_q0; 6543 __le16 e5_reserved1; 6544 __le16 edpm_num_bds; 6545 __le16 tx_bd_cons; 6546 __le16 tx_bd_prod; 6547 __le16 updated_qm_pq_id; 6548 __le16 conn_dpi; 6549 }; 6550 6551 /* GFT CAM line struct with fields breakout */ 6552 struct gft_cam_line_mapped { 6553 __le32 camline; 6554 #define GFT_CAM_LINE_MAPPED_VALID_MASK 0x1 6555 #define GFT_CAM_LINE_MAPPED_VALID_SHIFT 0 6556 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK 0x1 6557 #define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT 1 6558 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK 0x1 6559 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT 2 6560 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK 0xF 6561 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT 3 6562 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK 0xF 6563 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT 7 6564 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK 0xF 6565 #define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT 11 6566 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK 0x1 6567 #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT 15 6568 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK 0x1 6569 #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT 16 6570 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK 0xF 6571 #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT 17 6572 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK 0xF 6573 #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT 21 6574 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK 0xF 6575 #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT 25 6576 #define GFT_CAM_LINE_MAPPED_RESERVED1_MASK 0x7 6577 #define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT 29 6578 }; 6579 6580 6581 /* Used in gft_profile_key: Indication for ip version */ 6582 enum gft_profile_ip_version { 6583 GFT_PROFILE_IPV4 = 0, 6584 GFT_PROFILE_IPV6 = 1, 6585 MAX_GFT_PROFILE_IP_VERSION 6586 }; 6587 6588 /* Profile key stucr fot GFT logic in Prs */ 6589 struct gft_profile_key { 6590 __le16 profile_key; 6591 #define GFT_PROFILE_KEY_IP_VERSION_MASK 0x1 6592 #define GFT_PROFILE_KEY_IP_VERSION_SHIFT 0 6593 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK 0x1 6594 #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT 1 6595 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK 0xF 6596 #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT 2 6597 #define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK 0xF 6598 #define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT 6 6599 #define GFT_PROFILE_KEY_PF_ID_MASK 0xF 6600 #define GFT_PROFILE_KEY_PF_ID_SHIFT 10 6601 #define GFT_PROFILE_KEY_RESERVED0_MASK 0x3 6602 #define GFT_PROFILE_KEY_RESERVED0_SHIFT 14 6603 }; 6604 6605 /* Used in gft_profile_key: Indication for tunnel type */ 6606 enum gft_profile_tunnel_type { 6607 GFT_PROFILE_NO_TUNNEL = 0, 6608 GFT_PROFILE_VXLAN_TUNNEL = 1, 6609 GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2, 6610 GFT_PROFILE_GRE_IP_TUNNEL = 3, 6611 GFT_PROFILE_GENEVE_MAC_TUNNEL = 4, 6612 GFT_PROFILE_GENEVE_IP_TUNNEL = 5, 6613 MAX_GFT_PROFILE_TUNNEL_TYPE 6614 }; 6615 6616 /* Used in gft_profile_key: Indication for protocol type */ 6617 enum gft_profile_upper_protocol_type { 6618 GFT_PROFILE_ROCE_PROTOCOL = 0, 6619 GFT_PROFILE_RROCE_PROTOCOL = 1, 6620 GFT_PROFILE_FCOE_PROTOCOL = 2, 6621 GFT_PROFILE_ICMP_PROTOCOL = 3, 6622 GFT_PROFILE_ARP_PROTOCOL = 4, 6623 GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5, 6624 GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6, 6625 GFT_PROFILE_TCP_PROTOCOL = 7, 6626 GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8, 6627 GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9, 6628 GFT_PROFILE_UDP_PROTOCOL = 10, 6629 GFT_PROFILE_USER_IP_1_INNER = 11, 6630 GFT_PROFILE_USER_IP_2_OUTER = 12, 6631 GFT_PROFILE_USER_ETH_1_INNER = 13, 6632 GFT_PROFILE_USER_ETH_2_OUTER = 14, 6633 GFT_PROFILE_RAW = 15, 6634 MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE 6635 }; 6636 6637 /* GFT RAM line struct */ 6638 struct gft_ram_line { 6639 __le32 lo; 6640 #define GFT_RAM_LINE_VLAN_SELECT_MASK 0x3 6641 #define GFT_RAM_LINE_VLAN_SELECT_SHIFT 0 6642 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK 0x1 6643 #define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT 2 6644 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK 0x1 6645 #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT 3 6646 #define GFT_RAM_LINE_TUNNEL_TTL_MASK 0x1 6647 #define GFT_RAM_LINE_TUNNEL_TTL_SHIFT 4 6648 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK 0x1 6649 #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT 5 6650 #define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK 0x1 6651 #define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT 6 6652 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK 0x1 6653 #define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT 7 6654 #define GFT_RAM_LINE_TUNNEL_DSCP_MASK 0x1 6655 #define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT 8 6656 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK 0x1 6657 #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT 9 6658 #define GFT_RAM_LINE_TUNNEL_DST_IP_MASK 0x1 6659 #define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT 10 6660 #define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK 0x1 6661 #define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT 11 6662 #define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK 0x1 6663 #define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT 12 6664 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK 0x1 6665 #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT 13 6666 #define GFT_RAM_LINE_TUNNEL_VLAN_MASK 0x1 6667 #define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT 14 6668 #define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK 0x1 6669 #define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT 15 6670 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK 0x1 6671 #define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT 16 6672 #define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK 0x1 6673 #define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT 17 6674 #define GFT_RAM_LINE_TTL_MASK 0x1 6675 #define GFT_RAM_LINE_TTL_SHIFT 18 6676 #define GFT_RAM_LINE_ETHERTYPE_MASK 0x1 6677 #define GFT_RAM_LINE_ETHERTYPE_SHIFT 19 6678 #define GFT_RAM_LINE_RESERVED0_MASK 0x1 6679 #define GFT_RAM_LINE_RESERVED0_SHIFT 20 6680 #define GFT_RAM_LINE_TCP_FLAG_FIN_MASK 0x1 6681 #define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT 21 6682 #define GFT_RAM_LINE_TCP_FLAG_SYN_MASK 0x1 6683 #define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT 22 6684 #define GFT_RAM_LINE_TCP_FLAG_RST_MASK 0x1 6685 #define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT 23 6686 #define GFT_RAM_LINE_TCP_FLAG_PSH_MASK 0x1 6687 #define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT 24 6688 #define GFT_RAM_LINE_TCP_FLAG_ACK_MASK 0x1 6689 #define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT 25 6690 #define GFT_RAM_LINE_TCP_FLAG_URG_MASK 0x1 6691 #define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT 26 6692 #define GFT_RAM_LINE_TCP_FLAG_ECE_MASK 0x1 6693 #define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT 27 6694 #define GFT_RAM_LINE_TCP_FLAG_CWR_MASK 0x1 6695 #define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT 28 6696 #define GFT_RAM_LINE_TCP_FLAG_NS_MASK 0x1 6697 #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT 29 6698 #define GFT_RAM_LINE_DST_PORT_MASK 0x1 6699 #define GFT_RAM_LINE_DST_PORT_SHIFT 30 6700 #define GFT_RAM_LINE_SRC_PORT_MASK 0x1 6701 #define GFT_RAM_LINE_SRC_PORT_SHIFT 31 6702 __le32 hi; 6703 #define GFT_RAM_LINE_DSCP_MASK 0x1 6704 #define GFT_RAM_LINE_DSCP_SHIFT 0 6705 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK 0x1 6706 #define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT 1 6707 #define GFT_RAM_LINE_DST_IP_MASK 0x1 6708 #define GFT_RAM_LINE_DST_IP_SHIFT 2 6709 #define GFT_RAM_LINE_SRC_IP_MASK 0x1 6710 #define GFT_RAM_LINE_SRC_IP_SHIFT 3 6711 #define GFT_RAM_LINE_PRIORITY_MASK 0x1 6712 #define GFT_RAM_LINE_PRIORITY_SHIFT 4 6713 #define GFT_RAM_LINE_PROVIDER_VLAN_MASK 0x1 6714 #define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT 5 6715 #define GFT_RAM_LINE_VLAN_MASK 0x1 6716 #define GFT_RAM_LINE_VLAN_SHIFT 6 6717 #define GFT_RAM_LINE_DST_MAC_MASK 0x1 6718 #define GFT_RAM_LINE_DST_MAC_SHIFT 7 6719 #define GFT_RAM_LINE_SRC_MAC_MASK 0x1 6720 #define GFT_RAM_LINE_SRC_MAC_SHIFT 8 6721 #define GFT_RAM_LINE_TENANT_ID_MASK 0x1 6722 #define GFT_RAM_LINE_TENANT_ID_SHIFT 9 6723 #define GFT_RAM_LINE_RESERVED1_MASK 0x3FFFFF 6724 #define GFT_RAM_LINE_RESERVED1_SHIFT 10 6725 }; 6726 6727 /* Used in the first 2 bits for gft_ram_line: Indication for vlan mask */ 6728 enum gft_vlan_select { 6729 INNER_PROVIDER_VLAN = 0, 6730 INNER_VLAN = 1, 6731 OUTER_PROVIDER_VLAN = 2, 6732 OUTER_VLAN = 3, 6733 MAX_GFT_VLAN_SELECT 6734 }; 6735 6736 /* The rdma task context of Mstorm */ 6737 struct ystorm_rdma_task_st_ctx { 6738 struct regpair temp[4]; 6739 }; 6740 6741 struct e4_ystorm_rdma_task_ag_ctx { 6742 u8 reserved; 6743 u8 byte1; 6744 __le16 msem_ctx_upd_seq; 6745 u8 flags0; 6746 #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 6747 #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 6748 #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 6749 #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 6750 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1 6751 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5 6752 #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_MASK 0x1 6753 #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_SHIFT 6 6754 #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1 6755 #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7 6756 u8 flags1; 6757 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3 6758 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0 6759 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3 6760 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2 6761 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 6762 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 6763 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1 6764 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6 6765 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1 6766 #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7 6767 u8 flags2; 6768 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1 6769 #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0 6770 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1 6771 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1 6772 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1 6773 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2 6774 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1 6775 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3 6776 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1 6777 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4 6778 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1 6779 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5 6780 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1 6781 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6 6782 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1 6783 #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7 6784 u8 key; 6785 __le32 mw_cnt_or_qp_id; 6786 u8 ref_cnt_seq; 6787 u8 ctx_upd_seq; 6788 __le16 dif_flags; 6789 __le16 tx_ref_count; 6790 __le16 last_used_ltid; 6791 __le16 parent_mr_lo; 6792 __le16 parent_mr_hi; 6793 __le32 fbo_lo; 6794 __le32 fbo_hi; 6795 }; 6796 6797 struct e4_mstorm_rdma_task_ag_ctx { 6798 u8 reserved; 6799 u8 byte1; 6800 __le16 icid; 6801 u8 flags0; 6802 #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 6803 #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 6804 #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 6805 #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 6806 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1 6807 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5 6808 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1 6809 #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6 6810 #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1 6811 #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7 6812 u8 flags1; 6813 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3 6814 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0 6815 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3 6816 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2 6817 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3 6818 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 4 6819 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1 6820 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6 6821 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1 6822 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7 6823 u8 flags2; 6824 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1 6825 #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 0 6826 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1 6827 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1 6828 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1 6829 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2 6830 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1 6831 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3 6832 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1 6833 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4 6834 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1 6835 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5 6836 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1 6837 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6 6838 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1 6839 #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7 6840 u8 key; 6841 __le32 mw_cnt_or_qp_id; 6842 u8 ref_cnt_seq; 6843 u8 ctx_upd_seq; 6844 __le16 dif_flags; 6845 __le16 tx_ref_count; 6846 __le16 last_used_ltid; 6847 __le16 parent_mr_lo; 6848 __le16 parent_mr_hi; 6849 __le32 fbo_lo; 6850 __le32 fbo_hi; 6851 }; 6852 6853 /* The roce task context of Mstorm */ 6854 struct mstorm_rdma_task_st_ctx { 6855 struct regpair temp[4]; 6856 }; 6857 6858 /* The roce task context of Ustorm */ 6859 struct ustorm_rdma_task_st_ctx { 6860 struct regpair temp[6]; 6861 }; 6862 6863 struct e4_ustorm_rdma_task_ag_ctx { 6864 u8 reserved; 6865 u8 state; 6866 __le16 icid; 6867 u8 flags0; 6868 #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF 6869 #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 6870 #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 6871 #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 6872 #define E4_USTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1 6873 #define E4_USTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5 6874 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_MASK 0x3 6875 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_SHIFT 6 6876 u8 flags1; 6877 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_MASK 0x3 6878 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_SHIFT 0 6879 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_MASK 0x3 6880 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_SHIFT 2 6881 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_MASK 0x3 6882 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_SHIFT 4 6883 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 6884 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 6885 u8 flags2; 6886 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_MASK 0x1 6887 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_SHIFT 0 6888 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_MASK 0x1 6889 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_SHIFT 1 6890 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_MASK 0x1 6891 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_SHIFT 2 6892 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_MASK 0x1 6893 #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_SHIFT 3 6894 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 6895 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 6896 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1 6897 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 5 6898 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1 6899 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 6 6900 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1 6901 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 7 6902 u8 flags3; 6903 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RXMIT_PROD_CONS_EN_MASK 0x1 6904 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RXMIT_PROD_CONS_EN_SHIFT 0 6905 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1 6906 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 1 6907 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_PROD_CONS_EN_MASK 0x1 6908 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_PROD_CONS_EN_SHIFT 2 6909 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1 6910 #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 3 6911 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF 6912 #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 6913 __le32 dif_err_intervals; 6914 __le32 dif_error_1st_interval; 6915 __le32 dif_rxmit_cons; 6916 __le32 dif_rxmit_prod; 6917 __le32 sge_index; 6918 __le32 sq_cons; 6919 u8 byte2; 6920 u8 byte3; 6921 __le16 dif_write_cons; 6922 __le16 dif_write_prod; 6923 __le16 word3; 6924 __le32 dif_error_buffer_address_lo; 6925 __le32 dif_error_buffer_address_hi; 6926 }; 6927 6928 /* RDMA task context */ 6929 struct e4_rdma_task_context { 6930 struct ystorm_rdma_task_st_ctx ystorm_st_context; 6931 struct e4_ystorm_rdma_task_ag_ctx ystorm_ag_context; 6932 struct tdif_task_context tdif_context; 6933 struct e4_mstorm_rdma_task_ag_ctx mstorm_ag_context; 6934 struct mstorm_rdma_task_st_ctx mstorm_st_context; 6935 struct rdif_task_context rdif_context; 6936 struct ustorm_rdma_task_st_ctx ustorm_st_context; 6937 struct regpair ustorm_st_padding[2]; 6938 struct e4_ustorm_rdma_task_ag_ctx ustorm_ag_context; 6939 }; 6940 6941 /* rdma function init ramrod data */ 6942 struct rdma_close_func_ramrod_data { 6943 u8 cnq_start_offset; 6944 u8 num_cnqs; 6945 u8 vf_id; 6946 u8 vf_valid; 6947 u8 reserved[4]; 6948 }; 6949 6950 /* rdma function init CNQ parameters */ 6951 struct rdma_cnq_params { 6952 __le16 sb_num; 6953 u8 sb_index; 6954 u8 num_pbl_pages; 6955 __le32 reserved; 6956 struct regpair pbl_base_addr; 6957 __le16 queue_zone_num; 6958 u8 reserved1[6]; 6959 }; 6960 6961 /* rdma create cq ramrod data */ 6962 struct rdma_create_cq_ramrod_data { 6963 struct regpair cq_handle; 6964 struct regpair pbl_addr; 6965 __le32 max_cqes; 6966 __le16 pbl_num_pages; 6967 __le16 dpi; 6968 u8 is_two_level_pbl; 6969 u8 cnq_id; 6970 u8 pbl_log_page_size; 6971 u8 toggle_bit; 6972 __le16 int_timeout; 6973 u8 vf_id; 6974 u8 flags; 6975 #define RDMA_CREATE_CQ_RAMROD_DATA_VF_ID_VALID_MASK 0x1 6976 #define RDMA_CREATE_CQ_RAMROD_DATA_VF_ID_VALID_SHIFT 0 6977 #define RDMA_CREATE_CQ_RAMROD_DATA_RESERVED1_MASK 0x7F 6978 #define RDMA_CREATE_CQ_RAMROD_DATA_RESERVED1_SHIFT 1 6979 }; 6980 6981 /* rdma deregister tid ramrod data */ 6982 struct rdma_deregister_tid_ramrod_data { 6983 __le32 itid; 6984 __le32 reserved; 6985 }; 6986 6987 /* rdma destroy cq output params */ 6988 struct rdma_destroy_cq_output_params { 6989 __le16 cnq_num; 6990 __le16 reserved0; 6991 __le32 reserved1; 6992 }; 6993 6994 /* rdma destroy cq ramrod data */ 6995 struct rdma_destroy_cq_ramrod_data { 6996 struct regpair output_params_addr; 6997 }; 6998 6999 /* RDMA slow path EQ cmd IDs */ 7000 enum rdma_event_opcode { 7001 RDMA_EVENT_UNUSED, 7002 RDMA_EVENT_FUNC_INIT, 7003 RDMA_EVENT_FUNC_CLOSE, 7004 RDMA_EVENT_REGISTER_MR, 7005 RDMA_EVENT_DEREGISTER_MR, 7006 RDMA_EVENT_CREATE_CQ, 7007 RDMA_EVENT_RESIZE_CQ, 7008 RDMA_EVENT_DESTROY_CQ, 7009 RDMA_EVENT_CREATE_SRQ, 7010 RDMA_EVENT_MODIFY_SRQ, 7011 RDMA_EVENT_DESTROY_SRQ, 7012 MAX_RDMA_EVENT_OPCODE 7013 }; 7014 7015 /* RDMA FW return code for slow path ramrods */ 7016 enum rdma_fw_return_code { 7017 RDMA_RETURN_OK = 0, 7018 RDMA_RETURN_REGISTER_MR_BAD_STATE_ERR, 7019 RDMA_RETURN_DEREGISTER_MR_BAD_STATE_ERR, 7020 RDMA_RETURN_RESIZE_CQ_ERR, 7021 RDMA_RETURN_NIG_DRAIN_REQ, 7022 RDMA_RETURN_GENERAL_ERR, 7023 MAX_RDMA_FW_RETURN_CODE 7024 }; 7025 7026 /* rdma function init header */ 7027 struct rdma_init_func_hdr { 7028 u8 cnq_start_offset; 7029 u8 num_cnqs; 7030 u8 cq_ring_mode; 7031 u8 vf_id; 7032 u8 vf_valid; 7033 u8 relaxed_ordering; 7034 __le16 first_reg_srq_id; 7035 __le32 reg_srq_base_addr; 7036 u8 searcher_mode; 7037 u8 pvrdma_mode; 7038 u8 max_num_ns_log; 7039 u8 reserved; 7040 }; 7041 7042 /* rdma function init ramrod data */ 7043 struct rdma_init_func_ramrod_data { 7044 struct rdma_init_func_hdr params_header; 7045 struct rdma_cnq_params cnq_params[NUM_OF_GLOBAL_QUEUES]; 7046 }; 7047 7048 /* RDMA ramrod command IDs */ 7049 enum rdma_ramrod_cmd_id { 7050 RDMA_RAMROD_UNUSED, 7051 RDMA_RAMROD_FUNC_INIT, 7052 RDMA_RAMROD_FUNC_CLOSE, 7053 RDMA_RAMROD_REGISTER_MR, 7054 RDMA_RAMROD_DEREGISTER_MR, 7055 RDMA_RAMROD_CREATE_CQ, 7056 RDMA_RAMROD_RESIZE_CQ, 7057 RDMA_RAMROD_DESTROY_CQ, 7058 RDMA_RAMROD_CREATE_SRQ, 7059 RDMA_RAMROD_MODIFY_SRQ, 7060 RDMA_RAMROD_DESTROY_SRQ, 7061 MAX_RDMA_RAMROD_CMD_ID 7062 }; 7063 7064 /* rdma register tid ramrod data */ 7065 struct rdma_register_tid_ramrod_data { 7066 __le16 flags; 7067 #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_MASK 0x1F 7068 #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_SHIFT 0 7069 #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_MASK 0x1 7070 #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_SHIFT 5 7071 #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_MASK 0x1 7072 #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_SHIFT 6 7073 #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_MASK 0x1 7074 #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_SHIFT 7 7075 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_MASK 0x1 7076 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_SHIFT 8 7077 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_MASK 0x1 7078 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_SHIFT 9 7079 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_MASK 0x1 7080 #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_SHIFT 10 7081 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_MASK 0x1 7082 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_SHIFT 11 7083 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_MASK 0x1 7084 #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_SHIFT 12 7085 #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_MASK 0x1 7086 #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_SHIFT 13 7087 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_MASK 0x3 7088 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_SHIFT 14 7089 u8 flags1; 7090 #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_MASK 0x1F 7091 #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_SHIFT 0 7092 #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_MASK 0x7 7093 #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_SHIFT 5 7094 u8 flags2; 7095 #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_MASK 0x1 7096 #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_SHIFT 0 7097 #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_MASK 0x1 7098 #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_SHIFT 1 7099 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_MASK 0x3F 7100 #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_SHIFT 2 7101 u8 key; 7102 u8 length_hi; 7103 u8 vf_id; 7104 u8 vf_valid; 7105 __le16 pd; 7106 __le16 reserved2; 7107 __le32 length_lo; 7108 __le32 itid; 7109 __le32 reserved3; 7110 struct regpair va; 7111 struct regpair pbl_base; 7112 struct regpair dif_error_addr; 7113 __le32 reserved4[4]; 7114 }; 7115 7116 /* rdma resize cq output params */ 7117 struct rdma_resize_cq_output_params { 7118 __le32 old_cq_cons; 7119 __le32 old_cq_prod; 7120 }; 7121 7122 /* rdma resize cq ramrod data */ 7123 struct rdma_resize_cq_ramrod_data { 7124 u8 flags; 7125 #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_MASK 0x1 7126 #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_SHIFT 0 7127 #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_MASK 0x1 7128 #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_SHIFT 1 7129 #define RDMA_RESIZE_CQ_RAMROD_DATA_VF_ID_VALID_MASK 0x1 7130 #define RDMA_RESIZE_CQ_RAMROD_DATA_VF_ID_VALID_SHIFT 2 7131 #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_MASK 0x1F 7132 #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_SHIFT 3 7133 u8 pbl_log_page_size; 7134 __le16 pbl_num_pages; 7135 __le32 max_cqes; 7136 struct regpair pbl_addr; 7137 struct regpair output_params_addr; 7138 u8 vf_id; 7139 u8 reserved1[7]; 7140 }; 7141 7142 /* The rdma SRQ context */ 7143 struct rdma_srq_context { 7144 struct regpair temp[8]; 7145 }; 7146 7147 /* rdma create qp requester ramrod data */ 7148 struct rdma_srq_create_ramrod_data { 7149 u8 flags; 7150 #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_MASK 0x1 7151 #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_SHIFT 0 7152 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1 7153 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 1 7154 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_MASK 0x3F 7155 #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_SHIFT 2 7156 u8 reserved2; 7157 __le16 xrc_domain; 7158 __le32 xrc_srq_cq_cid; 7159 struct regpair pbl_base_addr; 7160 __le16 pages_in_srq_pbl; 7161 __le16 pd_id; 7162 struct rdma_srq_id srq_id; 7163 __le16 page_size; 7164 __le16 reserved3; 7165 __le32 reserved4; 7166 struct regpair producers_addr; 7167 }; 7168 7169 /* rdma create qp requester ramrod data */ 7170 struct rdma_srq_destroy_ramrod_data { 7171 struct rdma_srq_id srq_id; 7172 __le32 reserved; 7173 }; 7174 7175 /* rdma create qp requester ramrod data */ 7176 struct rdma_srq_modify_ramrod_data { 7177 struct rdma_srq_id srq_id; 7178 __le32 wqe_limit; 7179 }; 7180 7181 /* RDMA Tid type enumeration (for register_tid ramrod) */ 7182 enum rdma_tid_type { 7183 RDMA_TID_REGISTERED_MR, 7184 RDMA_TID_FMR, 7185 RDMA_TID_MW, 7186 MAX_RDMA_TID_TYPE 7187 }; 7188 7189 /* The rdma XRC SRQ context */ 7190 struct rdma_xrc_srq_context { 7191 struct regpair temp[9]; 7192 }; 7193 7194 struct e4_tstorm_rdma_task_ag_ctx { 7195 u8 byte0; 7196 u8 byte1; 7197 __le16 word0; 7198 u8 flags0; 7199 #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_MASK 0xF 7200 #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_SHIFT 0 7201 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_MASK 0x1 7202 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_SHIFT 4 7203 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1 7204 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5 7205 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1 7206 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6 7207 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_MASK 0x1 7208 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_SHIFT 7 7209 u8 flags1; 7210 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1 7211 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0 7212 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_MASK 0x1 7213 #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_SHIFT 1 7214 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3 7215 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 2 7216 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3 7217 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 4 7218 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3 7219 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 6 7220 u8 flags2; 7221 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_MASK 0x3 7222 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_SHIFT 0 7223 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_MASK 0x3 7224 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_SHIFT 2 7225 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_MASK 0x3 7226 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_SHIFT 4 7227 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_MASK 0x3 7228 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_SHIFT 6 7229 u8 flags3; 7230 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_MASK 0x3 7231 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_SHIFT 0 7232 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1 7233 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 2 7234 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1 7235 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 3 7236 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1 7237 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 4 7238 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_MASK 0x1 7239 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_SHIFT 5 7240 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_MASK 0x1 7241 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_SHIFT 6 7242 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_MASK 0x1 7243 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_SHIFT 7 7244 u8 flags4; 7245 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_MASK 0x1 7246 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_SHIFT 0 7247 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_MASK 0x1 7248 #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_SHIFT 1 7249 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1 7250 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 2 7251 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1 7252 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 3 7253 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1 7254 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 4 7255 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1 7256 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 5 7257 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1 7258 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 6 7259 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1 7260 #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 7 7261 u8 byte2; 7262 __le16 word1; 7263 __le32 reg0; 7264 u8 byte3; 7265 u8 byte4; 7266 __le16 word2; 7267 __le16 word3; 7268 __le16 word4; 7269 __le32 reg1; 7270 __le32 reg2; 7271 }; 7272 7273 struct e4_ustorm_rdma_conn_ag_ctx { 7274 u8 reserved; 7275 u8 byte1; 7276 u8 flags0; 7277 #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 7278 #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 7279 #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_MASK 0x1 7280 #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_SHIFT 1 7281 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 7282 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 2 7283 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_MASK 0x3 7284 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_SHIFT 4 7285 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_MASK 0x3 7286 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_SHIFT 6 7287 u8 flags1; 7288 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_MASK 0x3 7289 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_SHIFT 0 7290 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3 7291 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2 7292 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3 7293 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4 7294 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_MASK 0x3 7295 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_SHIFT 6 7296 u8 flags2; 7297 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 7298 #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0 7299 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_MASK 0x1 7300 #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_SHIFT 1 7301 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_MASK 0x1 7302 #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_SHIFT 2 7303 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_MASK 0x1 7304 #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_SHIFT 3 7305 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1 7306 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4 7307 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1 7308 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5 7309 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_MASK 0x1 7310 #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_SHIFT 6 7311 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_MASK 0x1 7312 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_SHIFT 7 7313 u8 flags3; 7314 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_MASK 0x1 7315 #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_SHIFT 0 7316 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_MASK 0x1 7317 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_SHIFT 1 7318 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_MASK 0x1 7319 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_SHIFT 2 7320 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_MASK 0x1 7321 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_SHIFT 3 7322 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_MASK 0x1 7323 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_SHIFT 4 7324 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_MASK 0x1 7325 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_SHIFT 5 7326 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_MASK 0x1 7327 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_SHIFT 6 7328 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_MASK 0x1 7329 #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_SHIFT 7 7330 u8 byte2; 7331 u8 nvmf_only; 7332 __le16 conn_dpi; 7333 __le16 word1; 7334 __le32 cq_cons; 7335 __le32 cq_se_prod; 7336 __le32 cq_prod; 7337 __le32 reg3; 7338 __le16 int_timeout; 7339 __le16 word3; 7340 }; 7341 7342 struct e4_xstorm_roce_conn_ag_ctx { 7343 u8 reserved0; 7344 u8 state; 7345 u8 flags0; 7346 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 7347 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 7348 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1 7349 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1 7350 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1 7351 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2 7352 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 7353 #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 7354 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1 7355 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4 7356 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1 7357 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5 7358 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_MASK 0x1 7359 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_SHIFT 6 7360 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_MASK 0x1 7361 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_SHIFT 7 7362 u8 flags1; 7363 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_MASK 0x1 7364 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_SHIFT 0 7365 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_MASK 0x1 7366 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_SHIFT 1 7367 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_MASK 0x1 7368 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_SHIFT 2 7369 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_MASK 0x1 7370 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_SHIFT 3 7371 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_MASK 0x1 7372 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_SHIFT 4 7373 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_MASK 0x1 7374 #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_SHIFT 5 7375 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT14_MASK 0x1 7376 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT14_SHIFT 6 7377 #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1 7378 #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7 7379 u8 flags2; 7380 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3 7381 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 0 7382 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3 7383 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 2 7384 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3 7385 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 4 7386 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_MASK 0x3 7387 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_SHIFT 6 7388 u8 flags3; 7389 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_MASK 0x3 7390 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_SHIFT 0 7391 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3 7392 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 2 7393 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3 7394 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 4 7395 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 7396 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 7397 u8 flags4; 7398 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3 7399 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 0 7400 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3 7401 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 2 7402 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3 7403 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 4 7404 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_MASK 0x3 7405 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_SHIFT 6 7406 u8 flags5; 7407 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_MASK 0x3 7408 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_SHIFT 0 7409 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_MASK 0x3 7410 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_SHIFT 2 7411 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_MASK 0x3 7412 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_SHIFT 4 7413 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_MASK 0x3 7414 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_SHIFT 6 7415 u8 flags6; 7416 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_MASK 0x3 7417 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_SHIFT 0 7418 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_MASK 0x3 7419 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_SHIFT 2 7420 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_MASK 0x3 7421 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_SHIFT 4 7422 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_MASK 0x3 7423 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_SHIFT 6 7424 u8 flags7; 7425 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_MASK 0x3 7426 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_SHIFT 0 7427 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_MASK 0x3 7428 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_SHIFT 2 7429 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_MASK 0x3 7430 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_SHIFT 4 7431 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1 7432 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 6 7433 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1 7434 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 7 7435 u8 flags8; 7436 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1 7437 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 0 7438 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_MASK 0x1 7439 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_SHIFT 1 7440 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_MASK 0x1 7441 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_SHIFT 2 7442 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1 7443 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 3 7444 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1 7445 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 4 7446 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 7447 #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5 7448 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1 7449 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 6 7450 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1 7451 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 7 7452 u8 flags9; 7453 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1 7454 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 0 7455 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_MASK 0x1 7456 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_SHIFT 1 7457 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_MASK 0x1 7458 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_SHIFT 2 7459 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_MASK 0x1 7460 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_SHIFT 3 7461 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_MASK 0x1 7462 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_SHIFT 4 7463 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_MASK 0x1 7464 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_SHIFT 5 7465 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_MASK 0x1 7466 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_SHIFT 6 7467 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_MASK 0x1 7468 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_SHIFT 7 7469 u8 flags10; 7470 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_MASK 0x1 7471 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_SHIFT 0 7472 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_MASK 0x1 7473 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_SHIFT 1 7474 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_MASK 0x1 7475 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_SHIFT 2 7476 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_MASK 0x1 7477 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_SHIFT 3 7478 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 7479 #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 7480 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_MASK 0x1 7481 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_SHIFT 5 7482 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1 7483 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 6 7484 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1 7485 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 7 7486 u8 flags11; 7487 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1 7488 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 0 7489 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1 7490 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 1 7491 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1 7492 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 2 7493 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1 7494 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 3 7495 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1 7496 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 4 7497 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1 7498 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 5 7499 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 7500 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 7501 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_MASK 0x1 7502 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_SHIFT 7 7503 u8 flags12; 7504 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_MASK 0x1 7505 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_SHIFT 0 7506 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_MASK 0x1 7507 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_SHIFT 1 7508 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 7509 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 7510 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 7511 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 7512 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_MASK 0x1 7513 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_SHIFT 4 7514 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_MASK 0x1 7515 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_SHIFT 5 7516 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_MASK 0x1 7517 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_SHIFT 6 7518 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_MASK 0x1 7519 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_SHIFT 7 7520 u8 flags13; 7521 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_MASK 0x1 7522 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_SHIFT 0 7523 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_MASK 0x1 7524 #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_SHIFT 1 7525 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 7526 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 7527 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 7528 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 7529 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 7530 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 7531 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 7532 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 7533 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 7534 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 7535 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 7536 #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 7537 u8 flags14; 7538 #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_MASK 0x1 7539 #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_SHIFT 0 7540 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_MASK 0x1 7541 #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_SHIFT 1 7542 #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3 7543 #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2 7544 #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_MASK 0x1 7545 #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_SHIFT 4 7546 #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1 7547 #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5 7548 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_MASK 0x3 7549 #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_SHIFT 6 7550 u8 byte2; 7551 __le16 physical_q0; 7552 __le16 word1; 7553 __le16 word2; 7554 __le16 word3; 7555 __le16 word4; 7556 __le16 word5; 7557 __le16 conn_dpi; 7558 u8 byte3; 7559 u8 byte4; 7560 u8 byte5; 7561 u8 byte6; 7562 __le32 reg0; 7563 __le32 reg1; 7564 __le32 reg2; 7565 __le32 snd_nxt_psn; 7566 __le32 reg4; 7567 __le32 reg5; 7568 __le32 reg6; 7569 }; 7570 7571 struct e4_tstorm_roce_conn_ag_ctx { 7572 u8 reserved0; 7573 u8 byte1; 7574 u8 flags0; 7575 #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 7576 #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 7577 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1 7578 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1 7579 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1 7580 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2 7581 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_MASK 0x1 7582 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_SHIFT 3 7583 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1 7584 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4 7585 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1 7586 #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5 7587 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3 7588 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 6 7589 u8 flags1; 7590 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3 7591 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0 7592 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3 7593 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 2 7594 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3 7595 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4 7596 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 7597 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 7598 u8 flags2; 7599 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3 7600 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 0 7601 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3 7602 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 2 7603 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_MASK 0x3 7604 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_SHIFT 4 7605 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3 7606 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 6 7607 u8 flags3; 7608 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3 7609 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 0 7610 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3 7611 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 2 7612 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1 7613 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 4 7614 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1 7615 #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5 7616 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1 7617 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 6 7618 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1 7619 #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7 7620 u8 flags4; 7621 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 7622 #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0 7623 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1 7624 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 1 7625 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1 7626 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 2 7627 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_MASK 0x1 7628 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_SHIFT 3 7629 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1 7630 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 4 7631 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1 7632 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 5 7633 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1 7634 #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 6 7635 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1 7636 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 7 7637 u8 flags5; 7638 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1 7639 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 0 7640 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1 7641 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 1 7642 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1 7643 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 2 7644 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1 7645 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 3 7646 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1 7647 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 4 7648 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1 7649 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 5 7650 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1 7651 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 6 7652 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_MASK 0x1 7653 #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_SHIFT 7 7654 __le32 reg0; 7655 __le32 reg1; 7656 __le32 reg2; 7657 __le32 reg3; 7658 __le32 reg4; 7659 __le32 reg5; 7660 __le32 reg6; 7661 __le32 reg7; 7662 __le32 reg8; 7663 u8 byte2; 7664 u8 byte3; 7665 __le16 word0; 7666 u8 byte4; 7667 u8 byte5; 7668 __le16 word1; 7669 __le16 word2; 7670 __le16 word3; 7671 __le32 reg9; 7672 __le32 reg10; 7673 }; 7674 7675 /* The roce storm context of Ystorm */ 7676 struct ystorm_roce_conn_st_ctx { 7677 struct regpair temp[2]; 7678 }; 7679 7680 /* The roce storm context of Mstorm */ 7681 struct pstorm_roce_conn_st_ctx { 7682 struct regpair temp[16]; 7683 }; 7684 7685 /* The roce storm context of Xstorm */ 7686 struct xstorm_roce_conn_st_ctx { 7687 struct regpair temp[24]; 7688 }; 7689 7690 /* The roce storm context of Tstorm */ 7691 struct tstorm_roce_conn_st_ctx { 7692 struct regpair temp[30]; 7693 }; 7694 7695 /* The roce storm context of Mstorm */ 7696 struct mstorm_roce_conn_st_ctx { 7697 struct regpair temp[6]; 7698 }; 7699 7700 /* The roce storm context of Ustorm */ 7701 struct ustorm_roce_conn_st_ctx { 7702 struct regpair temp[14]; 7703 }; 7704 7705 /* roce connection context */ 7706 struct e4_roce_conn_context { 7707 struct ystorm_roce_conn_st_ctx ystorm_st_context; 7708 struct regpair ystorm_st_padding[2]; 7709 struct pstorm_roce_conn_st_ctx pstorm_st_context; 7710 struct xstorm_roce_conn_st_ctx xstorm_st_context; 7711 struct e4_xstorm_roce_conn_ag_ctx xstorm_ag_context; 7712 struct e4_tstorm_roce_conn_ag_ctx tstorm_ag_context; 7713 struct timers_context timer_context; 7714 struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context; 7715 struct tstorm_roce_conn_st_ctx tstorm_st_context; 7716 struct regpair tstorm_st_padding[2]; 7717 struct mstorm_roce_conn_st_ctx mstorm_st_context; 7718 struct regpair mstorm_st_padding[2]; 7719 struct ustorm_roce_conn_st_ctx ustorm_st_context; 7720 struct regpair ustorm_st_padding[2]; 7721 }; 7722 7723 /* roce cqes statistics */ 7724 struct roce_cqe_stats { 7725 __le32 req_cqe_error; 7726 __le32 req_remote_access_errors; 7727 __le32 req_remote_invalid_request; 7728 __le32 resp_cqe_error; 7729 __le32 resp_local_length_error; 7730 __le32 reserved; 7731 }; 7732 7733 /* roce create qp requester ramrod data */ 7734 struct roce_create_qp_req_ramrod_data { 7735 __le16 flags; 7736 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3 7737 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0 7738 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1 7739 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 2 7740 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_MASK 0x1 7741 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_SHIFT 3 7742 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_MASK 0x7 7743 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_SHIFT 4 7744 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_MASK 0x1 7745 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_SHIFT 7 7746 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF 7747 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 8 7748 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF 7749 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 12 7750 u8 max_ord; 7751 u8 traffic_class; 7752 u8 hop_limit; 7753 u8 orq_num_pages; 7754 __le16 p_key; 7755 __le32 flow_label; 7756 __le32 dst_qp_id; 7757 __le32 ack_timeout_val; 7758 __le32 initial_psn; 7759 __le16 mtu; 7760 __le16 pd; 7761 __le16 sq_num_pages; 7762 __le16 low_latency_phy_queue; 7763 struct regpair sq_pbl_addr; 7764 struct regpair orq_pbl_addr; 7765 __le16 local_mac_addr[3]; 7766 __le16 remote_mac_addr[3]; 7767 __le16 vlan_id; 7768 __le16 udp_src_port; 7769 __le32 src_gid[4]; 7770 __le32 dst_gid[4]; 7771 __le32 cq_cid; 7772 struct regpair qp_handle_for_cqe; 7773 struct regpair qp_handle_for_async; 7774 u8 stats_counter_id; 7775 u8 vf_id; 7776 u8 vport_id; 7777 u8 flags2; 7778 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_EDPM_MODE_MASK 0x1 7779 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_EDPM_MODE_SHIFT 0 7780 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_VF_ID_VALID_MASK 0x1 7781 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_VF_ID_VALID_SHIFT 1 7782 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RESERVED_MASK 0x3F 7783 #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RESERVED_SHIFT 2 7784 u8 name_space; 7785 u8 reserved3[3]; 7786 __le16 regular_latency_phy_queue; 7787 __le16 dpi; 7788 }; 7789 7790 /* roce create qp responder ramrod data */ 7791 struct roce_create_qp_resp_ramrod_data { 7792 __le32 flags; 7793 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3 7794 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0 7795 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1 7796 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2 7797 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1 7798 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3 7799 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1 7800 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 4 7801 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_MASK 0x1 7802 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_SHIFT 5 7803 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_MASK 0x1 7804 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_SHIFT 6 7805 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1 7806 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 7 7807 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_MASK 0x7 7808 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_SHIFT 8 7809 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F 7810 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 11 7811 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_MASK 0x1 7812 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_SHIFT 16 7813 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_VF_ID_VALID_MASK 0x1 7814 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_VF_ID_VALID_SHIFT 17 7815 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_MASK 0x3FFF 7816 #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_SHIFT 18 7817 __le16 xrc_domain; 7818 u8 max_ird; 7819 u8 traffic_class; 7820 u8 hop_limit; 7821 u8 irq_num_pages; 7822 __le16 p_key; 7823 __le32 flow_label; 7824 __le32 dst_qp_id; 7825 u8 stats_counter_id; 7826 u8 reserved1; 7827 __le16 mtu; 7828 __le32 initial_psn; 7829 __le16 pd; 7830 __le16 rq_num_pages; 7831 struct rdma_srq_id srq_id; 7832 struct regpair rq_pbl_addr; 7833 struct regpair irq_pbl_addr; 7834 __le16 local_mac_addr[3]; 7835 __le16 remote_mac_addr[3]; 7836 __le16 vlan_id; 7837 __le16 udp_src_port; 7838 __le32 src_gid[4]; 7839 __le32 dst_gid[4]; 7840 struct regpair qp_handle_for_cqe; 7841 struct regpair qp_handle_for_async; 7842 __le16 low_latency_phy_queue; 7843 u8 vf_id; 7844 u8 vport_id; 7845 __le32 cq_cid; 7846 __le16 regular_latency_phy_queue; 7847 __le16 dpi; 7848 __le32 src_qp_id; 7849 u8 name_space; 7850 u8 reserved3[3]; 7851 }; 7852 7853 /* roce DCQCN received statistics */ 7854 struct roce_dcqcn_received_stats { 7855 struct regpair ecn_pkt_rcv; 7856 struct regpair cnp_pkt_rcv; 7857 }; 7858 7859 /* roce DCQCN sent statistics */ 7860 struct roce_dcqcn_sent_stats { 7861 struct regpair cnp_pkt_sent; 7862 }; 7863 7864 /* RoCE destroy qp requester output params */ 7865 struct roce_destroy_qp_req_output_params { 7866 __le32 cq_prod; 7867 __le32 reserved; 7868 }; 7869 7870 /* RoCE destroy qp requester ramrod data */ 7871 struct roce_destroy_qp_req_ramrod_data { 7872 struct regpair output_params_addr; 7873 }; 7874 7875 /* RoCE destroy qp responder output params */ 7876 struct roce_destroy_qp_resp_output_params { 7877 __le32 cq_prod; 7878 __le32 reserved; 7879 }; 7880 7881 /* RoCE destroy qp responder ramrod data */ 7882 struct roce_destroy_qp_resp_ramrod_data { 7883 struct regpair output_params_addr; 7884 __le32 src_qp_id; 7885 __le32 reserved; 7886 }; 7887 7888 /* roce error statistics */ 7889 struct roce_error_stats { 7890 __le32 resp_remote_access_errors; 7891 __le32 reserved; 7892 }; 7893 7894 /* roce special events statistics */ 7895 struct roce_events_stats { 7896 __le32 silent_drops; 7897 __le32 rnr_naks_sent; 7898 __le32 retransmit_count; 7899 __le32 icrc_error_count; 7900 __le32 implied_nak_seq_err; 7901 __le32 duplicate_request; 7902 __le32 local_ack_timeout_err; 7903 __le32 out_of_sequence; 7904 __le32 packet_seq_err; 7905 __le32 rnr_nak_retry_err; 7906 }; 7907 7908 /* roce slow path EQ cmd IDs */ 7909 enum roce_event_opcode { 7910 ROCE_EVENT_CREATE_QP = 11, 7911 ROCE_EVENT_MODIFY_QP, 7912 ROCE_EVENT_QUERY_QP, 7913 ROCE_EVENT_DESTROY_QP, 7914 ROCE_EVENT_CREATE_UD_QP, 7915 ROCE_EVENT_DESTROY_UD_QP, 7916 ROCE_EVENT_FUNC_UPDATE, 7917 MAX_ROCE_EVENT_OPCODE 7918 }; 7919 7920 /* roce func init ramrod data */ 7921 struct roce_init_func_params { 7922 u8 ll2_queue_id; 7923 u8 cnp_vlan_priority; 7924 u8 cnp_dscp; 7925 u8 flags; 7926 #define ROCE_INIT_FUNC_PARAMS_DCQCN_NP_EN_MASK 0x1 7927 #define ROCE_INIT_FUNC_PARAMS_DCQCN_NP_EN_SHIFT 0 7928 #define ROCE_INIT_FUNC_PARAMS_DCQCN_RP_EN_MASK 0x1 7929 #define ROCE_INIT_FUNC_PARAMS_DCQCN_RP_EN_SHIFT 1 7930 #define ROCE_INIT_FUNC_PARAMS_RESERVED0_MASK 0x3F 7931 #define ROCE_INIT_FUNC_PARAMS_RESERVED0_SHIFT 2 7932 __le32 cnp_send_timeout; 7933 __le16 rl_offset; 7934 u8 rl_count_log; 7935 u8 reserved1[5]; 7936 }; 7937 7938 /* roce func init ramrod data */ 7939 struct roce_init_func_ramrod_data { 7940 struct rdma_init_func_ramrod_data rdma; 7941 struct roce_init_func_params roce; 7942 }; 7943 7944 /* roce modify qp requester ramrod data */ 7945 struct roce_modify_qp_req_ramrod_data { 7946 __le16 flags; 7947 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1 7948 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0 7949 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_MASK 0x1 7950 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_SHIFT 1 7951 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_MASK 0x1 7952 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_SHIFT 2 7953 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_MASK 0x1 7954 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_SHIFT 3 7955 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1 7956 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 4 7957 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_MASK 0x1 7958 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_SHIFT 5 7959 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_MASK 0x1 7960 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_SHIFT 6 7961 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_MASK 0x1 7962 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_SHIFT 7 7963 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_MASK 0x1 7964 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_SHIFT 8 7965 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_MASK 0x1 7966 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_SHIFT 9 7967 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_MASK 0x7 7968 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_SHIFT 10 7969 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK 0x1 7970 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT 13 7971 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_MASK 0x3 7972 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_SHIFT 14 7973 u8 fields; 7974 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF 7975 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 0 7976 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF 7977 #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 4 7978 u8 max_ord; 7979 u8 traffic_class; 7980 u8 hop_limit; 7981 __le16 p_key; 7982 __le32 flow_label; 7983 __le32 ack_timeout_val; 7984 __le16 mtu; 7985 __le16 reserved2; 7986 __le32 reserved3[2]; 7987 __le16 low_latency_phy_queue; 7988 __le16 regular_latency_phy_queue; 7989 __le32 src_gid[4]; 7990 __le32 dst_gid[4]; 7991 }; 7992 7993 /* roce modify qp responder ramrod data */ 7994 struct roce_modify_qp_resp_ramrod_data { 7995 __le16 flags; 7996 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1 7997 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0 7998 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1 7999 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 1 8000 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1 8001 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 2 8002 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1 8003 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 3 8004 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_MASK 0x1 8005 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_SHIFT 4 8006 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1 8007 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 5 8008 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_MASK 0x1 8009 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_SHIFT 6 8010 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_MASK 0x1 8011 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_SHIFT 7 8012 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_MASK 0x1 8013 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_SHIFT 8 8014 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1 8015 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 9 8016 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK 0x1 8017 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT 10 8018 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_MASK 0x1F 8019 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_SHIFT 11 8020 u8 fields; 8021 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_MASK 0x7 8022 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_SHIFT 0 8023 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F 8024 #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 3 8025 u8 max_ird; 8026 u8 traffic_class; 8027 u8 hop_limit; 8028 __le16 p_key; 8029 __le32 flow_label; 8030 __le16 mtu; 8031 __le16 low_latency_phy_queue; 8032 __le16 regular_latency_phy_queue; 8033 u8 reserved2[6]; 8034 __le32 src_gid[4]; 8035 __le32 dst_gid[4]; 8036 }; 8037 8038 /* RoCE query qp requester output params */ 8039 struct roce_query_qp_req_output_params { 8040 __le32 psn; 8041 __le32 flags; 8042 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_MASK 0x1 8043 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_SHIFT 0 8044 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_MASK 0x1 8045 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_SHIFT 1 8046 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_MASK 0x3FFFFFFF 8047 #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_SHIFT 2 8048 }; 8049 8050 /* RoCE query qp requester ramrod data */ 8051 struct roce_query_qp_req_ramrod_data { 8052 struct regpair output_params_addr; 8053 }; 8054 8055 /* RoCE query qp responder output params */ 8056 struct roce_query_qp_resp_output_params { 8057 __le32 psn; 8058 __le32 flags; 8059 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1 8060 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0 8061 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF 8062 #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_SHIFT 1 8063 }; 8064 8065 /* RoCE query qp responder ramrod data */ 8066 struct roce_query_qp_resp_ramrod_data { 8067 struct regpair output_params_addr; 8068 }; 8069 8070 /* ROCE ramrod command IDs */ 8071 enum roce_ramrod_cmd_id { 8072 ROCE_RAMROD_CREATE_QP = 11, 8073 ROCE_RAMROD_MODIFY_QP, 8074 ROCE_RAMROD_QUERY_QP, 8075 ROCE_RAMROD_DESTROY_QP, 8076 ROCE_RAMROD_CREATE_UD_QP, 8077 ROCE_RAMROD_DESTROY_UD_QP, 8078 ROCE_RAMROD_FUNC_UPDATE, 8079 MAX_ROCE_RAMROD_CMD_ID 8080 }; 8081 8082 /* RoCE func init ramrod data */ 8083 struct roce_update_func_params { 8084 u8 cnp_vlan_priority; 8085 u8 cnp_dscp; 8086 __le16 flags; 8087 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_NP_EN_MASK 0x1 8088 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_NP_EN_SHIFT 0 8089 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_RP_EN_MASK 0x1 8090 #define ROCE_UPDATE_FUNC_PARAMS_DCQCN_RP_EN_SHIFT 1 8091 #define ROCE_UPDATE_FUNC_PARAMS_RESERVED0_MASK 0x3FFF 8092 #define ROCE_UPDATE_FUNC_PARAMS_RESERVED0_SHIFT 2 8093 __le32 cnp_send_timeout; 8094 }; 8095 8096 struct e4_xstorm_roce_conn_ag_ctx_dq_ext_ld_part { 8097 u8 reserved0; 8098 u8 state; 8099 u8 flags0; 8100 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1 8101 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0 8102 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_MASK 0x1 8103 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_SHIFT 1 8104 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_MASK 0x1 8105 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_SHIFT 2 8106 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1 8107 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3 8108 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_MASK 0x1 8109 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_SHIFT 4 8110 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_MASK 0x1 8111 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_SHIFT 5 8112 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_MASK 0x1 8113 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_SHIFT 6 8114 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_MASK 0x1 8115 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_SHIFT 7 8116 u8 flags1; 8117 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_MASK 0x1 8118 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_SHIFT 0 8119 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_MASK 0x1 8120 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_SHIFT 1 8121 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_MASK 0x1 8122 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_SHIFT 2 8123 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_MASK 0x1 8124 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_SHIFT 3 8125 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_MASK 0x1 8126 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_SHIFT 4 8127 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_MASK 0x1 8128 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_SHIFT 5 8129 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT14_MASK 0x1 8130 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT14_SHIFT 6 8131 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_MASK 0x1 8132 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_SHIFT 7 8133 u8 flags2; 8134 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_MASK 0x3 8135 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_SHIFT 0 8136 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_MASK 0x3 8137 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_SHIFT 2 8138 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_MASK 0x3 8139 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_SHIFT 4 8140 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_MASK 0x3 8141 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_SHIFT 6 8142 u8 flags3; 8143 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_MASK 0x3 8144 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_SHIFT 0 8145 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_MASK 0x3 8146 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_SHIFT 2 8147 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_MASK 0x3 8148 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_SHIFT 4 8149 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_MASK 0x3 8150 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_SHIFT 6 8151 u8 flags4; 8152 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_MASK 0x3 8153 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_SHIFT 0 8154 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_MASK 0x3 8155 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_SHIFT 2 8156 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_MASK 0x3 8157 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_SHIFT 4 8158 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_MASK 0x3 8159 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_SHIFT 6 8160 u8 flags5; 8161 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_MASK 0x3 8162 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_SHIFT 0 8163 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_MASK 0x3 8164 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_SHIFT 2 8165 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_MASK 0x3 8166 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_SHIFT 4 8167 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_MASK 0x3 8168 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_SHIFT 6 8169 u8 flags6; 8170 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_MASK 0x3 8171 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_SHIFT 0 8172 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_MASK 0x3 8173 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_SHIFT 2 8174 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_MASK 0x3 8175 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_SHIFT 4 8176 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_MASK 0x3 8177 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_SHIFT 6 8178 u8 flags7; 8179 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_MASK 0x3 8180 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_SHIFT 0 8181 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_MASK 0x3 8182 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_SHIFT 2 8183 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3 8184 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4 8185 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1 8186 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6 8187 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1 8188 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7 8189 u8 flags8; 8190 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1 8191 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0 8192 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1 8193 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1 8194 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1 8195 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2 8196 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1 8197 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3 8198 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1 8199 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4 8200 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_MASK 0x1 8201 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_SHIFT 5 8202 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1 8203 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6 8204 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1 8205 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7 8206 u8 flags9; 8207 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1 8208 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0 8209 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1 8210 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1 8211 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1 8212 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2 8213 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1 8214 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3 8215 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1 8216 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4 8217 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1 8218 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5 8219 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_MASK 0x1 8220 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_SHIFT 6 8221 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_MASK 0x1 8222 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_SHIFT 7 8223 u8 flags10; 8224 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_MASK 0x1 8225 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_SHIFT 0 8226 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_MASK 0x1 8227 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_SHIFT 1 8228 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_MASK 0x1 8229 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_SHIFT 2 8230 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_MASK 0x1 8231 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_SHIFT 3 8232 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1 8233 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4 8234 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_MASK 0x1 8235 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_SHIFT 5 8236 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_MASK 0x1 8237 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_SHIFT 6 8238 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_MASK 0x1 8239 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_SHIFT 7 8240 u8 flags11; 8241 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_MASK 0x1 8242 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_SHIFT 0 8243 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_MASK 0x1 8244 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_SHIFT 1 8245 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_MASK 0x1 8246 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_SHIFT 2 8247 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1 8248 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3 8249 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1 8250 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4 8251 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1 8252 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5 8253 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1 8254 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6 8255 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1 8256 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7 8257 u8 flags12; 8258 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1 8259 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0 8260 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1 8261 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1 8262 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1 8263 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2 8264 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1 8265 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3 8266 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1 8267 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4 8268 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1 8269 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5 8270 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1 8271 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6 8272 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1 8273 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7 8274 u8 flags13; 8275 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1 8276 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0 8277 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1 8278 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1 8279 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1 8280 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2 8281 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1 8282 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3 8283 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1 8284 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4 8285 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1 8286 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5 8287 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1 8288 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6 8289 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1 8290 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7 8291 u8 flags14; 8292 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_MASK 0x1 8293 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_SHIFT 0 8294 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_MASK 0x1 8295 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_SHIFT 1 8296 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_MASK 0x3 8297 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_SHIFT 2 8298 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_MASK 0x1 8299 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_SHIFT 4 8300 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1 8301 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5 8302 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_MASK 0x3 8303 #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_SHIFT 6 8304 u8 byte2; 8305 __le16 physical_q0; 8306 __le16 word1; 8307 __le16 word2; 8308 __le16 word3; 8309 __le16 word4; 8310 __le16 word5; 8311 __le16 conn_dpi; 8312 u8 byte3; 8313 u8 byte4; 8314 u8 byte5; 8315 u8 byte6; 8316 __le32 reg0; 8317 __le32 reg1; 8318 __le32 reg2; 8319 __le32 snd_nxt_psn; 8320 __le32 reg4; 8321 }; 8322 8323 struct e4_mstorm_roce_conn_ag_ctx { 8324 u8 byte0; 8325 u8 byte1; 8326 u8 flags0; 8327 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1 8328 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0 8329 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1 8330 #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1 8331 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3 8332 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2 8333 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3 8334 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4 8335 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3 8336 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6 8337 u8 flags1; 8338 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1 8339 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0 8340 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1 8341 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1 8342 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1 8343 #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2 8344 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1 8345 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3 8346 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1 8347 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4 8348 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1 8349 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5 8350 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1 8351 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6 8352 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1 8353 #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7 8354 __le16 word0; 8355 __le16 word1; 8356 __le32 reg0; 8357 __le32 reg1; 8358 }; 8359 8360 struct e4_mstorm_roce_req_conn_ag_ctx { 8361 u8 byte0; 8362 u8 byte1; 8363 u8 flags0; 8364 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1 8365 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0 8366 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1 8367 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1 8368 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3 8369 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2 8370 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3 8371 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4 8372 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3 8373 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6 8374 u8 flags1; 8375 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1 8376 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0 8377 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1 8378 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1 8379 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1 8380 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2 8381 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1 8382 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3 8383 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1 8384 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4 8385 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1 8386 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5 8387 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1 8388 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6 8389 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1 8390 #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7 8391 __le16 word0; 8392 __le16 word1; 8393 __le32 reg0; 8394 __le32 reg1; 8395 }; 8396 8397 struct e4_mstorm_roce_resp_conn_ag_ctx { 8398 u8 byte0; 8399 u8 byte1; 8400 u8 flags0; 8401 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1 8402 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0 8403 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1 8404 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1 8405 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3 8406 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2 8407 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3 8408 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4 8409 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3 8410 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6 8411 u8 flags1; 8412 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1 8413 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0 8414 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1 8415 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1 8416 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1 8417 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2 8418 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1 8419 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3 8420 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1 8421 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4 8422 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1 8423 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5 8424 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1 8425 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6 8426 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1 8427 #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7 8428 __le16 word0; 8429 __le16 word1; 8430 __le32 reg0; 8431 __le32 reg1; 8432 }; 8433 8434 struct e4_tstorm_roce_req_conn_ag_ctx { 8435 u8 reserved0; 8436 u8 state; 8437 u8 flags0; 8438 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 8439 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 8440 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_MASK 0x1 8441 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_SHIFT 1 8442 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_MASK 0x1 8443 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_SHIFT 2 8444 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_MASK 0x1 8445 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_SHIFT 3 8446 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1 8447 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4 8448 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_MASK 0x1 8449 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_SHIFT 5 8450 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_MASK 0x3 8451 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_SHIFT 6 8452 u8 flags1; 8453 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3 8454 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0 8455 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_MASK 0x3 8456 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_SHIFT 2 8457 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3 8458 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4 8459 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 8460 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 8461 u8 flags2; 8462 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_MASK 0x3 8463 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_SHIFT 0 8464 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_MASK 0x3 8465 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_SHIFT 2 8466 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_MASK 0x3 8467 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_SHIFT 4 8468 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_MASK 0x3 8469 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_SHIFT 6 8470 u8 flags3; 8471 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_MASK 0x3 8472 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_SHIFT 0 8473 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_MASK 0x3 8474 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_SHIFT 2 8475 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_MASK 0x1 8476 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_SHIFT 4 8477 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1 8478 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5 8479 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_MASK 0x1 8480 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_SHIFT 6 8481 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1 8482 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7 8483 u8 flags4; 8484 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 8485 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0 8486 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_MASK 0x1 8487 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_SHIFT 1 8488 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_MASK 0x1 8489 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_SHIFT 2 8490 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_MASK 0x1 8491 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_SHIFT 3 8492 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_MASK 0x1 8493 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_SHIFT 4 8494 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_MASK 0x1 8495 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_SHIFT 5 8496 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_MASK 0x1 8497 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_SHIFT 6 8498 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1 8499 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7 8500 u8 flags5; 8501 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1 8502 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0 8503 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_DIF_CNT_EN_MASK 0x1 8504 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_DIF_CNT_EN_SHIFT 1 8505 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1 8506 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2 8507 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1 8508 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3 8509 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1 8510 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4 8511 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_MASK 0x1 8512 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_SHIFT 5 8513 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1 8514 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6 8515 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1 8516 #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7 8517 __le32 dif_rxmit_cnt; 8518 __le32 snd_nxt_psn; 8519 __le32 snd_max_psn; 8520 __le32 orq_prod; 8521 __le32 reg4; 8522 __le32 dif_acked_cnt; 8523 __le32 dif_cnt; 8524 __le32 reg7; 8525 __le32 reg8; 8526 u8 tx_cqe_error_type; 8527 u8 orq_cache_idx; 8528 __le16 snd_sq_cons_th; 8529 u8 byte4; 8530 u8 byte5; 8531 __le16 snd_sq_cons; 8532 __le16 conn_dpi; 8533 __le16 force_comp_cons; 8534 __le32 dif_rxmit_acked_cnt; 8535 __le32 reg10; 8536 }; 8537 8538 struct e4_tstorm_roce_resp_conn_ag_ctx { 8539 u8 byte0; 8540 u8 state; 8541 u8 flags0; 8542 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 8543 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 8544 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_MASK 0x1 8545 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_SHIFT 1 8546 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_MASK 0x1 8547 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_SHIFT 2 8548 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_MASK 0x1 8549 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_SHIFT 3 8550 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1 8551 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4 8552 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_MASK 0x1 8553 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_SHIFT 5 8554 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3 8555 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 6 8556 u8 flags1; 8557 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3 8558 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0 8559 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_MASK 0x3 8560 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_SHIFT 2 8561 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3 8562 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 4 8563 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 8564 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 8565 u8 flags2; 8566 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3 8567 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 0 8568 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3 8569 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 2 8570 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_MASK 0x3 8571 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_SHIFT 4 8572 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3 8573 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 6 8574 u8 flags3; 8575 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3 8576 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 0 8577 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3 8578 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 2 8579 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1 8580 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 4 8581 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1 8582 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5 8583 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_MASK 0x1 8584 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_SHIFT 6 8585 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1 8586 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 7 8587 u8 flags4; 8588 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 8589 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0 8590 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1 8591 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 1 8592 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1 8593 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 2 8594 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_MASK 0x1 8595 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_SHIFT 3 8596 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1 8597 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 4 8598 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1 8599 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 5 8600 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1 8601 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 6 8602 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1 8603 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7 8604 u8 flags5; 8605 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1 8606 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0 8607 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1 8608 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1 8609 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1 8610 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2 8611 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1 8612 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3 8613 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1 8614 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4 8615 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_MASK 0x1 8616 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_SHIFT 5 8617 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1 8618 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6 8619 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1 8620 #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7 8621 __le32 psn_and_rxmit_id_echo; 8622 __le32 reg1; 8623 __le32 reg2; 8624 __le32 reg3; 8625 __le32 reg4; 8626 __le32 reg5; 8627 __le32 reg6; 8628 __le32 reg7; 8629 __le32 reg8; 8630 u8 tx_async_error_type; 8631 u8 byte3; 8632 __le16 rq_cons; 8633 u8 byte4; 8634 u8 byte5; 8635 __le16 rq_prod; 8636 __le16 conn_dpi; 8637 __le16 irq_cons; 8638 __le32 reg9; 8639 __le32 reg10; 8640 }; 8641 8642 struct e4_ustorm_roce_req_conn_ag_ctx { 8643 u8 byte0; 8644 u8 byte1; 8645 u8 flags0; 8646 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1 8647 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0 8648 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1 8649 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1 8650 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3 8651 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2 8652 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3 8653 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4 8654 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3 8655 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6 8656 u8 flags1; 8657 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3 8658 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 0 8659 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK 0x3 8660 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT 2 8661 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK 0x3 8662 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT 4 8663 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK 0x3 8664 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT 6 8665 u8 flags2; 8666 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1 8667 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0 8668 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1 8669 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1 8670 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1 8671 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2 8672 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1 8673 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3 8674 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK 0x1 8675 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4 8676 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK 0x1 8677 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5 8678 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK 0x1 8679 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6 8680 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1 8681 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7 8682 u8 flags3; 8683 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1 8684 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0 8685 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1 8686 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 1 8687 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1 8688 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2 8689 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1 8690 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3 8691 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1 8692 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4 8693 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1 8694 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 5 8695 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1 8696 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6 8697 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1 8698 #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7 8699 u8 byte2; 8700 u8 byte3; 8701 __le16 word0; 8702 __le16 word1; 8703 __le32 reg0; 8704 __le32 reg1; 8705 __le32 reg2; 8706 __le32 reg3; 8707 __le16 word2; 8708 __le16 word3; 8709 }; 8710 8711 struct e4_ustorm_roce_resp_conn_ag_ctx { 8712 u8 byte0; 8713 u8 byte1; 8714 u8 flags0; 8715 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1 8716 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0 8717 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1 8718 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1 8719 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3 8720 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2 8721 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3 8722 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4 8723 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3 8724 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6 8725 u8 flags1; 8726 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3 8727 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 0 8728 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK 0x3 8729 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT 2 8730 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK 0x3 8731 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT 4 8732 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3 8733 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 6 8734 u8 flags2; 8735 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1 8736 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0 8737 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1 8738 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1 8739 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1 8740 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2 8741 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1 8742 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 3 8743 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1 8744 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT 4 8745 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1 8746 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT 5 8747 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1 8748 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 6 8749 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1 8750 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7 8751 u8 flags3; 8752 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1 8753 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0 8754 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1 8755 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1 8756 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1 8757 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2 8758 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1 8759 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3 8760 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1 8761 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4 8762 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1 8763 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 5 8764 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1 8765 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6 8766 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1 8767 #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7 8768 u8 byte2; 8769 u8 byte3; 8770 __le16 word0; 8771 __le16 word1; 8772 __le32 reg0; 8773 __le32 reg1; 8774 __le32 reg2; 8775 __le32 reg3; 8776 __le16 word2; 8777 __le16 word3; 8778 }; 8779 8780 struct e4_xstorm_roce_req_conn_ag_ctx { 8781 u8 reserved0; 8782 u8 state; 8783 u8 flags0; 8784 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 8785 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 8786 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_MASK 0x1 8787 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_SHIFT 1 8788 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_MASK 0x1 8789 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_SHIFT 2 8790 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 8791 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 8792 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_MASK 0x1 8793 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_SHIFT 4 8794 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_MASK 0x1 8795 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_SHIFT 5 8796 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_MASK 0x1 8797 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_SHIFT 6 8798 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_MASK 0x1 8799 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_SHIFT 7 8800 u8 flags1; 8801 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_MASK 0x1 8802 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_SHIFT 0 8803 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_MASK 0x1 8804 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_SHIFT 1 8805 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_MASK 0x1 8806 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_SHIFT 2 8807 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_MASK 0x1 8808 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_SHIFT 3 8809 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSDM_FLUSH_MASK 0x1 8810 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSDM_FLUSH_SHIFT 4 8811 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSEM_FLUSH_MASK 0x1 8812 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MSEM_FLUSH_SHIFT 5 8813 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_MASK 0x1 8814 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_SHIFT 6 8815 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1 8816 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7 8817 u8 flags2; 8818 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3 8819 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 0 8820 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3 8821 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 2 8822 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3 8823 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 4 8824 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3 8825 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 6 8826 u8 flags3; 8827 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3 8828 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 0 8829 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3 8830 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2 8831 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_MASK 0x3 8832 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_SHIFT 4 8833 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 8834 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 8835 u8 flags4; 8836 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_MASK 0x3 8837 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_SHIFT 0 8838 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_MASK 0x3 8839 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_SHIFT 2 8840 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_MASK 0x3 8841 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_SHIFT 4 8842 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_MASK 0x3 8843 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_SHIFT 6 8844 u8 flags5; 8845 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_MASK 0x3 8846 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_SHIFT 0 8847 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_MASK 0x3 8848 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_SHIFT 2 8849 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_MASK 0x3 8850 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_SHIFT 4 8851 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_MASK 0x3 8852 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_SHIFT 6 8853 u8 flags6; 8854 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_MASK 0x3 8855 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_SHIFT 0 8856 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_MASK 0x3 8857 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_SHIFT 2 8858 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_MASK 0x3 8859 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_SHIFT 4 8860 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_MASK 0x3 8861 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_SHIFT 6 8862 u8 flags7; 8863 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_MASK 0x3 8864 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_SHIFT 0 8865 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_MASK 0x3 8866 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_SHIFT 2 8867 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_MASK 0x3 8868 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_SHIFT 4 8869 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1 8870 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 6 8871 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1 8872 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 7 8873 u8 flags8; 8874 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1 8875 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 0 8876 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1 8877 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 1 8878 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1 8879 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 2 8880 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1 8881 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3 8882 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_MASK 0x1 8883 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_SHIFT 4 8884 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 8885 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5 8886 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 8887 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_SHIFT 6 8888 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_MASK 0x1 8889 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_SHIFT 7 8890 u8 flags9; 8891 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_MASK 0x1 8892 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_SHIFT 0 8893 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_MASK 0x1 8894 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_SHIFT 1 8895 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_MASK 0x1 8896 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_SHIFT 2 8897 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_MASK 0x1 8898 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_SHIFT 3 8899 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_MASK 0x1 8900 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_SHIFT 4 8901 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_MASK 0x1 8902 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_SHIFT 5 8903 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_MASK 0x1 8904 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_SHIFT 6 8905 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_MASK 0x1 8906 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_SHIFT 7 8907 u8 flags10; 8908 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_MASK 0x1 8909 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_SHIFT 0 8910 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_MASK 0x1 8911 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_SHIFT 1 8912 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_MASK 0x1 8913 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_SHIFT 2 8914 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_MASK 0x1 8915 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_SHIFT 3 8916 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 8917 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 8918 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_MASK 0x1 8919 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_SHIFT 5 8920 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1 8921 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 6 8922 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1 8923 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 7 8924 u8 flags11; 8925 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1 8926 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 0 8927 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1 8928 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 1 8929 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1 8930 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 2 8931 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1 8932 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 3 8933 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1 8934 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 4 8935 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_MASK 0x1 8936 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_SHIFT 5 8937 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 8938 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 8939 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_MASK 0x1 8940 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_SHIFT 7 8941 u8 flags12; 8942 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_MASK 0x1 8943 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_SHIFT 0 8944 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_MASK 0x1 8945 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_SHIFT 1 8946 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 8947 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 8948 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 8949 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 8950 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_MASK 0x1 8951 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_SHIFT 4 8952 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_MASK 0x1 8953 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_SHIFT 5 8954 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_MASK 0x1 8955 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_SHIFT 6 8956 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_MASK 0x1 8957 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_SHIFT 7 8958 u8 flags13; 8959 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_MASK 0x1 8960 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_SHIFT 0 8961 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_MASK 0x1 8962 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_SHIFT 1 8963 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 8964 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 8965 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 8966 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 8967 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 8968 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 8969 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 8970 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 8971 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 8972 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 8973 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 8974 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 8975 u8 flags14; 8976 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_MASK 0x1 8977 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_SHIFT 0 8978 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_MASK 0x1 8979 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_SHIFT 1 8980 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3 8981 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2 8982 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_MASK 0x1 8983 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_SHIFT 4 8984 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1 8985 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5 8986 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_MASK 0x3 8987 #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_SHIFT 6 8988 u8 byte2; 8989 __le16 physical_q0; 8990 __le16 word1; 8991 __le16 sq_cmp_cons; 8992 __le16 sq_cons; 8993 __le16 sq_prod; 8994 __le16 dif_error_first_sq_cons; 8995 __le16 conn_dpi; 8996 u8 dif_error_sge_index; 8997 u8 byte4; 8998 u8 byte5; 8999 u8 byte6; 9000 __le32 lsn; 9001 __le32 ssn; 9002 __le32 snd_una_psn; 9003 __le32 snd_nxt_psn; 9004 __le32 dif_error_offset; 9005 __le32 orq_cons_th; 9006 __le32 orq_cons; 9007 }; 9008 9009 struct e4_xstorm_roce_resp_conn_ag_ctx { 9010 u8 reserved0; 9011 u8 state; 9012 u8 flags0; 9013 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 9014 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 9015 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_MASK 0x1 9016 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_SHIFT 1 9017 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_MASK 0x1 9018 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_SHIFT 2 9019 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 9020 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 9021 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_MASK 0x1 9022 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_SHIFT 4 9023 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_MASK 0x1 9024 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_SHIFT 5 9025 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_MASK 0x1 9026 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_SHIFT 6 9027 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_MASK 0x1 9028 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_SHIFT 7 9029 u8 flags1; 9030 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_MASK 0x1 9031 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_SHIFT 0 9032 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_MASK 0x1 9033 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_SHIFT 1 9034 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_MASK 0x1 9035 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_SHIFT 2 9036 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_MASK 0x1 9037 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_SHIFT 3 9038 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSDM_FLUSH_MASK 0x1 9039 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSDM_FLUSH_SHIFT 4 9040 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSEM_FLUSH_MASK 0x1 9041 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_MSEM_FLUSH_SHIFT 5 9042 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_MASK 0x1 9043 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_SHIFT 6 9044 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1 9045 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7 9046 u8 flags2; 9047 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3 9048 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 0 9049 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3 9050 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 2 9051 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3 9052 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 4 9053 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3 9054 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 6 9055 u8 flags3; 9056 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_MASK 0x3 9057 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_SHIFT 0 9058 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3 9059 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2 9060 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_MASK 0x3 9061 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_SHIFT 4 9062 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 9063 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6 9064 u8 flags4; 9065 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3 9066 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 0 9067 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3 9068 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 2 9069 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3 9070 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 4 9071 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_MASK 0x3 9072 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_SHIFT 6 9073 u8 flags5; 9074 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_MASK 0x3 9075 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_SHIFT 0 9076 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_MASK 0x3 9077 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_SHIFT 2 9078 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_MASK 0x3 9079 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_SHIFT 4 9080 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_MASK 0x3 9081 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_SHIFT 6 9082 u8 flags6; 9083 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_MASK 0x3 9084 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_SHIFT 0 9085 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_MASK 0x3 9086 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_SHIFT 2 9087 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_MASK 0x3 9088 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_SHIFT 4 9089 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_MASK 0x3 9090 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_SHIFT 6 9091 u8 flags7; 9092 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_MASK 0x3 9093 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_SHIFT 0 9094 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_MASK 0x3 9095 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_SHIFT 2 9096 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_MASK 0x3 9097 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_SHIFT 4 9098 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1 9099 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 6 9100 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1 9101 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 7 9102 u8 flags8; 9103 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1 9104 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 0 9105 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1 9106 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 1 9107 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_MASK 0x1 9108 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_SHIFT 2 9109 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1 9110 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3 9111 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_MASK 0x1 9112 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_SHIFT 4 9113 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 9114 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5 9115 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1 9116 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 6 9117 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1 9118 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 7 9119 u8 flags9; 9120 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1 9121 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 0 9122 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_MASK 0x1 9123 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_SHIFT 1 9124 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_MASK 0x1 9125 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_SHIFT 2 9126 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_MASK 0x1 9127 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_SHIFT 3 9128 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_MASK 0x1 9129 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_SHIFT 4 9130 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_MASK 0x1 9131 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_SHIFT 5 9132 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_MASK 0x1 9133 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_SHIFT 6 9134 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_MASK 0x1 9135 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_SHIFT 7 9136 u8 flags10; 9137 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_MASK 0x1 9138 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_SHIFT 0 9139 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_MASK 0x1 9140 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_SHIFT 1 9141 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_MASK 0x1 9142 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_SHIFT 2 9143 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_MASK 0x1 9144 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_SHIFT 3 9145 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 9146 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 9147 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_MASK 0x1 9148 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_SHIFT 5 9149 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1 9150 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 6 9151 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1 9152 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 7 9153 u8 flags11; 9154 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1 9155 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 0 9156 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1 9157 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 1 9158 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1 9159 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 2 9160 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1 9161 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 3 9162 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1 9163 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 4 9164 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1 9165 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 5 9166 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 9167 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 9168 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_MASK 0x1 9169 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_SHIFT 7 9170 u8 flags12; 9171 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_MASK 0x1 9172 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_SHIFT 0 9173 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_MASK 0x1 9174 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_SHIFT 1 9175 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 9176 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 9177 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 9178 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 9179 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_MASK 0x1 9180 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_SHIFT 4 9181 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_MASK 0x1 9182 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_SHIFT 5 9183 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_MASK 0x1 9184 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_SHIFT 6 9185 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_MASK 0x1 9186 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_SHIFT 7 9187 u8 flags13; 9188 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_MASK 0x1 9189 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_SHIFT 0 9190 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_MASK 0x1 9191 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_SHIFT 1 9192 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 9193 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 9194 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 9195 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 9196 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 9197 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 9198 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 9199 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 9200 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 9201 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 9202 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 9203 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 9204 u8 flags14; 9205 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_MASK 0x1 9206 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_SHIFT 0 9207 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_MASK 0x1 9208 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_SHIFT 1 9209 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_MASK 0x1 9210 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_SHIFT 2 9211 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_MASK 0x1 9212 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_SHIFT 3 9213 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_MASK 0x1 9214 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_SHIFT 4 9215 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_MASK 0x1 9216 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_SHIFT 5 9217 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_MASK 0x3 9218 #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_SHIFT 6 9219 u8 byte2; 9220 __le16 physical_q0; 9221 __le16 irq_prod_shadow; 9222 __le16 word2; 9223 __le16 irq_cons; 9224 __le16 irq_prod; 9225 __le16 e5_reserved1; 9226 __le16 conn_dpi; 9227 u8 rxmit_opcode; 9228 u8 byte4; 9229 u8 byte5; 9230 u8 byte6; 9231 __le32 rxmit_psn_and_id; 9232 __le32 rxmit_bytes_length; 9233 __le32 psn; 9234 __le32 reg3; 9235 __le32 reg4; 9236 __le32 reg5; 9237 __le32 msn_and_syndrome; 9238 }; 9239 9240 struct e4_ystorm_roce_conn_ag_ctx { 9241 u8 byte0; 9242 u8 byte1; 9243 u8 flags0; 9244 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1 9245 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0 9246 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1 9247 #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1 9248 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3 9249 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2 9250 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3 9251 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4 9252 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3 9253 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6 9254 u8 flags1; 9255 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1 9256 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0 9257 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1 9258 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1 9259 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1 9260 #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2 9261 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1 9262 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3 9263 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1 9264 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4 9265 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1 9266 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5 9267 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1 9268 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6 9269 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1 9270 #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7 9271 u8 byte2; 9272 u8 byte3; 9273 __le16 word0; 9274 __le32 reg0; 9275 __le32 reg1; 9276 __le16 word1; 9277 __le16 word2; 9278 __le16 word3; 9279 __le16 word4; 9280 __le32 reg2; 9281 __le32 reg3; 9282 }; 9283 9284 struct e4_ystorm_roce_req_conn_ag_ctx { 9285 u8 byte0; 9286 u8 byte1; 9287 u8 flags0; 9288 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1 9289 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0 9290 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1 9291 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1 9292 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3 9293 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2 9294 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3 9295 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4 9296 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3 9297 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6 9298 u8 flags1; 9299 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1 9300 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0 9301 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1 9302 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1 9303 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1 9304 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2 9305 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1 9306 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3 9307 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1 9308 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4 9309 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1 9310 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5 9311 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1 9312 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6 9313 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1 9314 #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7 9315 u8 byte2; 9316 u8 byte3; 9317 __le16 word0; 9318 __le32 reg0; 9319 __le32 reg1; 9320 __le16 word1; 9321 __le16 word2; 9322 __le16 word3; 9323 __le16 word4; 9324 __le32 reg2; 9325 __le32 reg3; 9326 }; 9327 9328 struct e4_ystorm_roce_resp_conn_ag_ctx { 9329 u8 byte0; 9330 u8 byte1; 9331 u8 flags0; 9332 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1 9333 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0 9334 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1 9335 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1 9336 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3 9337 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2 9338 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3 9339 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4 9340 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3 9341 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6 9342 u8 flags1; 9343 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1 9344 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0 9345 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1 9346 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1 9347 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1 9348 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2 9349 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1 9350 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3 9351 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1 9352 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4 9353 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1 9354 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5 9355 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1 9356 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6 9357 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1 9358 #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7 9359 u8 byte2; 9360 u8 byte3; 9361 __le16 word0; 9362 __le32 reg0; 9363 __le32 reg1; 9364 __le16 word1; 9365 __le16 word2; 9366 __le16 word3; 9367 __le16 word4; 9368 __le32 reg2; 9369 __le32 reg3; 9370 }; 9371 9372 /* Roce doorbell data */ 9373 enum roce_flavor { 9374 PLAIN_ROCE, 9375 RROCE_IPV4, 9376 RROCE_IPV6, 9377 MAX_ROCE_FLAVOR 9378 }; 9379 9380 /* The iwarp storm context of Ystorm */ 9381 struct ystorm_iwarp_conn_st_ctx { 9382 __le32 reserved[4]; 9383 }; 9384 9385 /* The iwarp storm context of Pstorm */ 9386 struct pstorm_iwarp_conn_st_ctx { 9387 __le32 reserved[36]; 9388 }; 9389 9390 /* The iwarp storm context of Xstorm */ 9391 struct xstorm_iwarp_conn_st_ctx { 9392 __le32 reserved[48]; 9393 }; 9394 9395 struct e4_xstorm_iwarp_conn_ag_ctx { 9396 u8 reserved0; 9397 u8 state; 9398 u8 flags0; 9399 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 9400 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 9401 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1 9402 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1 9403 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_MASK 0x1 9404 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_SHIFT 2 9405 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 9406 #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 9407 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1 9408 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4 9409 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_MASK 0x1 9410 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_SHIFT 5 9411 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_MASK 0x1 9412 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_SHIFT 6 9413 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_MASK 0x1 9414 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_SHIFT 7 9415 u8 flags1; 9416 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_MASK 0x1 9417 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_SHIFT 0 9418 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_MASK 0x1 9419 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_SHIFT 1 9420 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_MASK 0x1 9421 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_SHIFT 2 9422 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_MASK 0x1 9423 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_SHIFT 3 9424 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_MASK 0x1 9425 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_SHIFT 4 9426 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_MASK 0x1 9427 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_SHIFT 5 9428 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_MASK 0x1 9429 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_SHIFT 6 9430 #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_MASK 0x1 9431 #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_SHIFT 7 9432 u8 flags2; 9433 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3 9434 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 0 9435 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3 9436 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 2 9437 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3 9438 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 4 9439 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3 9440 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6 9441 u8 flags3; 9442 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3 9443 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 0 9444 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3 9445 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 2 9446 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3 9447 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 4 9448 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3 9449 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 6 9450 u8 flags4; 9451 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3 9452 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 0 9453 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_MASK 0x3 9454 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_SHIFT 2 9455 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_MASK 0x3 9456 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_SHIFT 4 9457 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_MASK 0x3 9458 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_SHIFT 6 9459 u8 flags5; 9460 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_MASK 0x3 9461 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_SHIFT 0 9462 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_MASK 0x3 9463 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_SHIFT 2 9464 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3 9465 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 4 9466 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_MASK 0x3 9467 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_SHIFT 6 9468 u8 flags6; 9469 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_MASK 0x3 9470 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_SHIFT 0 9471 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_MASK 0x3 9472 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_SHIFT 2 9473 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_MASK 0x3 9474 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_SHIFT 4 9475 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_MASK 0x3 9476 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_SHIFT 6 9477 u8 flags7; 9478 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 9479 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 9480 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_MASK 0x3 9481 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_SHIFT 2 9482 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_MASK 0x3 9483 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_SHIFT 4 9484 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1 9485 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 6 9486 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1 9487 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 7 9488 u8 flags8; 9489 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1 9490 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 0 9491 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 9492 #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1 9493 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1 9494 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 2 9495 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1 9496 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 3 9497 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1 9498 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 4 9499 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1 9500 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 5 9501 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1 9502 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 6 9503 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_MASK 0x1 9504 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_SHIFT 7 9505 u8 flags9; 9506 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_MASK 0x1 9507 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_SHIFT 0 9508 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_MASK 0x1 9509 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_SHIFT 1 9510 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_MASK 0x1 9511 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_SHIFT 2 9512 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_MASK 0x1 9513 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_SHIFT 3 9514 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1 9515 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 4 9516 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_MASK 0x1 9517 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_SHIFT 5 9518 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_MASK 0x1 9519 #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_SHIFT 6 9520 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_MASK 0x1 9521 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_SHIFT 7 9522 u8 flags10; 9523 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_MASK 0x1 9524 #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_SHIFT 0 9525 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1 9526 #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1 9527 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 9528 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2 9529 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_MASK 0x1 9530 #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_SHIFT 3 9531 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 9532 #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 9533 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_MASK 0x1 9534 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_SHIFT 5 9535 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1 9536 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 6 9537 #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_MASK 0x1 9538 #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_SHIFT 7 9539 u8 flags11; 9540 #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1 9541 #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0 9542 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1 9543 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 1 9544 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_MASK 0x1 9545 #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_SHIFT 2 9546 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1 9547 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 3 9548 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1 9549 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 4 9550 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1 9551 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 5 9552 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 9553 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 9554 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_MASK 0x1 9555 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_SHIFT 7 9556 u8 flags12; 9557 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_MASK 0x1 9558 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_SHIFT 0 9559 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_MASK 0x1 9560 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_SHIFT 1 9561 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 9562 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 9563 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 9564 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 9565 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_MASK 0x1 9566 #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_SHIFT 4 9567 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_MASK 0x1 9568 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_SHIFT 5 9569 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_MASK 0x1 9570 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_SHIFT 6 9571 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_MASK 0x1 9572 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_SHIFT 7 9573 u8 flags13; 9574 #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_MASK 0x1 9575 #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_SHIFT 0 9576 #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_MASK 0x1 9577 #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_SHIFT 1 9578 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_MASK 0x1 9579 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_SHIFT 2 9580 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_MASK 0x1 9581 #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_SHIFT 3 9582 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 9583 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 9584 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_MASK 0x1 9585 #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_SHIFT 5 9586 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 9587 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 9588 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 9589 #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 9590 u8 flags14; 9591 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_MASK 0x1 9592 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_SHIFT 0 9593 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_MASK 0x1 9594 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_SHIFT 1 9595 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_MASK 0x1 9596 #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_SHIFT 2 9597 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_MASK 0x1 9598 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_SHIFT 3 9599 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_MASK 0x1 9600 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_SHIFT 4 9601 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_MASK 0x1 9602 #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_SHIFT 5 9603 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_MASK 0x3 9604 #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_SHIFT 6 9605 u8 byte2; 9606 __le16 physical_q0; 9607 __le16 physical_q1; 9608 __le16 sq_comp_cons; 9609 __le16 sq_tx_cons; 9610 __le16 sq_prod; 9611 __le16 word5; 9612 __le16 conn_dpi; 9613 u8 byte3; 9614 u8 byte4; 9615 u8 byte5; 9616 u8 byte6; 9617 __le32 reg0; 9618 __le32 reg1; 9619 __le32 reg2; 9620 __le32 more_to_send_seq; 9621 __le32 reg4; 9622 __le32 rewinded_snd_max_or_term_opcode; 9623 __le32 rd_msn; 9624 __le16 irq_prod_via_msdm; 9625 __le16 irq_cons; 9626 __le16 hq_cons_th_or_mpa_data; 9627 __le16 hq_cons; 9628 __le32 atom_msn; 9629 __le32 orq_cons; 9630 __le32 orq_cons_th; 9631 u8 byte7; 9632 u8 wqe_data_pad_bytes; 9633 u8 max_ord; 9634 u8 former_hq_prod; 9635 u8 irq_prod_via_msem; 9636 u8 byte12; 9637 u8 max_pkt_pdu_size_lo; 9638 u8 max_pkt_pdu_size_hi; 9639 u8 byte15; 9640 u8 e5_reserved; 9641 __le16 e5_reserved4; 9642 __le32 reg10; 9643 __le32 reg11; 9644 __le32 shared_queue_page_addr_lo; 9645 __le32 shared_queue_page_addr_hi; 9646 __le32 reg14; 9647 __le32 reg15; 9648 __le32 reg16; 9649 __le32 reg17; 9650 }; 9651 9652 struct e4_tstorm_iwarp_conn_ag_ctx { 9653 u8 reserved0; 9654 u8 state; 9655 u8 flags0; 9656 #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 9657 #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 9658 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1 9659 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1 9660 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_MASK 0x1 9661 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_SHIFT 2 9662 #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_MASK 0x1 9663 #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_SHIFT 3 9664 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1 9665 #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4 9666 #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_MASK 0x1 9667 #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_SHIFT 5 9668 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3 9669 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 6 9670 u8 flags1; 9671 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_MASK 0x3 9672 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_SHIFT 0 9673 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_MASK 0x3 9674 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_SHIFT 2 9675 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3 9676 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4 9677 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3 9678 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 6 9679 u8 flags2; 9680 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3 9681 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 0 9682 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3 9683 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 2 9684 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3 9685 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 4 9686 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3 9687 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 6 9688 u8 flags3; 9689 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_MASK 0x3 9690 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_SHIFT 0 9691 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_MASK 0x3 9692 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_SHIFT 2 9693 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1 9694 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 4 9695 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_MASK 0x1 9696 #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_SHIFT 5 9697 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_MASK 0x1 9698 #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_SHIFT 6 9699 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 9700 #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7 9701 u8 flags4; 9702 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1 9703 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 0 9704 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1 9705 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 1 9706 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1 9707 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 2 9708 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1 9709 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 3 9710 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1 9711 #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 4 9712 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_MASK 0x1 9713 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_SHIFT 5 9714 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_MASK 0x1 9715 #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_SHIFT 6 9716 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1 9717 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 7 9718 u8 flags5; 9719 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1 9720 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 0 9721 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1 9722 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1 9723 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1 9724 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2 9725 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1 9726 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3 9727 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1 9728 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4 9729 #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_MASK 0x1 9730 #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_SHIFT 5 9731 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1 9732 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6 9733 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1 9734 #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7 9735 __le32 reg0; 9736 __le32 reg1; 9737 __le32 unaligned_nxt_seq; 9738 __le32 reg3; 9739 __le32 reg4; 9740 __le32 reg5; 9741 __le32 reg6; 9742 __le32 reg7; 9743 __le32 reg8; 9744 u8 orq_cache_idx; 9745 u8 hq_prod; 9746 __le16 sq_tx_cons_th; 9747 u8 orq_prod; 9748 u8 irq_cons; 9749 __le16 sq_tx_cons; 9750 __le16 conn_dpi; 9751 __le16 rq_prod; 9752 __le32 snd_seq; 9753 __le32 last_hq_sequence; 9754 }; 9755 9756 /* The iwarp storm context of Tstorm */ 9757 struct tstorm_iwarp_conn_st_ctx { 9758 __le32 reserved[60]; 9759 }; 9760 9761 /* The iwarp storm context of Mstorm */ 9762 struct mstorm_iwarp_conn_st_ctx { 9763 __le32 reserved[32]; 9764 }; 9765 9766 /* The iwarp storm context of Ustorm */ 9767 struct ustorm_iwarp_conn_st_ctx { 9768 struct regpair reserved[14]; 9769 }; 9770 9771 /* iwarp connection context */ 9772 struct e4_iwarp_conn_context { 9773 struct ystorm_iwarp_conn_st_ctx ystorm_st_context; 9774 struct regpair ystorm_st_padding[2]; 9775 struct pstorm_iwarp_conn_st_ctx pstorm_st_context; 9776 struct regpair pstorm_st_padding[2]; 9777 struct xstorm_iwarp_conn_st_ctx xstorm_st_context; 9778 struct e4_xstorm_iwarp_conn_ag_ctx xstorm_ag_context; 9779 struct e4_tstorm_iwarp_conn_ag_ctx tstorm_ag_context; 9780 struct timers_context timer_context; 9781 struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context; 9782 struct tstorm_iwarp_conn_st_ctx tstorm_st_context; 9783 struct regpair tstorm_st_padding[2]; 9784 struct mstorm_iwarp_conn_st_ctx mstorm_st_context; 9785 struct ustorm_iwarp_conn_st_ctx ustorm_st_context; 9786 struct regpair ustorm_st_padding[2]; 9787 }; 9788 9789 /* iWARP create QP params passed by driver to FW in CreateQP Request Ramrod */ 9790 struct iwarp_create_qp_ramrod_data { 9791 u8 flags; 9792 #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1 9793 #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 0 9794 #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_MASK 0x1 9795 #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_SHIFT 1 9796 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1 9797 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2 9798 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1 9799 #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3 9800 #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1 9801 #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 4 9802 #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_MASK 0x1 9803 #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_SHIFT 5 9804 #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_MASK 0x1 9805 #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_SHIFT 6 9806 #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_MASK 0x1 9807 #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_SHIFT 7 9808 u8 reserved1; 9809 __le16 pd; 9810 __le16 sq_num_pages; 9811 __le16 rq_num_pages; 9812 __le32 reserved3[2]; 9813 struct regpair qp_handle_for_cqe; 9814 struct rdma_srq_id srq_id; 9815 __le32 cq_cid_for_sq; 9816 __le32 cq_cid_for_rq; 9817 __le16 dpi; 9818 __le16 physical_q0; 9819 __le16 physical_q1; 9820 u8 reserved2[6]; 9821 }; 9822 9823 /* iWARP completion queue types */ 9824 enum iwarp_eqe_async_opcode { 9825 IWARP_EVENT_TYPE_ASYNC_CONNECT_COMPLETE, 9826 IWARP_EVENT_TYPE_ASYNC_ENHANCED_MPA_REPLY_ARRIVED, 9827 IWARP_EVENT_TYPE_ASYNC_MPA_HANDSHAKE_COMPLETE, 9828 IWARP_EVENT_TYPE_ASYNC_CID_CLEANED, 9829 IWARP_EVENT_TYPE_ASYNC_EXCEPTION_DETECTED, 9830 IWARP_EVENT_TYPE_ASYNC_QP_IN_ERROR_STATE, 9831 IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW, 9832 IWARP_EVENT_TYPE_ASYNC_SRQ_EMPTY, 9833 IWARP_EVENT_TYPE_ASYNC_SRQ_LIMIT, 9834 MAX_IWARP_EQE_ASYNC_OPCODE 9835 }; 9836 9837 struct iwarp_eqe_data_mpa_async_completion { 9838 __le16 ulp_data_len; 9839 u8 rtr_type_sent; 9840 u8 reserved[5]; 9841 }; 9842 9843 struct iwarp_eqe_data_tcp_async_completion { 9844 __le16 ulp_data_len; 9845 u8 mpa_handshake_mode; 9846 u8 reserved[5]; 9847 }; 9848 9849 /* iWARP completion queue types */ 9850 enum iwarp_eqe_sync_opcode { 9851 IWARP_EVENT_TYPE_TCP_OFFLOAD = 9852 11, 9853 IWARP_EVENT_TYPE_MPA_OFFLOAD, 9854 IWARP_EVENT_TYPE_MPA_OFFLOAD_SEND_RTR, 9855 IWARP_EVENT_TYPE_CREATE_QP, 9856 IWARP_EVENT_TYPE_QUERY_QP, 9857 IWARP_EVENT_TYPE_MODIFY_QP, 9858 IWARP_EVENT_TYPE_DESTROY_QP, 9859 IWARP_EVENT_TYPE_ABORT_TCP_OFFLOAD, 9860 MAX_IWARP_EQE_SYNC_OPCODE 9861 }; 9862 9863 /* iWARP EQE completion status */ 9864 enum iwarp_fw_return_code { 9865 IWARP_CONN_ERROR_TCP_CONNECT_INVALID_PACKET = 6, 9866 IWARP_CONN_ERROR_TCP_CONNECTION_RST, 9867 IWARP_CONN_ERROR_TCP_CONNECT_TIMEOUT, 9868 IWARP_CONN_ERROR_MPA_ERROR_REJECT, 9869 IWARP_CONN_ERROR_MPA_NOT_SUPPORTED_VER, 9870 IWARP_CONN_ERROR_MPA_RST, 9871 IWARP_CONN_ERROR_MPA_FIN, 9872 IWARP_CONN_ERROR_MPA_RTR_MISMATCH, 9873 IWARP_CONN_ERROR_MPA_INSUF_IRD, 9874 IWARP_CONN_ERROR_MPA_INVALID_PACKET, 9875 IWARP_CONN_ERROR_MPA_LOCAL_ERROR, 9876 IWARP_CONN_ERROR_MPA_TIMEOUT, 9877 IWARP_CONN_ERROR_MPA_TERMINATE, 9878 IWARP_QP_IN_ERROR_GOOD_CLOSE, 9879 IWARP_QP_IN_ERROR_BAD_CLOSE, 9880 IWARP_EXCEPTION_DETECTED_LLP_CLOSED, 9881 IWARP_EXCEPTION_DETECTED_LLP_RESET, 9882 IWARP_EXCEPTION_DETECTED_IRQ_FULL, 9883 IWARP_EXCEPTION_DETECTED_RQ_EMPTY, 9884 IWARP_EXCEPTION_DETECTED_SRQ_EMPTY, 9885 IWARP_EXCEPTION_DETECTED_SRQ_LIMIT, 9886 IWARP_EXCEPTION_DETECTED_LLP_TIMEOUT, 9887 IWARP_EXCEPTION_DETECTED_REMOTE_PROTECTION_ERROR, 9888 IWARP_EXCEPTION_DETECTED_CQ_OVERFLOW, 9889 IWARP_EXCEPTION_DETECTED_LOCAL_CATASTROPHIC, 9890 IWARP_EXCEPTION_DETECTED_LOCAL_ACCESS_ERROR, 9891 IWARP_EXCEPTION_DETECTED_REMOTE_OPERATION_ERROR, 9892 IWARP_EXCEPTION_DETECTED_TERMINATE_RECEIVED, 9893 MAX_IWARP_FW_RETURN_CODE 9894 }; 9895 9896 /* unaligned opaque data received from LL2 */ 9897 struct iwarp_init_func_params { 9898 u8 ll2_ooo_q_index; 9899 u8 reserved1[7]; 9900 }; 9901 9902 /* iwarp func init ramrod data */ 9903 struct iwarp_init_func_ramrod_data { 9904 struct rdma_init_func_ramrod_data rdma; 9905 struct tcp_init_params tcp; 9906 struct iwarp_init_func_params iwarp; 9907 }; 9908 9909 /* iWARP QP - possible states to transition to */ 9910 enum iwarp_modify_qp_new_state_type { 9911 IWARP_MODIFY_QP_STATE_CLOSING = 1, 9912 IWARP_MODIFY_QP_STATE_ERROR = 2, 9913 MAX_IWARP_MODIFY_QP_NEW_STATE_TYPE 9914 }; 9915 9916 /* iwarp modify qp responder ramrod data */ 9917 struct iwarp_modify_qp_ramrod_data { 9918 __le16 transition_to_state; 9919 __le16 flags; 9920 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1 9921 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 0 9922 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1 9923 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 1 9924 #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1 9925 #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 2 9926 #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_MASK 0x1 9927 #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_SHIFT 3 9928 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1 9929 #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 4 9930 #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK 0x1 9931 #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT 5 9932 #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_MASK 0x3FF 9933 #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_SHIFT 6 9934 __le16 physical_q0; 9935 __le16 physical_q1; 9936 __le32 reserved1[10]; 9937 }; 9938 9939 /* MPA params for Enhanced mode */ 9940 struct mpa_rq_params { 9941 __le32 ird; 9942 __le32 ord; 9943 }; 9944 9945 /* MPA host Address-Len for private data */ 9946 struct mpa_ulp_buffer { 9947 struct regpair addr; 9948 __le16 len; 9949 __le16 reserved[3]; 9950 }; 9951 9952 /* iWARP MPA offload params common to Basic and Enhanced modes */ 9953 struct mpa_outgoing_params { 9954 u8 crc_needed; 9955 u8 reject; 9956 u8 reserved[6]; 9957 struct mpa_rq_params out_rq; 9958 struct mpa_ulp_buffer outgoing_ulp_buffer; 9959 }; 9960 9961 /* iWARP MPA offload params passed by driver to FW in MPA Offload Request 9962 * Ramrod. 9963 */ 9964 struct iwarp_mpa_offload_ramrod_data { 9965 struct mpa_outgoing_params common; 9966 __le32 tcp_cid; 9967 u8 mode; 9968 u8 tcp_connect_side; 9969 u8 rtr_pref; 9970 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_MASK 0x7 9971 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_SHIFT 0 9972 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_MASK 0x1F 9973 #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_SHIFT 3 9974 u8 reserved2; 9975 struct mpa_ulp_buffer incoming_ulp_buffer; 9976 struct regpair async_eqe_output_buf; 9977 struct regpair handle_for_async; 9978 struct regpair shared_queue_addr; 9979 __le16 rcv_wnd; 9980 u8 stats_counter_id; 9981 u8 reserved3[13]; 9982 }; 9983 9984 /* iWARP TCP connection offload params passed by driver to FW */ 9985 struct iwarp_offload_params { 9986 struct mpa_ulp_buffer incoming_ulp_buffer; 9987 struct regpair async_eqe_output_buf; 9988 struct regpair handle_for_async; 9989 __le16 physical_q0; 9990 __le16 physical_q1; 9991 u8 stats_counter_id; 9992 u8 mpa_mode; 9993 u8 reserved[10]; 9994 }; 9995 9996 /* iWARP query QP output params */ 9997 struct iwarp_query_qp_output_params { 9998 __le32 flags; 9999 #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1 10000 #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0 10001 #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF 10002 #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_SHIFT 1 10003 u8 reserved1[4]; 10004 }; 10005 10006 /* iWARP query QP ramrod data */ 10007 struct iwarp_query_qp_ramrod_data { 10008 struct regpair output_params_addr; 10009 }; 10010 10011 /* iWARP Ramrod Command IDs */ 10012 enum iwarp_ramrod_cmd_id { 10013 IWARP_RAMROD_CMD_ID_TCP_OFFLOAD = 11, 10014 IWARP_RAMROD_CMD_ID_MPA_OFFLOAD, 10015 IWARP_RAMROD_CMD_ID_MPA_OFFLOAD_SEND_RTR, 10016 IWARP_RAMROD_CMD_ID_CREATE_QP, 10017 IWARP_RAMROD_CMD_ID_QUERY_QP, 10018 IWARP_RAMROD_CMD_ID_MODIFY_QP, 10019 IWARP_RAMROD_CMD_ID_DESTROY_QP, 10020 IWARP_RAMROD_CMD_ID_ABORT_TCP_OFFLOAD, 10021 MAX_IWARP_RAMROD_CMD_ID 10022 }; 10023 10024 /* Per PF iWARP retransmit path statistics */ 10025 struct iwarp_rxmit_stats_drv { 10026 struct regpair tx_go_to_slow_start_event_cnt; 10027 struct regpair tx_fast_retransmit_event_cnt; 10028 }; 10029 10030 /* iWARP and TCP connection offload params passed by driver to FW in iWARP 10031 * offload ramrod. 10032 */ 10033 struct iwarp_tcp_offload_ramrod_data { 10034 struct tcp_offload_params_opt2 tcp; 10035 struct iwarp_offload_params iwarp; 10036 }; 10037 10038 /* iWARP MPA negotiation types */ 10039 enum mpa_negotiation_mode { 10040 MPA_NEGOTIATION_TYPE_BASIC = 1, 10041 MPA_NEGOTIATION_TYPE_ENHANCED = 2, 10042 MAX_MPA_NEGOTIATION_MODE 10043 }; 10044 10045 /* iWARP MPA Enhanced mode RTR types */ 10046 enum mpa_rtr_type { 10047 MPA_RTR_TYPE_NONE = 0, 10048 MPA_RTR_TYPE_ZERO_SEND = 1, 10049 MPA_RTR_TYPE_ZERO_WRITE = 2, 10050 MPA_RTR_TYPE_ZERO_SEND_AND_WRITE = 3, 10051 MPA_RTR_TYPE_ZERO_READ = 4, 10052 MPA_RTR_TYPE_ZERO_SEND_AND_READ = 5, 10053 MPA_RTR_TYPE_ZERO_WRITE_AND_READ = 6, 10054 MPA_RTR_TYPE_ZERO_SEND_AND_WRITE_AND_READ = 7, 10055 MAX_MPA_RTR_TYPE 10056 }; 10057 10058 /* unaligned opaque data received from LL2 */ 10059 struct unaligned_opaque_data { 10060 __le16 first_mpa_offset; 10061 u8 tcp_payload_offset; 10062 u8 flags; 10063 #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_MASK 0x1 10064 #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_SHIFT 0 10065 #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_MASK 0x1 10066 #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_SHIFT 1 10067 #define UNALIGNED_OPAQUE_DATA_RESERVED_MASK 0x3F 10068 #define UNALIGNED_OPAQUE_DATA_RESERVED_SHIFT 2 10069 __le32 cid; 10070 }; 10071 10072 struct e4_mstorm_iwarp_conn_ag_ctx { 10073 u8 reserved; 10074 u8 state; 10075 u8 flags0; 10076 #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 10077 #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 10078 #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1 10079 #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1 10080 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_MASK 0x3 10081 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_SHIFT 2 10082 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3 10083 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4 10084 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3 10085 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6 10086 u8 flags1; 10087 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_MASK 0x1 10088 #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_SHIFT 0 10089 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1 10090 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1 10091 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1 10092 #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2 10093 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1 10094 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3 10095 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1 10096 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4 10097 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1 10098 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5 10099 #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_MASK 0x1 10100 #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_SHIFT 6 10101 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1 10102 #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7 10103 __le16 rcq_cons; 10104 __le16 rcq_cons_th; 10105 __le32 reg0; 10106 __le32 reg1; 10107 }; 10108 10109 struct e4_ustorm_iwarp_conn_ag_ctx { 10110 u8 reserved; 10111 u8 byte1; 10112 u8 flags0; 10113 #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 10114 #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 10115 #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1 10116 #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1 10117 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3 10118 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2 10119 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3 10120 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4 10121 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3 10122 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6 10123 u8 flags1; 10124 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_MASK 0x3 10125 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_SHIFT 0 10126 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3 10127 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2 10128 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3 10129 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4 10130 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3 10131 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 6 10132 u8 flags2; 10133 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1 10134 #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0 10135 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1 10136 #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1 10137 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1 10138 #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2 10139 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_MASK 0x1 10140 #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_SHIFT 3 10141 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1 10142 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4 10143 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1 10144 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5 10145 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1 10146 #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 6 10147 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_MASK 0x1 10148 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_SHIFT 7 10149 u8 flags3; 10150 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_MASK 0x1 10151 #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_SHIFT 0 10152 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1 10153 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1 10154 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1 10155 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2 10156 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1 10157 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3 10158 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1 10159 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4 10160 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1 10161 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 5 10162 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1 10163 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6 10164 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1 10165 #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7 10166 u8 byte2; 10167 u8 byte3; 10168 __le16 word0; 10169 __le16 word1; 10170 __le32 cq_cons; 10171 __le32 cq_se_prod; 10172 __le32 cq_prod; 10173 __le32 reg3; 10174 __le16 word2; 10175 __le16 word3; 10176 }; 10177 10178 struct e4_ystorm_iwarp_conn_ag_ctx { 10179 u8 byte0; 10180 u8 byte1; 10181 u8 flags0; 10182 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK 0x1 10183 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT 0 10184 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1 10185 #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1 10186 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3 10187 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2 10188 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3 10189 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4 10190 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3 10191 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6 10192 u8 flags1; 10193 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1 10194 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0 10195 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1 10196 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1 10197 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1 10198 #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2 10199 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1 10200 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3 10201 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1 10202 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4 10203 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1 10204 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5 10205 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1 10206 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 6 10207 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1 10208 #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7 10209 u8 byte2; 10210 u8 byte3; 10211 __le16 word0; 10212 __le32 reg0; 10213 __le32 reg1; 10214 __le16 word1; 10215 __le16 word2; 10216 __le16 word3; 10217 __le16 word4; 10218 __le32 reg2; 10219 __le32 reg3; 10220 }; 10221 10222 /* The fcoe storm context of Ystorm */ 10223 struct ystorm_fcoe_conn_st_ctx { 10224 u8 func_mode; 10225 u8 cos; 10226 u8 conf_version; 10227 u8 eth_hdr_size; 10228 __le16 stat_ram_addr; 10229 __le16 mtu; 10230 __le16 max_fc_payload_len; 10231 __le16 tx_max_fc_pay_len; 10232 u8 fcp_cmd_size; 10233 u8 fcp_rsp_size; 10234 __le16 mss; 10235 struct regpair reserved; 10236 __le16 min_frame_size; 10237 u8 protection_info_flags; 10238 #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1 10239 #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 0 10240 #define YSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1 10241 #define YSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 1 10242 #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_MASK 0x3F 10243 #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_SHIFT 2 10244 u8 dst_protection_per_mss; 10245 u8 src_protection_per_mss; 10246 u8 ptu_log_page_size; 10247 u8 flags; 10248 #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1 10249 #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 0 10250 #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1 10251 #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 1 10252 #define YSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x3F 10253 #define YSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 2 10254 u8 fcp_xfer_size; 10255 }; 10256 10257 /* FCoE 16-bits vlan structure */ 10258 struct fcoe_vlan_fields { 10259 __le16 fields; 10260 #define FCOE_VLAN_FIELDS_VID_MASK 0xFFF 10261 #define FCOE_VLAN_FIELDS_VID_SHIFT 0 10262 #define FCOE_VLAN_FIELDS_CLI_MASK 0x1 10263 #define FCOE_VLAN_FIELDS_CLI_SHIFT 12 10264 #define FCOE_VLAN_FIELDS_PRI_MASK 0x7 10265 #define FCOE_VLAN_FIELDS_PRI_SHIFT 13 10266 }; 10267 10268 /* FCoE 16-bits vlan union */ 10269 union fcoe_vlan_field_union { 10270 struct fcoe_vlan_fields fields; 10271 __le16 val; 10272 }; 10273 10274 /* FCoE 16-bits vlan, vif union */ 10275 union fcoe_vlan_vif_field_union { 10276 union fcoe_vlan_field_union vlan; 10277 __le16 vif; 10278 }; 10279 10280 /* Ethernet context section */ 10281 struct pstorm_fcoe_eth_context_section { 10282 u8 remote_addr_3; 10283 u8 remote_addr_2; 10284 u8 remote_addr_1; 10285 u8 remote_addr_0; 10286 u8 local_addr_1; 10287 u8 local_addr_0; 10288 u8 remote_addr_5; 10289 u8 remote_addr_4; 10290 u8 local_addr_5; 10291 u8 local_addr_4; 10292 u8 local_addr_3; 10293 u8 local_addr_2; 10294 union fcoe_vlan_vif_field_union vif_outer_vlan; 10295 __le16 vif_outer_eth_type; 10296 union fcoe_vlan_vif_field_union inner_vlan; 10297 __le16 inner_eth_type; 10298 }; 10299 10300 /* The fcoe storm context of Pstorm */ 10301 struct pstorm_fcoe_conn_st_ctx { 10302 u8 func_mode; 10303 u8 cos; 10304 u8 conf_version; 10305 u8 rsrv; 10306 __le16 stat_ram_addr; 10307 __le16 mss; 10308 struct regpair abts_cleanup_addr; 10309 struct pstorm_fcoe_eth_context_section eth; 10310 u8 sid_2; 10311 u8 sid_1; 10312 u8 sid_0; 10313 u8 flags; 10314 #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_MASK 0x1 10315 #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_SHIFT 0 10316 #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_MASK 0x1 10317 #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_SHIFT 1 10318 #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1 10319 #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 2 10320 #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1 10321 #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 3 10322 #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_MASK 0x1 10323 #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_SHIFT 4 10324 #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x7 10325 #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 5 10326 u8 did_2; 10327 u8 did_1; 10328 u8 did_0; 10329 u8 src_mac_index; 10330 __le16 rec_rr_tov_val; 10331 u8 q_relative_offset; 10332 u8 reserved1; 10333 }; 10334 10335 /* The fcoe storm context of Xstorm */ 10336 struct xstorm_fcoe_conn_st_ctx { 10337 u8 func_mode; 10338 u8 src_mac_index; 10339 u8 conf_version; 10340 u8 cached_wqes_avail; 10341 __le16 stat_ram_addr; 10342 u8 flags; 10343 #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_MASK 0x1 10344 #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_SHIFT 0 10345 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1 10346 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 1 10347 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_MASK 0x1 10348 #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_SHIFT 2 10349 #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_MASK 0x3 10350 #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_SHIFT 3 10351 #define XSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x7 10352 #define XSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 5 10353 u8 cached_wqes_offset; 10354 u8 reserved2; 10355 u8 eth_hdr_size; 10356 u8 seq_id; 10357 u8 max_conc_seqs; 10358 __le16 num_pages_in_pbl; 10359 __le16 reserved; 10360 struct regpair sq_pbl_addr; 10361 struct regpair sq_curr_page_addr; 10362 struct regpair sq_next_page_addr; 10363 struct regpair xferq_pbl_addr; 10364 struct regpair xferq_curr_page_addr; 10365 struct regpair xferq_next_page_addr; 10366 struct regpair respq_pbl_addr; 10367 struct regpair respq_curr_page_addr; 10368 struct regpair respq_next_page_addr; 10369 __le16 mtu; 10370 __le16 tx_max_fc_pay_len; 10371 __le16 max_fc_payload_len; 10372 __le16 min_frame_size; 10373 __le16 sq_pbl_next_index; 10374 __le16 respq_pbl_next_index; 10375 u8 fcp_cmd_byte_credit; 10376 u8 fcp_rsp_byte_credit; 10377 __le16 protection_info; 10378 #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_MASK 0x1 10379 #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_SHIFT 0 10380 #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1 10381 #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 1 10382 #define XSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1 10383 #define XSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 2 10384 #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_MASK 0x1 10385 #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_SHIFT 3 10386 #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_MASK 0xF 10387 #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_SHIFT 4 10388 #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_MASK 0xFF 10389 #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_SHIFT 8 10390 __le16 xferq_pbl_next_index; 10391 __le16 page_size; 10392 u8 mid_seq; 10393 u8 fcp_xfer_byte_credit; 10394 u8 reserved1[2]; 10395 struct fcoe_wqe cached_wqes[16]; 10396 }; 10397 10398 struct e4_xstorm_fcoe_conn_ag_ctx { 10399 u8 reserved0; 10400 u8 state; 10401 u8 flags0; 10402 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 10403 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 10404 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_MASK 0x1 10405 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_SHIFT 1 10406 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_MASK 0x1 10407 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_SHIFT 2 10408 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 10409 #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 10410 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_MASK 0x1 10411 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_SHIFT 4 10412 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_MASK 0x1 10413 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_SHIFT 5 10414 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_MASK 0x1 10415 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_SHIFT 6 10416 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_MASK 0x1 10417 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_SHIFT 7 10418 u8 flags1; 10419 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_MASK 0x1 10420 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_SHIFT 0 10421 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_MASK 0x1 10422 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_SHIFT 1 10423 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_MASK 0x1 10424 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_SHIFT 2 10425 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_MASK 0x1 10426 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_SHIFT 3 10427 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_MASK 0x1 10428 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_SHIFT 4 10429 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_MASK 0x1 10430 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_SHIFT 5 10431 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_MASK 0x1 10432 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_SHIFT 6 10433 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_MASK 0x1 10434 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_SHIFT 7 10435 u8 flags2; 10436 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3 10437 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 0 10438 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3 10439 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 2 10440 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3 10441 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 4 10442 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3 10443 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 6 10444 u8 flags3; 10445 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3 10446 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 0 10447 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3 10448 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 2 10449 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3 10450 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 4 10451 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3 10452 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 6 10453 u8 flags4; 10454 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3 10455 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 0 10456 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3 10457 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 2 10458 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3 10459 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 4 10460 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_MASK 0x3 10461 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_SHIFT 6 10462 u8 flags5; 10463 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_MASK 0x3 10464 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_SHIFT 0 10465 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_MASK 0x3 10466 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_SHIFT 2 10467 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_MASK 0x3 10468 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_SHIFT 4 10469 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_MASK 0x3 10470 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_SHIFT 6 10471 u8 flags6; 10472 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_MASK 0x3 10473 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_SHIFT 0 10474 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_MASK 0x3 10475 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_SHIFT 2 10476 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_MASK 0x3 10477 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_SHIFT 4 10478 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_MASK 0x3 10479 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_SHIFT 6 10480 u8 flags7; 10481 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 10482 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 10483 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_MASK 0x3 10484 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_SHIFT 2 10485 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_MASK 0x3 10486 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_SHIFT 4 10487 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1 10488 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 6 10489 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1 10490 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 7 10491 u8 flags8; 10492 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1 10493 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 0 10494 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1 10495 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 1 10496 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1 10497 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 2 10498 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1 10499 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 3 10500 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1 10501 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 4 10502 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1 10503 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 5 10504 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1 10505 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 6 10506 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1 10507 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 7 10508 u8 flags9; 10509 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1 10510 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 0 10511 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_MASK 0x1 10512 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_SHIFT 1 10513 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_MASK 0x1 10514 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_SHIFT 2 10515 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_MASK 0x1 10516 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_SHIFT 3 10517 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_MASK 0x1 10518 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_SHIFT 4 10519 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_MASK 0x1 10520 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_SHIFT 5 10521 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_MASK 0x1 10522 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_SHIFT 6 10523 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_MASK 0x1 10524 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_SHIFT 7 10525 u8 flags10; 10526 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_MASK 0x1 10527 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_SHIFT 0 10528 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 10529 #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_SHIFT 1 10530 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 10531 #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2 10532 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_MASK 0x1 10533 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_SHIFT 3 10534 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 10535 #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 10536 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_MASK 0x1 10537 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_SHIFT 5 10538 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_MASK 0x1 10539 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_SHIFT 6 10540 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_MASK 0x1 10541 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_SHIFT 7 10542 u8 flags11; 10543 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_MASK 0x1 10544 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_SHIFT 0 10545 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_MASK 0x1 10546 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_SHIFT 1 10547 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_MASK 0x1 10548 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_SHIFT 2 10549 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1 10550 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 3 10551 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1 10552 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 4 10553 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1 10554 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 5 10555 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 10556 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 10557 #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_MASK 0x1 10558 #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_SHIFT 7 10559 u8 flags12; 10560 #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_MASK 0x1 10561 #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_SHIFT 0 10562 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_MASK 0x1 10563 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_SHIFT 1 10564 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 10565 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 10566 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 10567 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 10568 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_MASK 0x1 10569 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_SHIFT 4 10570 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_MASK 0x1 10571 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_SHIFT 5 10572 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_MASK 0x1 10573 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_SHIFT 6 10574 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_MASK 0x1 10575 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_SHIFT 7 10576 u8 flags13; 10577 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_MASK 0x1 10578 #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_SHIFT 0 10579 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_MASK 0x1 10580 #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_SHIFT 1 10581 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 10582 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 10583 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 10584 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 10585 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 10586 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 10587 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 10588 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 10589 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 10590 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 10591 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 10592 #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 10593 u8 flags14; 10594 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_MASK 0x1 10595 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_SHIFT 0 10596 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_MASK 0x1 10597 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_SHIFT 1 10598 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_MASK 0x1 10599 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_SHIFT 2 10600 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_MASK 0x1 10601 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_SHIFT 3 10602 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_MASK 0x1 10603 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_SHIFT 4 10604 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_MASK 0x1 10605 #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_SHIFT 5 10606 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_MASK 0x3 10607 #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_SHIFT 6 10608 u8 byte2; 10609 __le16 physical_q0; 10610 __le16 word1; 10611 __le16 word2; 10612 __le16 sq_cons; 10613 __le16 sq_prod; 10614 __le16 xferq_prod; 10615 __le16 xferq_cons; 10616 u8 byte3; 10617 u8 byte4; 10618 u8 byte5; 10619 u8 byte6; 10620 __le32 remain_io; 10621 __le32 reg1; 10622 __le32 reg2; 10623 __le32 reg3; 10624 __le32 reg4; 10625 __le32 reg5; 10626 __le32 reg6; 10627 __le16 respq_prod; 10628 __le16 respq_cons; 10629 __le16 word9; 10630 __le16 word10; 10631 __le32 reg7; 10632 __le32 reg8; 10633 }; 10634 10635 /* The fcoe storm context of Ustorm */ 10636 struct ustorm_fcoe_conn_st_ctx { 10637 struct regpair respq_pbl_addr; 10638 __le16 num_pages_in_pbl; 10639 u8 ptu_log_page_size; 10640 u8 log_page_size; 10641 __le16 respq_prod; 10642 u8 reserved[2]; 10643 }; 10644 10645 struct e4_tstorm_fcoe_conn_ag_ctx { 10646 u8 reserved0; 10647 u8 state; 10648 u8 flags0; 10649 #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 10650 #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 10651 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1 10652 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1 10653 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_MASK 0x1 10654 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_SHIFT 2 10655 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_MASK 0x1 10656 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_SHIFT 3 10657 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_MASK 0x1 10658 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_SHIFT 4 10659 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_MASK 0x1 10660 #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_SHIFT 5 10661 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_MASK 0x3 10662 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_SHIFT 6 10663 u8 flags1; 10664 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3 10665 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 0 10666 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3 10667 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 2 10668 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3 10669 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4 10670 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3 10671 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 6 10672 u8 flags2; 10673 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3 10674 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 0 10675 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3 10676 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 2 10677 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3 10678 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 4 10679 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3 10680 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 6 10681 u8 flags3; 10682 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3 10683 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 0 10684 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3 10685 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 2 10686 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_MASK 0x1 10687 #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_SHIFT 4 10688 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1 10689 #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5 10690 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1 10691 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 6 10692 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1 10693 #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7 10694 u8 flags4; 10695 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1 10696 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 0 10697 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1 10698 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 1 10699 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1 10700 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 2 10701 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1 10702 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 3 10703 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1 10704 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 4 10705 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1 10706 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 5 10707 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1 10708 #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 6 10709 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1 10710 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7 10711 u8 flags5; 10712 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1 10713 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0 10714 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1 10715 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1 10716 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1 10717 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2 10718 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1 10719 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3 10720 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1 10721 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4 10722 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1 10723 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5 10724 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1 10725 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6 10726 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1 10727 #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7 10728 __le32 reg0; 10729 __le32 reg1; 10730 }; 10731 10732 struct e4_ustorm_fcoe_conn_ag_ctx { 10733 u8 byte0; 10734 u8 byte1; 10735 u8 flags0; 10736 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1 10737 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0 10738 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1 10739 #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1 10740 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3 10741 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2 10742 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3 10743 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4 10744 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3 10745 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6 10746 u8 flags1; 10747 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3 10748 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 0 10749 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3 10750 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 2 10751 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3 10752 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 4 10753 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3 10754 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 6 10755 u8 flags2; 10756 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1 10757 #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0 10758 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1 10759 #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1 10760 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1 10761 #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2 10762 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1 10763 #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 3 10764 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1 10765 #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 4 10766 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1 10767 #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 5 10768 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1 10769 #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 6 10770 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1 10771 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7 10772 u8 flags3; 10773 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1 10774 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0 10775 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1 10776 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1 10777 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1 10778 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2 10779 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1 10780 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3 10781 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1 10782 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4 10783 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1 10784 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5 10785 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1 10786 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6 10787 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1 10788 #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7 10789 u8 byte2; 10790 u8 byte3; 10791 __le16 word0; 10792 __le16 word1; 10793 __le32 reg0; 10794 __le32 reg1; 10795 __le32 reg2; 10796 __le32 reg3; 10797 __le16 word2; 10798 __le16 word3; 10799 }; 10800 10801 /* The fcoe storm context of Tstorm */ 10802 struct tstorm_fcoe_conn_st_ctx { 10803 __le16 stat_ram_addr; 10804 __le16 rx_max_fc_payload_len; 10805 __le16 e_d_tov_val; 10806 u8 flags; 10807 #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_MASK 0x1 10808 #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_SHIFT 0 10809 #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_MASK 0x1 10810 #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_SHIFT 1 10811 #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_MASK 0x3F 10812 #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_SHIFT 2 10813 u8 timers_cleanup_invocation_cnt; 10814 __le32 reserved1[2]; 10815 __le32 dst_mac_address_bytes_0_to_3; 10816 __le16 dst_mac_address_bytes_4_to_5; 10817 __le16 ramrod_echo; 10818 u8 flags1; 10819 #define TSTORM_FCOE_CONN_ST_CTX_MODE_MASK 0x3 10820 #define TSTORM_FCOE_CONN_ST_CTX_MODE_SHIFT 0 10821 #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x3F 10822 #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 2 10823 u8 cq_relative_offset; 10824 u8 cmdq_relative_offset; 10825 u8 bdq_resource_id; 10826 u8 reserved0[4]; 10827 }; 10828 10829 struct e4_mstorm_fcoe_conn_ag_ctx { 10830 u8 byte0; 10831 u8 byte1; 10832 u8 flags0; 10833 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1 10834 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0 10835 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1 10836 #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1 10837 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3 10838 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2 10839 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3 10840 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4 10841 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3 10842 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6 10843 u8 flags1; 10844 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1 10845 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0 10846 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1 10847 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1 10848 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1 10849 #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2 10850 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1 10851 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3 10852 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1 10853 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4 10854 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1 10855 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5 10856 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1 10857 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6 10858 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1 10859 #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7 10860 __le16 word0; 10861 __le16 word1; 10862 __le32 reg0; 10863 __le32 reg1; 10864 }; 10865 10866 /* Fast path part of the fcoe storm context of Mstorm */ 10867 struct fcoe_mstorm_fcoe_conn_st_ctx_fp { 10868 __le16 xfer_prod; 10869 u8 num_cqs; 10870 u8 reserved1; 10871 u8 protection_info; 10872 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_MASK 0x1 10873 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_SHIFT 0 10874 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_MASK 0x1 10875 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_SHIFT 1 10876 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_MASK 0x3F 10877 #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_SHIFT 2 10878 u8 q_relative_offset; 10879 u8 reserved2[2]; 10880 }; 10881 10882 /* Non fast path part of the fcoe storm context of Mstorm */ 10883 struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp { 10884 __le16 conn_id; 10885 __le16 stat_ram_addr; 10886 __le16 num_pages_in_pbl; 10887 u8 ptu_log_page_size; 10888 u8 log_page_size; 10889 __le16 unsolicited_cq_count; 10890 __le16 cmdq_count; 10891 u8 bdq_resource_id; 10892 u8 reserved0[3]; 10893 struct regpair xferq_pbl_addr; 10894 struct regpair reserved1; 10895 struct regpair reserved2[3]; 10896 }; 10897 10898 /* The fcoe storm context of Mstorm */ 10899 struct mstorm_fcoe_conn_st_ctx { 10900 struct fcoe_mstorm_fcoe_conn_st_ctx_fp fp; 10901 struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp non_fp; 10902 }; 10903 10904 /* fcoe connection context */ 10905 struct e4_fcoe_conn_context { 10906 struct ystorm_fcoe_conn_st_ctx ystorm_st_context; 10907 struct pstorm_fcoe_conn_st_ctx pstorm_st_context; 10908 struct regpair pstorm_st_padding[2]; 10909 struct xstorm_fcoe_conn_st_ctx xstorm_st_context; 10910 struct e4_xstorm_fcoe_conn_ag_ctx xstorm_ag_context; 10911 struct regpair xstorm_ag_padding[6]; 10912 struct ustorm_fcoe_conn_st_ctx ustorm_st_context; 10913 struct regpair ustorm_st_padding[2]; 10914 struct e4_tstorm_fcoe_conn_ag_ctx tstorm_ag_context; 10915 struct regpair tstorm_ag_padding[2]; 10916 struct timers_context timer_context; 10917 struct e4_ustorm_fcoe_conn_ag_ctx ustorm_ag_context; 10918 struct tstorm_fcoe_conn_st_ctx tstorm_st_context; 10919 struct e4_mstorm_fcoe_conn_ag_ctx mstorm_ag_context; 10920 struct mstorm_fcoe_conn_st_ctx mstorm_st_context; 10921 }; 10922 10923 /* FCoE connection offload params passed by driver to FW in FCoE offload 10924 * ramrod. 10925 */ 10926 struct fcoe_conn_offload_ramrod_params { 10927 struct fcoe_conn_offload_ramrod_data offload_ramrod_data; 10928 }; 10929 10930 /* FCoE connection terminate params passed by driver to FW in FCoE terminate 10931 * conn ramrod. 10932 */ 10933 struct fcoe_conn_terminate_ramrod_params { 10934 struct fcoe_conn_terminate_ramrod_data terminate_ramrod_data; 10935 }; 10936 10937 /* FCoE event type */ 10938 enum fcoe_event_type { 10939 FCOE_EVENT_INIT_FUNC, 10940 FCOE_EVENT_DESTROY_FUNC, 10941 FCOE_EVENT_STAT_FUNC, 10942 FCOE_EVENT_OFFLOAD_CONN, 10943 FCOE_EVENT_TERMINATE_CONN, 10944 FCOE_EVENT_ERROR, 10945 MAX_FCOE_EVENT_TYPE 10946 }; 10947 10948 /* FCoE init params passed by driver to FW in FCoE init ramrod */ 10949 struct fcoe_init_ramrod_params { 10950 struct fcoe_init_func_ramrod_data init_ramrod_data; 10951 }; 10952 10953 /* FCoE ramrod Command IDs */ 10954 enum fcoe_ramrod_cmd_id { 10955 FCOE_RAMROD_CMD_ID_INIT_FUNC, 10956 FCOE_RAMROD_CMD_ID_DESTROY_FUNC, 10957 FCOE_RAMROD_CMD_ID_STAT_FUNC, 10958 FCOE_RAMROD_CMD_ID_OFFLOAD_CONN, 10959 FCOE_RAMROD_CMD_ID_TERMINATE_CONN, 10960 MAX_FCOE_RAMROD_CMD_ID 10961 }; 10962 10963 /* FCoE statistics params buffer passed by driver to FW in FCoE statistics 10964 * ramrod. 10965 */ 10966 struct fcoe_stat_ramrod_params { 10967 struct fcoe_stat_ramrod_data stat_ramrod_data; 10968 }; 10969 10970 struct e4_ystorm_fcoe_conn_ag_ctx { 10971 u8 byte0; 10972 u8 byte1; 10973 u8 flags0; 10974 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1 10975 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0 10976 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1 10977 #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1 10978 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3 10979 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2 10980 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3 10981 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4 10982 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3 10983 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6 10984 u8 flags1; 10985 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1 10986 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0 10987 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1 10988 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1 10989 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1 10990 #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2 10991 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1 10992 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3 10993 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1 10994 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4 10995 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1 10996 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5 10997 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1 10998 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6 10999 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1 11000 #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7 11001 u8 byte2; 11002 u8 byte3; 11003 __le16 word0; 11004 __le32 reg0; 11005 __le32 reg1; 11006 __le16 word1; 11007 __le16 word2; 11008 __le16 word3; 11009 __le16 word4; 11010 __le32 reg2; 11011 __le32 reg3; 11012 }; 11013 11014 /* The iscsi storm connection context of Ystorm */ 11015 struct ystorm_iscsi_conn_st_ctx { 11016 __le32 reserved[8]; 11017 }; 11018 11019 /* Combined iSCSI and TCP storm connection of Pstorm */ 11020 struct pstorm_iscsi_tcp_conn_st_ctx { 11021 __le32 tcp[32]; 11022 __le32 iscsi[4]; 11023 }; 11024 11025 /* The combined tcp and iscsi storm context of Xstorm */ 11026 struct xstorm_iscsi_tcp_conn_st_ctx { 11027 __le32 reserved_tcp[4]; 11028 __le32 reserved_iscsi[44]; 11029 }; 11030 11031 struct e4_xstorm_iscsi_conn_ag_ctx { 11032 u8 cdu_validation; 11033 u8 state; 11034 u8 flags0; 11035 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 11036 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 11037 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1 11038 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1 11039 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_MASK 0x1 11040 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_SHIFT 2 11041 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1 11042 #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3 11043 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1 11044 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4 11045 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_MASK 0x1 11046 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_SHIFT 5 11047 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_MASK 0x1 11048 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_SHIFT 6 11049 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_MASK 0x1 11050 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_SHIFT 7 11051 u8 flags1; 11052 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_MASK 0x1 11053 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_SHIFT 0 11054 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_MASK 0x1 11055 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_SHIFT 1 11056 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_MASK 0x1 11057 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_SHIFT 2 11058 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_MASK 0x1 11059 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_SHIFT 3 11060 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_MASK 0x1 11061 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_SHIFT 4 11062 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_MASK 0x1 11063 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_SHIFT 5 11064 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_MASK 0x1 11065 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_SHIFT 6 11066 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_MASK 0x1 11067 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_SHIFT 7 11068 u8 flags2; 11069 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3 11070 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 0 11071 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3 11072 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 2 11073 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3 11074 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 4 11075 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3 11076 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6 11077 u8 flags3; 11078 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3 11079 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 0 11080 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3 11081 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 2 11082 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3 11083 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 4 11084 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3 11085 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 6 11086 u8 flags4; 11087 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3 11088 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 0 11089 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_MASK 0x3 11090 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_SHIFT 2 11091 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_MASK 0x3 11092 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT 4 11093 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_MASK 0x3 11094 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_SHIFT 6 11095 u8 flags5; 11096 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_MASK 0x3 11097 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_SHIFT 0 11098 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_MASK 0x3 11099 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_SHIFT 2 11100 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_MASK 0x3 11101 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_SHIFT 4 11102 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_MASK 0x3 11103 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_SHIFT 6 11104 u8 flags6; 11105 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_MASK 0x3 11106 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_SHIFT 0 11107 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_MASK 0x3 11108 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_SHIFT 2 11109 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_MASK 0x3 11110 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_SHIFT 4 11111 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_MASK 0x3 11112 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_SHIFT 6 11113 u8 flags7; 11114 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_MASK 0x3 11115 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_SHIFT 0 11116 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_MASK 0x3 11117 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_SHIFT 2 11118 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_MASK 0x3 11119 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_SHIFT 4 11120 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1 11121 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 6 11122 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1 11123 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 7 11124 u8 flags8; 11125 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1 11126 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 0 11127 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 11128 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1 11129 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1 11130 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 2 11131 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1 11132 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 3 11133 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1 11134 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 4 11135 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1 11136 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 5 11137 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1 11138 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 6 11139 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_MASK 0x1 11140 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_SHIFT 7 11141 u8 flags9; 11142 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK 0x1 11143 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT 0 11144 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_MASK 0x1 11145 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_SHIFT 1 11146 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_MASK 0x1 11147 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_SHIFT 2 11148 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_MASK 0x1 11149 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_SHIFT 3 11150 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_MASK 0x1 11151 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_SHIFT 4 11152 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_MASK 0x1 11153 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_SHIFT 5 11154 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_MASK 0x1 11155 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_SHIFT 6 11156 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_MASK 0x1 11157 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_SHIFT 7 11158 u8 flags10; 11159 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_MASK 0x1 11160 #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_SHIFT 0 11161 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1 11162 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1 11163 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_MASK 0x1 11164 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_SHIFT 2 11165 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_MASK 0x1 11166 #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_SHIFT 3 11167 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 11168 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4 11169 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_MASK 0x1 11170 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_SHIFT 5 11171 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1 11172 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 6 11173 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_MASK 0x1 11174 #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_SHIFT 7 11175 u8 flags11; 11176 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1 11177 #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0 11178 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1 11179 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 1 11180 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_MASK 0x1 11181 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_SHIFT 2 11182 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1 11183 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 3 11184 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1 11185 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 4 11186 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1 11187 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 5 11188 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 11189 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_SHIFT 6 11190 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_MASK 0x1 11191 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_SHIFT 7 11192 u8 flags12; 11193 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_MASK 0x1 11194 #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_SHIFT 0 11195 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_MASK 0x1 11196 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_SHIFT 1 11197 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 11198 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_SHIFT 2 11199 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 11200 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_SHIFT 3 11201 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_MASK 0x1 11202 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_SHIFT 4 11203 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_MASK 0x1 11204 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_SHIFT 5 11205 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_MASK 0x1 11206 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_SHIFT 6 11207 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_MASK 0x1 11208 #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_SHIFT 7 11209 u8 flags13; 11210 #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_MASK 0x1 11211 #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_SHIFT 0 11212 #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_MASK 0x1 11213 #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_SHIFT 1 11214 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 11215 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_SHIFT 2 11216 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 11217 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_SHIFT 3 11218 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 11219 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_SHIFT 4 11220 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 11221 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_SHIFT 5 11222 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 11223 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_SHIFT 6 11224 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 11225 #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_SHIFT 7 11226 u8 flags14; 11227 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_MASK 0x1 11228 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_SHIFT 0 11229 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_MASK 0x1 11230 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_SHIFT 1 11231 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_MASK 0x1 11232 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_SHIFT 2 11233 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_MASK 0x1 11234 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_SHIFT 3 11235 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_MASK 0x1 11236 #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_SHIFT 4 11237 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_MASK 0x1 11238 #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_SHIFT 5 11239 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_MASK 0x3 11240 #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_SHIFT 6 11241 u8 byte2; 11242 __le16 physical_q0; 11243 __le16 physical_q1; 11244 __le16 dummy_dorq_var; 11245 __le16 sq_cons; 11246 __le16 sq_prod; 11247 __le16 word5; 11248 __le16 slow_io_total_data_tx_update; 11249 u8 byte3; 11250 u8 byte4; 11251 u8 byte5; 11252 u8 byte6; 11253 __le32 reg0; 11254 __le32 reg1; 11255 __le32 reg2; 11256 __le32 more_to_send_seq; 11257 __le32 reg4; 11258 __le32 reg5; 11259 __le32 hq_scan_next_relevant_ack; 11260 __le16 r2tq_prod; 11261 __le16 r2tq_cons; 11262 __le16 hq_prod; 11263 __le16 hq_cons; 11264 __le32 remain_seq; 11265 __le32 bytes_to_next_pdu; 11266 __le32 hq_tcp_seq; 11267 u8 byte7; 11268 u8 byte8; 11269 u8 byte9; 11270 u8 byte10; 11271 u8 byte11; 11272 u8 byte12; 11273 u8 byte13; 11274 u8 byte14; 11275 u8 byte15; 11276 u8 e5_reserved; 11277 __le16 word11; 11278 __le32 reg10; 11279 __le32 reg11; 11280 __le32 exp_stat_sn; 11281 __le32 ongoing_fast_rxmit_seq; 11282 __le32 reg14; 11283 __le32 reg15; 11284 __le32 reg16; 11285 __le32 reg17; 11286 }; 11287 11288 struct e4_tstorm_iscsi_conn_ag_ctx { 11289 u8 reserved0; 11290 u8 state; 11291 u8 flags0; 11292 #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1 11293 #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0 11294 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1 11295 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1 11296 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_MASK 0x1 11297 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_SHIFT 2 11298 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_MASK 0x1 11299 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_SHIFT 3 11300 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1 11301 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4 11302 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_MASK 0x1 11303 #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_SHIFT 5 11304 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3 11305 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 6 11306 u8 flags1; 11307 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_MASK 0x3 11308 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_SHIFT 0 11309 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_MASK 0x3 11310 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_SHIFT 2 11311 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3 11312 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4 11313 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3 11314 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 6 11315 u8 flags2; 11316 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3 11317 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 0 11318 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3 11319 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 2 11320 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3 11321 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 4 11322 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3 11323 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 6 11324 u8 flags3; 11325 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 11326 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_SHIFT 0 11327 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_MASK 0x3 11328 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_SHIFT 2 11329 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1 11330 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 4 11331 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_MASK 0x1 11332 #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_SHIFT 5 11333 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_MASK 0x1 11334 #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_SHIFT 6 11335 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 11336 #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7 11337 u8 flags4; 11338 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1 11339 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 0 11340 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1 11341 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 1 11342 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1 11343 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 2 11344 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1 11345 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 3 11346 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1 11347 #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 4 11348 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 11349 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 5 11350 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_EN_MASK 0x1 11351 #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_OOO_ISLES_CF_EN_SHIFT 6 11352 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1 11353 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7 11354 u8 flags5; 11355 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1 11356 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0 11357 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1 11358 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1 11359 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1 11360 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2 11361 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1 11362 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3 11363 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1 11364 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4 11365 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1 11366 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5 11367 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1 11368 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6 11369 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1 11370 #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7 11371 __le32 reg0; 11372 __le32 reg1; 11373 __le32 rx_tcp_checksum_err_cnt; 11374 __le32 reg3; 11375 __le32 reg4; 11376 __le32 reg5; 11377 __le32 reg6; 11378 __le32 reg7; 11379 __le32 reg8; 11380 u8 cid_offload_cnt; 11381 u8 byte3; 11382 __le16 word0; 11383 }; 11384 11385 struct e4_ustorm_iscsi_conn_ag_ctx { 11386 u8 byte0; 11387 u8 byte1; 11388 u8 flags0; 11389 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1 11390 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0 11391 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1 11392 #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1 11393 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3 11394 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2 11395 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3 11396 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4 11397 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3 11398 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6 11399 u8 flags1; 11400 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_MASK 0x3 11401 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT 0 11402 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3 11403 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 2 11404 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3 11405 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 4 11406 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3 11407 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 6 11408 u8 flags2; 11409 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1 11410 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0 11411 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1 11412 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1 11413 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1 11414 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2 11415 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK 0x1 11416 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT 3 11417 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1 11418 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 4 11419 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1 11420 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 5 11421 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1 11422 #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 6 11423 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1 11424 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7 11425 u8 flags3; 11426 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1 11427 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0 11428 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1 11429 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1 11430 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1 11431 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2 11432 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1 11433 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3 11434 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1 11435 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4 11436 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1 11437 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5 11438 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1 11439 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6 11440 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1 11441 #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7 11442 u8 byte2; 11443 u8 byte3; 11444 __le16 word0; 11445 __le16 word1; 11446 __le32 reg0; 11447 __le32 reg1; 11448 __le32 reg2; 11449 __le32 reg3; 11450 __le16 word2; 11451 __le16 word3; 11452 }; 11453 11454 /* The iscsi storm connection context of Tstorm */ 11455 struct tstorm_iscsi_conn_st_ctx { 11456 __le32 reserved[44]; 11457 }; 11458 11459 struct e4_mstorm_iscsi_conn_ag_ctx { 11460 u8 reserved; 11461 u8 state; 11462 u8 flags0; 11463 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1 11464 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0 11465 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1 11466 #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1 11467 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3 11468 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2 11469 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3 11470 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4 11471 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3 11472 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6 11473 u8 flags1; 11474 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1 11475 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0 11476 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1 11477 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1 11478 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1 11479 #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2 11480 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1 11481 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3 11482 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1 11483 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4 11484 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1 11485 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5 11486 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1 11487 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6 11488 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1 11489 #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7 11490 __le16 word0; 11491 __le16 word1; 11492 __le32 reg0; 11493 __le32 reg1; 11494 }; 11495 11496 /* Combined iSCSI and TCP storm connection of Mstorm */ 11497 struct mstorm_iscsi_tcp_conn_st_ctx { 11498 __le32 reserved_tcp[20]; 11499 __le32 reserved_iscsi[12]; 11500 }; 11501 11502 /* The iscsi storm context of Ustorm */ 11503 struct ustorm_iscsi_conn_st_ctx { 11504 __le32 reserved[52]; 11505 }; 11506 11507 /* iscsi connection context */ 11508 struct e4_iscsi_conn_context { 11509 struct ystorm_iscsi_conn_st_ctx ystorm_st_context; 11510 struct pstorm_iscsi_tcp_conn_st_ctx pstorm_st_context; 11511 struct regpair pstorm_st_padding[2]; 11512 struct pb_context xpb2_context; 11513 struct xstorm_iscsi_tcp_conn_st_ctx xstorm_st_context; 11514 struct regpair xstorm_st_padding[2]; 11515 struct e4_xstorm_iscsi_conn_ag_ctx xstorm_ag_context; 11516 struct e4_tstorm_iscsi_conn_ag_ctx tstorm_ag_context; 11517 struct regpair tstorm_ag_padding[2]; 11518 struct timers_context timer_context; 11519 struct e4_ustorm_iscsi_conn_ag_ctx ustorm_ag_context; 11520 struct pb_context upb_context; 11521 struct tstorm_iscsi_conn_st_ctx tstorm_st_context; 11522 struct regpair tstorm_st_padding[2]; 11523 struct e4_mstorm_iscsi_conn_ag_ctx mstorm_ag_context; 11524 struct mstorm_iscsi_tcp_conn_st_ctx mstorm_st_context; 11525 struct ustorm_iscsi_conn_st_ctx ustorm_st_context; 11526 }; 11527 11528 /* iSCSI init params passed by driver to FW in iSCSI init ramrod */ 11529 struct iscsi_init_ramrod_params { 11530 struct iscsi_spe_func_init iscsi_init_spe; 11531 struct tcp_init_params tcp_init; 11532 }; 11533 11534 struct e4_ystorm_iscsi_conn_ag_ctx { 11535 u8 byte0; 11536 u8 byte1; 11537 u8 flags0; 11538 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1 11539 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0 11540 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1 11541 #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1 11542 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3 11543 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2 11544 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3 11545 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4 11546 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3 11547 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6 11548 u8 flags1; 11549 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1 11550 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0 11551 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1 11552 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1 11553 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1 11554 #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2 11555 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1 11556 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3 11557 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1 11558 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4 11559 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1 11560 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5 11561 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1 11562 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6 11563 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1 11564 #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7 11565 u8 byte2; 11566 u8 byte3; 11567 __le16 word0; 11568 __le32 reg0; 11569 __le32 reg1; 11570 __le16 word1; 11571 __le16 word2; 11572 __le16 word3; 11573 __le16 word4; 11574 __le32 reg2; 11575 __le32 reg3; 11576 }; 11577 11578 #define MFW_TRACE_SIGNATURE 0x25071946 11579 11580 /* The trace in the buffer */ 11581 #define MFW_TRACE_EVENTID_MASK 0x00ffff 11582 #define MFW_TRACE_PRM_SIZE_MASK 0x0f0000 11583 #define MFW_TRACE_PRM_SIZE_OFFSET 16 11584 #define MFW_TRACE_ENTRY_SIZE 3 11585 11586 struct mcp_trace { 11587 u32 signature; /* Help to identify that the trace is valid */ 11588 u32 size; /* the size of the trace buffer in bytes */ 11589 u32 curr_level; /* 2 - all will be written to the buffer 11590 * 1 - debug trace will not be written 11591 * 0 - just errors will be written to the buffer 11592 */ 11593 u32 modules_mask[2]; /* a bit per module, 1 means write it, 0 means 11594 * mask it. 11595 */ 11596 11597 /* Warning: the following pointers are assumed to be 32bits as they are 11598 * used only in the MFW. 11599 */ 11600 u32 trace_prod; /* The next trace will be written to this offset */ 11601 u32 trace_oldest; /* The oldest valid trace starts at this offset 11602 * (usually very close after the current producer). 11603 */ 11604 }; 11605 11606 #define VF_MAX_STATIC 192 11607 11608 #define MCP_GLOB_PATH_MAX 2 11609 #define MCP_PORT_MAX 2 11610 #define MCP_GLOB_PORT_MAX 4 11611 #define MCP_GLOB_FUNC_MAX 16 11612 11613 typedef u32 offsize_t; /* In DWORDS !!! */ 11614 /* Offset from the beginning of the MCP scratchpad */ 11615 #define OFFSIZE_OFFSET_SHIFT 0 11616 #define OFFSIZE_OFFSET_MASK 0x0000ffff 11617 /* Size of specific element (not the whole array if any) */ 11618 #define OFFSIZE_SIZE_SHIFT 16 11619 #define OFFSIZE_SIZE_MASK 0xffff0000 11620 11621 #define SECTION_OFFSET(_offsize) ((((_offsize & \ 11622 OFFSIZE_OFFSET_MASK) >> \ 11623 OFFSIZE_OFFSET_SHIFT) << 2)) 11624 11625 #define QED_SECTION_SIZE(_offsize) (((_offsize & \ 11626 OFFSIZE_SIZE_MASK) >> \ 11627 OFFSIZE_SIZE_SHIFT) << 2) 11628 11629 #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \ 11630 SECTION_OFFSET(_offsize) + \ 11631 (QED_SECTION_SIZE(_offsize) * idx)) 11632 11633 #define SECTION_OFFSIZE_ADDR(_pub_base, _section) \ 11634 (_pub_base + offsetof(struct mcp_public_data, sections[_section])) 11635 11636 /* PHY configuration */ 11637 struct eth_phy_cfg { 11638 u32 speed; 11639 #define ETH_SPEED_AUTONEG 0 11640 #define ETH_SPEED_SMARTLINQ 0x8 11641 11642 u32 pause; 11643 #define ETH_PAUSE_NONE 0x0 11644 #define ETH_PAUSE_AUTONEG 0x1 11645 #define ETH_PAUSE_RX 0x2 11646 #define ETH_PAUSE_TX 0x4 11647 11648 u32 adv_speed; 11649 u32 loopback_mode; 11650 #define ETH_LOOPBACK_NONE (0) 11651 #define ETH_LOOPBACK_INT_PHY (1) 11652 #define ETH_LOOPBACK_EXT_PHY (2) 11653 #define ETH_LOOPBACK_EXT (3) 11654 #define ETH_LOOPBACK_MAC (4) 11655 11656 u32 eee_cfg; 11657 #define EEE_CFG_EEE_ENABLED BIT(0) 11658 #define EEE_CFG_TX_LPI BIT(1) 11659 #define EEE_CFG_ADV_SPEED_1G BIT(2) 11660 #define EEE_CFG_ADV_SPEED_10G BIT(3) 11661 #define EEE_TX_TIMER_USEC_MASK (0xfffffff0) 11662 #define EEE_TX_TIMER_USEC_OFFSET 4 11663 #define EEE_TX_TIMER_USEC_BALANCED_TIME (0xa00) 11664 #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME (0x100) 11665 #define EEE_TX_TIMER_USEC_LATENCY_TIME (0x6000) 11666 11667 u32 feature_config_flags; 11668 #define ETH_EEE_MODE_ADV_LPI (1 << 0) 11669 }; 11670 11671 struct port_mf_cfg { 11672 u32 dynamic_cfg; 11673 #define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff 11674 #define PORT_MF_CFG_OV_TAG_SHIFT 0 11675 #define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK 11676 11677 u32 reserved[1]; 11678 }; 11679 11680 struct eth_stats { 11681 u64 r64; 11682 u64 r127; 11683 u64 r255; 11684 u64 r511; 11685 u64 r1023; 11686 u64 r1518; 11687 11688 union { 11689 struct { 11690 u64 r1522; 11691 u64 r2047; 11692 u64 r4095; 11693 u64 r9216; 11694 u64 r16383; 11695 } bb0; 11696 struct { 11697 u64 unused1; 11698 u64 r1519_to_max; 11699 u64 unused2; 11700 u64 unused3; 11701 u64 unused4; 11702 } ah0; 11703 } u0; 11704 11705 u64 rfcs; 11706 u64 rxcf; 11707 u64 rxpf; 11708 u64 rxpp; 11709 u64 raln; 11710 u64 rfcr; 11711 u64 rovr; 11712 u64 rjbr; 11713 u64 rund; 11714 u64 rfrg; 11715 u64 t64; 11716 u64 t127; 11717 u64 t255; 11718 u64 t511; 11719 u64 t1023; 11720 u64 t1518; 11721 11722 union { 11723 struct { 11724 u64 t2047; 11725 u64 t4095; 11726 u64 t9216; 11727 u64 t16383; 11728 } bb1; 11729 struct { 11730 u64 t1519_to_max; 11731 u64 unused6; 11732 u64 unused7; 11733 u64 unused8; 11734 } ah1; 11735 } u1; 11736 11737 u64 txpf; 11738 u64 txpp; 11739 11740 union { 11741 struct { 11742 u64 tlpiec; 11743 u64 tncl; 11744 } bb2; 11745 struct { 11746 u64 unused9; 11747 u64 unused10; 11748 } ah2; 11749 } u2; 11750 11751 u64 rbyte; 11752 u64 rxuca; 11753 u64 rxmca; 11754 u64 rxbca; 11755 u64 rxpok; 11756 u64 tbyte; 11757 u64 txuca; 11758 u64 txmca; 11759 u64 txbca; 11760 u64 txcf; 11761 }; 11762 11763 struct brb_stats { 11764 u64 brb_truncate[8]; 11765 u64 brb_discard[8]; 11766 }; 11767 11768 struct port_stats { 11769 struct brb_stats brb; 11770 struct eth_stats eth; 11771 }; 11772 11773 struct couple_mode_teaming { 11774 u8 port_cmt[MCP_GLOB_PORT_MAX]; 11775 #define PORT_CMT_IN_TEAM (1 << 0) 11776 11777 #define PORT_CMT_PORT_ROLE (1 << 1) 11778 #define PORT_CMT_PORT_INACTIVE (0 << 1) 11779 #define PORT_CMT_PORT_ACTIVE (1 << 1) 11780 11781 #define PORT_CMT_TEAM_MASK (1 << 2) 11782 #define PORT_CMT_TEAM0 (0 << 2) 11783 #define PORT_CMT_TEAM1 (1 << 2) 11784 }; 11785 11786 #define LLDP_CHASSIS_ID_STAT_LEN 4 11787 #define LLDP_PORT_ID_STAT_LEN 4 11788 #define DCBX_MAX_APP_PROTOCOL 32 11789 #define MAX_SYSTEM_LLDP_TLV_DATA 32 11790 11791 enum _lldp_agent { 11792 LLDP_NEAREST_BRIDGE = 0, 11793 LLDP_NEAREST_NON_TPMR_BRIDGE, 11794 LLDP_NEAREST_CUSTOMER_BRIDGE, 11795 LLDP_MAX_LLDP_AGENTS 11796 }; 11797 11798 struct lldp_config_params_s { 11799 u32 config; 11800 #define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff 11801 #define LLDP_CONFIG_TX_INTERVAL_SHIFT 0 11802 #define LLDP_CONFIG_HOLD_MASK 0x00000f00 11803 #define LLDP_CONFIG_HOLD_SHIFT 8 11804 #define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000 11805 #define LLDP_CONFIG_MAX_CREDIT_SHIFT 12 11806 #define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000 11807 #define LLDP_CONFIG_ENABLE_RX_SHIFT 30 11808 #define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000 11809 #define LLDP_CONFIG_ENABLE_TX_SHIFT 31 11810 u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 11811 u32 local_port_id[LLDP_PORT_ID_STAT_LEN]; 11812 }; 11813 11814 struct lldp_status_params_s { 11815 u32 prefix_seq_num; 11816 u32 status; 11817 u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN]; 11818 u32 peer_port_id[LLDP_PORT_ID_STAT_LEN]; 11819 u32 suffix_seq_num; 11820 }; 11821 11822 struct dcbx_ets_feature { 11823 u32 flags; 11824 #define DCBX_ETS_ENABLED_MASK 0x00000001 11825 #define DCBX_ETS_ENABLED_SHIFT 0 11826 #define DCBX_ETS_WILLING_MASK 0x00000002 11827 #define DCBX_ETS_WILLING_SHIFT 1 11828 #define DCBX_ETS_ERROR_MASK 0x00000004 11829 #define DCBX_ETS_ERROR_SHIFT 2 11830 #define DCBX_ETS_CBS_MASK 0x00000008 11831 #define DCBX_ETS_CBS_SHIFT 3 11832 #define DCBX_ETS_MAX_TCS_MASK 0x000000f0 11833 #define DCBX_ETS_MAX_TCS_SHIFT 4 11834 #define DCBX_OOO_TC_MASK 0x00000f00 11835 #define DCBX_OOO_TC_SHIFT 8 11836 u32 pri_tc_tbl[1]; 11837 #define DCBX_TCP_OOO_TC (4) 11838 11839 #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1) 11840 #define DCBX_CEE_STRICT_PRIORITY 0xf 11841 u32 tc_bw_tbl[2]; 11842 u32 tc_tsa_tbl[2]; 11843 #define DCBX_ETS_TSA_STRICT 0 11844 #define DCBX_ETS_TSA_CBS 1 11845 #define DCBX_ETS_TSA_ETS 2 11846 }; 11847 11848 #define DCBX_TCP_OOO_TC (4) 11849 #define DCBX_TCP_OOO_K2_4PORT_TC (3) 11850 11851 struct dcbx_app_priority_entry { 11852 u32 entry; 11853 #define DCBX_APP_PRI_MAP_MASK 0x000000ff 11854 #define DCBX_APP_PRI_MAP_SHIFT 0 11855 #define DCBX_APP_PRI_0 0x01 11856 #define DCBX_APP_PRI_1 0x02 11857 #define DCBX_APP_PRI_2 0x04 11858 #define DCBX_APP_PRI_3 0x08 11859 #define DCBX_APP_PRI_4 0x10 11860 #define DCBX_APP_PRI_5 0x20 11861 #define DCBX_APP_PRI_6 0x40 11862 #define DCBX_APP_PRI_7 0x80 11863 #define DCBX_APP_SF_MASK 0x00000300 11864 #define DCBX_APP_SF_SHIFT 8 11865 #define DCBX_APP_SF_ETHTYPE 0 11866 #define DCBX_APP_SF_PORT 1 11867 #define DCBX_APP_SF_IEEE_MASK 0x0000f000 11868 #define DCBX_APP_SF_IEEE_SHIFT 12 11869 #define DCBX_APP_SF_IEEE_RESERVED 0 11870 #define DCBX_APP_SF_IEEE_ETHTYPE 1 11871 #define DCBX_APP_SF_IEEE_TCP_PORT 2 11872 #define DCBX_APP_SF_IEEE_UDP_PORT 3 11873 #define DCBX_APP_SF_IEEE_TCP_UDP_PORT 4 11874 11875 #define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000 11876 #define DCBX_APP_PROTOCOL_ID_SHIFT 16 11877 }; 11878 11879 struct dcbx_app_priority_feature { 11880 u32 flags; 11881 #define DCBX_APP_ENABLED_MASK 0x00000001 11882 #define DCBX_APP_ENABLED_SHIFT 0 11883 #define DCBX_APP_WILLING_MASK 0x00000002 11884 #define DCBX_APP_WILLING_SHIFT 1 11885 #define DCBX_APP_ERROR_MASK 0x00000004 11886 #define DCBX_APP_ERROR_SHIFT 2 11887 #define DCBX_APP_MAX_TCS_MASK 0x0000f000 11888 #define DCBX_APP_MAX_TCS_SHIFT 12 11889 #define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000 11890 #define DCBX_APP_NUM_ENTRIES_SHIFT 16 11891 struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL]; 11892 }; 11893 11894 struct dcbx_features { 11895 struct dcbx_ets_feature ets; 11896 u32 pfc; 11897 #define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff 11898 #define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0 11899 #define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01 11900 #define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02 11901 #define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04 11902 #define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08 11903 #define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10 11904 #define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20 11905 #define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40 11906 #define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80 11907 11908 #define DCBX_PFC_FLAGS_MASK 0x0000ff00 11909 #define DCBX_PFC_FLAGS_SHIFT 8 11910 #define DCBX_PFC_CAPS_MASK 0x00000f00 11911 #define DCBX_PFC_CAPS_SHIFT 8 11912 #define DCBX_PFC_MBC_MASK 0x00004000 11913 #define DCBX_PFC_MBC_SHIFT 14 11914 #define DCBX_PFC_WILLING_MASK 0x00008000 11915 #define DCBX_PFC_WILLING_SHIFT 15 11916 #define DCBX_PFC_ENABLED_MASK 0x00010000 11917 #define DCBX_PFC_ENABLED_SHIFT 16 11918 #define DCBX_PFC_ERROR_MASK 0x00020000 11919 #define DCBX_PFC_ERROR_SHIFT 17 11920 11921 struct dcbx_app_priority_feature app; 11922 }; 11923 11924 struct dcbx_local_params { 11925 u32 config; 11926 #define DCBX_CONFIG_VERSION_MASK 0x00000007 11927 #define DCBX_CONFIG_VERSION_SHIFT 0 11928 #define DCBX_CONFIG_VERSION_DISABLED 0 11929 #define DCBX_CONFIG_VERSION_IEEE 1 11930 #define DCBX_CONFIG_VERSION_CEE 2 11931 #define DCBX_CONFIG_VERSION_STATIC 4 11932 11933 u32 flags; 11934 struct dcbx_features features; 11935 }; 11936 11937 struct dcbx_mib { 11938 u32 prefix_seq_num; 11939 u32 flags; 11940 struct dcbx_features features; 11941 u32 suffix_seq_num; 11942 }; 11943 11944 struct lldp_system_tlvs_buffer_s { 11945 u16 valid; 11946 u16 length; 11947 u32 data[MAX_SYSTEM_LLDP_TLV_DATA]; 11948 }; 11949 11950 struct dcb_dscp_map { 11951 u32 flags; 11952 #define DCB_DSCP_ENABLE_MASK 0x1 11953 #define DCB_DSCP_ENABLE_SHIFT 0 11954 #define DCB_DSCP_ENABLE 1 11955 u32 dscp_pri_map[8]; 11956 }; 11957 11958 struct public_global { 11959 u32 max_path; 11960 u32 max_ports; 11961 #define MODE_1P 1 11962 #define MODE_2P 2 11963 #define MODE_3P 3 11964 #define MODE_4P 4 11965 u32 debug_mb_offset; 11966 u32 phymod_dbg_mb_offset; 11967 struct couple_mode_teaming cmt; 11968 s32 internal_temperature; 11969 u32 mfw_ver; 11970 u32 running_bundle_id; 11971 s32 external_temperature; 11972 u32 mdump_reason; 11973 u64 reserved; 11974 u32 data_ptr; 11975 u32 data_size; 11976 }; 11977 11978 struct fw_flr_mb { 11979 u32 aggint; 11980 u32 opgen_addr; 11981 u32 accum_ack; 11982 }; 11983 11984 struct public_path { 11985 struct fw_flr_mb flr_mb; 11986 u32 mcp_vf_disabled[VF_MAX_STATIC / 32]; 11987 11988 u32 process_kill; 11989 #define PROCESS_KILL_COUNTER_MASK 0x0000ffff 11990 #define PROCESS_KILL_COUNTER_SHIFT 0 11991 #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000 11992 #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16 11993 #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit) 11994 }; 11995 11996 struct public_port { 11997 u32 validity_map; 11998 11999 u32 link_status; 12000 #define LINK_STATUS_LINK_UP 0x00000001 12001 #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e 12002 #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (1 << 1) 12003 #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1) 12004 #define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1) 12005 #define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1) 12006 #define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1) 12007 #define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1) 12008 #define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1) 12009 #define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1) 12010 12011 #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020 12012 12013 #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040 12014 #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080 12015 12016 #define LINK_STATUS_PFC_ENABLED 0x00000100 12017 #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200 12018 #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400 12019 #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800 12020 #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000 12021 #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000 12022 #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000 12023 #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000 12024 #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000 12025 12026 #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000 12027 #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18) 12028 #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1 << 18) 12029 #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18) 12030 #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18) 12031 12032 #define LINK_STATUS_SFP_TX_FAULT 0x00100000 12033 #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000 12034 #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000 12035 #define LINK_STATUS_RX_SIGNAL_PRESENT 0x00800000 12036 #define LINK_STATUS_MAC_LOCAL_FAULT 0x01000000 12037 #define LINK_STATUS_MAC_REMOTE_FAULT 0x02000000 12038 #define LINK_STATUS_UNSUPPORTED_SPD_REQ 0x04000000 12039 12040 u32 link_status1; 12041 u32 ext_phy_fw_version; 12042 u32 drv_phy_cfg_addr; 12043 12044 u32 port_stx; 12045 12046 u32 stat_nig_timer; 12047 12048 struct port_mf_cfg port_mf_config; 12049 struct port_stats stats; 12050 12051 u32 media_type; 12052 #define MEDIA_UNSPECIFIED 0x0 12053 #define MEDIA_SFPP_10G_FIBER 0x1 12054 #define MEDIA_XFP_FIBER 0x2 12055 #define MEDIA_DA_TWINAX 0x3 12056 #define MEDIA_BASE_T 0x4 12057 #define MEDIA_SFP_1G_FIBER 0x5 12058 #define MEDIA_MODULE_FIBER 0x6 12059 #define MEDIA_KR 0xf0 12060 #define MEDIA_NOT_PRESENT 0xff 12061 12062 u32 lfa_status; 12063 u32 link_change_count; 12064 12065 struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS]; 12066 struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS]; 12067 struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf; 12068 12069 /* DCBX related MIB */ 12070 struct dcbx_local_params local_admin_dcbx_mib; 12071 struct dcbx_mib remote_dcbx_mib; 12072 struct dcbx_mib operational_dcbx_mib; 12073 12074 u32 reserved[2]; 12075 u32 transceiver_data; 12076 #define ETH_TRANSCEIVER_STATE_MASK 0x000000FF 12077 #define ETH_TRANSCEIVER_STATE_SHIFT 0x00000000 12078 #define ETH_TRANSCEIVER_STATE_OFFSET 0x00000000 12079 #define ETH_TRANSCEIVER_STATE_UNPLUGGED 0x00000000 12080 #define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001 12081 #define ETH_TRANSCEIVER_STATE_VALID 0x00000003 12082 #define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008 12083 #define ETH_TRANSCEIVER_TYPE_MASK 0x0000FF00 12084 #define ETH_TRANSCEIVER_TYPE_OFFSET 0x8 12085 #define ETH_TRANSCEIVER_TYPE_NONE 0x00 12086 #define ETH_TRANSCEIVER_TYPE_UNKNOWN 0xFF 12087 #define ETH_TRANSCEIVER_TYPE_1G_PCC 0x01 12088 #define ETH_TRANSCEIVER_TYPE_1G_ACC 0x02 12089 #define ETH_TRANSCEIVER_TYPE_1G_LX 0x03 12090 #define ETH_TRANSCEIVER_TYPE_1G_SX 0x04 12091 #define ETH_TRANSCEIVER_TYPE_10G_SR 0x05 12092 #define ETH_TRANSCEIVER_TYPE_10G_LR 0x06 12093 #define ETH_TRANSCEIVER_TYPE_10G_LRM 0x07 12094 #define ETH_TRANSCEIVER_TYPE_10G_ER 0x08 12095 #define ETH_TRANSCEIVER_TYPE_10G_PCC 0x09 12096 #define ETH_TRANSCEIVER_TYPE_10G_ACC 0x0a 12097 #define ETH_TRANSCEIVER_TYPE_XLPPI 0x0b 12098 #define ETH_TRANSCEIVER_TYPE_40G_LR4 0x0c 12099 #define ETH_TRANSCEIVER_TYPE_40G_SR4 0x0d 12100 #define ETH_TRANSCEIVER_TYPE_40G_CR4 0x0e 12101 #define ETH_TRANSCEIVER_TYPE_100G_AOC 0x0f 12102 #define ETH_TRANSCEIVER_TYPE_100G_SR4 0x10 12103 #define ETH_TRANSCEIVER_TYPE_100G_LR4 0x11 12104 #define ETH_TRANSCEIVER_TYPE_100G_ER4 0x12 12105 #define ETH_TRANSCEIVER_TYPE_100G_ACC 0x13 12106 #define ETH_TRANSCEIVER_TYPE_100G_CR4 0x14 12107 #define ETH_TRANSCEIVER_TYPE_4x10G_SR 0x15 12108 #define ETH_TRANSCEIVER_TYPE_25G_CA_N 0x16 12109 #define ETH_TRANSCEIVER_TYPE_25G_ACC_S 0x17 12110 #define ETH_TRANSCEIVER_TYPE_25G_CA_S 0x18 12111 #define ETH_TRANSCEIVER_TYPE_25G_ACC_M 0x19 12112 #define ETH_TRANSCEIVER_TYPE_25G_CA_L 0x1a 12113 #define ETH_TRANSCEIVER_TYPE_25G_ACC_L 0x1b 12114 #define ETH_TRANSCEIVER_TYPE_25G_SR 0x1c 12115 #define ETH_TRANSCEIVER_TYPE_25G_LR 0x1d 12116 #define ETH_TRANSCEIVER_TYPE_25G_AOC 0x1e 12117 #define ETH_TRANSCEIVER_TYPE_4x10G 0x1f 12118 #define ETH_TRANSCEIVER_TYPE_4x25G_CR 0x20 12119 #define ETH_TRANSCEIVER_TYPE_1000BASET 0x21 12120 #define ETH_TRANSCEIVER_TYPE_10G_BASET 0x22 12121 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_SR 0x30 12122 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_CR 0x31 12123 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_10G_40G_LR 0x32 12124 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_SR 0x33 12125 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_CR 0x34 12126 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_LR 0x35 12127 #define ETH_TRANSCEIVER_TYPE_MULTI_RATE_40G_100G_AOC 0x36 12128 u32 wol_info; 12129 u32 wol_pkt_len; 12130 u32 wol_pkt_details; 12131 struct dcb_dscp_map dcb_dscp_map; 12132 12133 u32 eee_status; 12134 #define EEE_ACTIVE_BIT BIT(0) 12135 #define EEE_LD_ADV_STATUS_MASK 0x000000f0 12136 #define EEE_LD_ADV_STATUS_OFFSET 4 12137 #define EEE_1G_ADV BIT(1) 12138 #define EEE_10G_ADV BIT(2) 12139 #define EEE_LP_ADV_STATUS_MASK 0x00000f00 12140 #define EEE_LP_ADV_STATUS_OFFSET 8 12141 #define EEE_SUPPORTED_SPEED_MASK 0x0000f000 12142 #define EEE_SUPPORTED_SPEED_OFFSET 12 12143 #define EEE_1G_SUPPORTED BIT(1) 12144 #define EEE_10G_SUPPORTED BIT(2) 12145 12146 u32 eee_remote; 12147 #define EEE_REMOTE_TW_TX_MASK 0x0000ffff 12148 #define EEE_REMOTE_TW_TX_OFFSET 0 12149 #define EEE_REMOTE_TW_RX_MASK 0xffff0000 12150 #define EEE_REMOTE_TW_RX_OFFSET 16 12151 12152 u32 reserved1; 12153 u32 oem_cfg_port; 12154 #define OEM_CFG_CHANNEL_TYPE_MASK 0x00000003 12155 #define OEM_CFG_CHANNEL_TYPE_OFFSET 0 12156 #define OEM_CFG_CHANNEL_TYPE_VLAN_PARTITION 0x1 12157 #define OEM_CFG_CHANNEL_TYPE_STAGGED 0x2 12158 #define OEM_CFG_SCHED_TYPE_MASK 0x0000000C 12159 #define OEM_CFG_SCHED_TYPE_OFFSET 2 12160 #define OEM_CFG_SCHED_TYPE_ETS 0x1 12161 #define OEM_CFG_SCHED_TYPE_VNIC_BW 0x2 12162 }; 12163 12164 struct public_func { 12165 u32 reserved0[2]; 12166 12167 u32 mtu_size; 12168 12169 u32 reserved[7]; 12170 12171 u32 config; 12172 #define FUNC_MF_CFG_FUNC_HIDE 0x00000001 12173 #define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002 12174 #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001 12175 12176 #define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0 12177 #define FUNC_MF_CFG_PROTOCOL_SHIFT 4 12178 #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000 12179 #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010 12180 #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020 12181 #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030 12182 #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000030 12183 12184 #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00 12185 #define FUNC_MF_CFG_MIN_BW_SHIFT 8 12186 #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000 12187 #define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000 12188 #define FUNC_MF_CFG_MAX_BW_SHIFT 16 12189 #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000 12190 12191 u32 status; 12192 #define FUNC_STATUS_VIRTUAL_LINK_UP 0x00000001 12193 12194 u32 mac_upper; 12195 #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff 12196 #define FUNC_MF_CFG_UPPERMAC_SHIFT 0 12197 #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK 12198 u32 mac_lower; 12199 #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff 12200 12201 u32 fcoe_wwn_port_name_upper; 12202 u32 fcoe_wwn_port_name_lower; 12203 12204 u32 fcoe_wwn_node_name_upper; 12205 u32 fcoe_wwn_node_name_lower; 12206 12207 u32 ovlan_stag; 12208 #define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff 12209 #define FUNC_MF_CFG_OV_STAG_SHIFT 0 12210 #define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK 12211 12212 u32 pf_allocation; 12213 12214 u32 preserve_data; 12215 12216 u32 driver_last_activity_ts; 12217 12218 u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32]; 12219 12220 u32 drv_id; 12221 #define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff 12222 #define DRV_ID_PDA_COMP_VER_SHIFT 0 12223 12224 #define LOAD_REQ_HSI_VERSION 2 12225 #define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000 12226 #define DRV_ID_MCP_HSI_VER_SHIFT 16 12227 #define DRV_ID_MCP_HSI_VER_CURRENT (LOAD_REQ_HSI_VERSION << \ 12228 DRV_ID_MCP_HSI_VER_SHIFT) 12229 12230 #define DRV_ID_DRV_TYPE_MASK 0x7f000000 12231 #define DRV_ID_DRV_TYPE_SHIFT 24 12232 #define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT) 12233 #define DRV_ID_DRV_TYPE_LINUX (1 << DRV_ID_DRV_TYPE_SHIFT) 12234 12235 #define DRV_ID_DRV_INIT_HW_MASK 0x80000000 12236 #define DRV_ID_DRV_INIT_HW_SHIFT 31 12237 #define DRV_ID_DRV_INIT_HW_FLAG (1 << DRV_ID_DRV_INIT_HW_SHIFT) 12238 12239 u32 oem_cfg_func; 12240 #define OEM_CFG_FUNC_TC_MASK 0x0000000F 12241 #define OEM_CFG_FUNC_TC_OFFSET 0 12242 #define OEM_CFG_FUNC_TC_0 0x0 12243 #define OEM_CFG_FUNC_TC_1 0x1 12244 #define OEM_CFG_FUNC_TC_2 0x2 12245 #define OEM_CFG_FUNC_TC_3 0x3 12246 #define OEM_CFG_FUNC_TC_4 0x4 12247 #define OEM_CFG_FUNC_TC_5 0x5 12248 #define OEM_CFG_FUNC_TC_6 0x6 12249 #define OEM_CFG_FUNC_TC_7 0x7 12250 12251 #define OEM_CFG_FUNC_HOST_PRI_CTRL_MASK 0x00000030 12252 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OFFSET 4 12253 #define OEM_CFG_FUNC_HOST_PRI_CTRL_VNIC 0x1 12254 #define OEM_CFG_FUNC_HOST_PRI_CTRL_OS 0x2 12255 }; 12256 12257 struct mcp_mac { 12258 u32 mac_upper; 12259 u32 mac_lower; 12260 }; 12261 12262 struct mcp_val64 { 12263 u32 lo; 12264 u32 hi; 12265 }; 12266 12267 struct mcp_file_att { 12268 u32 nvm_start_addr; 12269 u32 len; 12270 }; 12271 12272 struct bist_nvm_image_att { 12273 u32 return_code; 12274 u32 image_type; 12275 u32 nvm_start_addr; 12276 u32 len; 12277 }; 12278 12279 #define MCP_DRV_VER_STR_SIZE 16 12280 #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32)) 12281 #define MCP_DRV_NVM_BUF_LEN 32 12282 struct drv_version_stc { 12283 u32 version; 12284 u8 name[MCP_DRV_VER_STR_SIZE - 4]; 12285 }; 12286 12287 struct lan_stats_stc { 12288 u64 ucast_rx_pkts; 12289 u64 ucast_tx_pkts; 12290 u32 fcs_err; 12291 u32 rserved; 12292 }; 12293 12294 struct fcoe_stats_stc { 12295 u64 rx_pkts; 12296 u64 tx_pkts; 12297 u32 fcs_err; 12298 u32 login_failure; 12299 }; 12300 12301 struct ocbb_data_stc { 12302 u32 ocbb_host_addr; 12303 u32 ocsd_host_addr; 12304 u32 ocsd_req_update_interval; 12305 }; 12306 12307 #define MAX_NUM_OF_SENSORS 7 12308 struct temperature_status_stc { 12309 u32 num_of_sensors; 12310 u32 sensor[MAX_NUM_OF_SENSORS]; 12311 }; 12312 12313 /* crash dump configuration header */ 12314 struct mdump_config_stc { 12315 u32 version; 12316 u32 config; 12317 u32 epoc; 12318 u32 num_of_logs; 12319 u32 valid_logs; 12320 }; 12321 12322 enum resource_id_enum { 12323 RESOURCE_NUM_SB_E = 0, 12324 RESOURCE_NUM_L2_QUEUE_E = 1, 12325 RESOURCE_NUM_VPORT_E = 2, 12326 RESOURCE_NUM_VMQ_E = 3, 12327 RESOURCE_FACTOR_NUM_RSS_PF_E = 4, 12328 RESOURCE_FACTOR_RSS_PER_VF_E = 5, 12329 RESOURCE_NUM_RL_E = 6, 12330 RESOURCE_NUM_PQ_E = 7, 12331 RESOURCE_NUM_VF_E = 8, 12332 RESOURCE_VFC_FILTER_E = 9, 12333 RESOURCE_ILT_E = 10, 12334 RESOURCE_CQS_E = 11, 12335 RESOURCE_GFT_PROFILES_E = 12, 12336 RESOURCE_NUM_TC_E = 13, 12337 RESOURCE_NUM_RSS_ENGINES_E = 14, 12338 RESOURCE_LL2_QUEUE_E = 15, 12339 RESOURCE_RDMA_STATS_QUEUE_E = 16, 12340 RESOURCE_BDQ_E = 17, 12341 RESOURCE_QCN_E = 18, 12342 RESOURCE_LLH_FILTER_E = 19, 12343 RESOURCE_VF_MAC_ADDR = 20, 12344 RESOURCE_LL2_CQS_E = 21, 12345 RESOURCE_VF_CNQS = 22, 12346 RESOURCE_MAX_NUM, 12347 RESOURCE_NUM_INVALID = 0xFFFFFFFF 12348 }; 12349 12350 /* Resource ID is to be filled by the driver in the MB request 12351 * Size, offset & flags to be filled by the MFW in the MB response 12352 */ 12353 struct resource_info { 12354 enum resource_id_enum res_id; 12355 u32 size; /* number of allocated resources */ 12356 u32 offset; /* Offset of the 1st resource */ 12357 u32 vf_size; 12358 u32 vf_offset; 12359 u32 flags; 12360 #define RESOURCE_ELEMENT_STRICT (1 << 0) 12361 }; 12362 12363 #define DRV_ROLE_NONE 0 12364 #define DRV_ROLE_PREBOOT 1 12365 #define DRV_ROLE_OS 2 12366 #define DRV_ROLE_KDUMP 3 12367 12368 struct load_req_stc { 12369 u32 drv_ver_0; 12370 u32 drv_ver_1; 12371 u32 fw_ver; 12372 u32 misc0; 12373 #define LOAD_REQ_ROLE_MASK 0x000000FF 12374 #define LOAD_REQ_ROLE_SHIFT 0 12375 #define LOAD_REQ_LOCK_TO_MASK 0x0000FF00 12376 #define LOAD_REQ_LOCK_TO_SHIFT 8 12377 #define LOAD_REQ_LOCK_TO_DEFAULT 0 12378 #define LOAD_REQ_LOCK_TO_NONE 255 12379 #define LOAD_REQ_FORCE_MASK 0x000F0000 12380 #define LOAD_REQ_FORCE_SHIFT 16 12381 #define LOAD_REQ_FORCE_NONE 0 12382 #define LOAD_REQ_FORCE_PF 1 12383 #define LOAD_REQ_FORCE_ALL 2 12384 #define LOAD_REQ_FLAGS0_MASK 0x00F00000 12385 #define LOAD_REQ_FLAGS0_SHIFT 20 12386 #define LOAD_REQ_FLAGS0_AVOID_RESET (0x1 << 0) 12387 }; 12388 12389 struct load_rsp_stc { 12390 u32 drv_ver_0; 12391 u32 drv_ver_1; 12392 u32 fw_ver; 12393 u32 misc0; 12394 #define LOAD_RSP_ROLE_MASK 0x000000FF 12395 #define LOAD_RSP_ROLE_SHIFT 0 12396 #define LOAD_RSP_HSI_MASK 0x0000FF00 12397 #define LOAD_RSP_HSI_SHIFT 8 12398 #define LOAD_RSP_FLAGS0_MASK 0x000F0000 12399 #define LOAD_RSP_FLAGS0_SHIFT 16 12400 #define LOAD_RSP_FLAGS0_DRV_EXISTS (0x1 << 0) 12401 }; 12402 12403 union drv_union_data { 12404 u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD]; 12405 struct mcp_mac wol_mac; 12406 12407 struct eth_phy_cfg drv_phy_cfg; 12408 12409 struct mcp_val64 val64; 12410 12411 u8 raw_data[MCP_DRV_NVM_BUF_LEN]; 12412 12413 struct mcp_file_att file_att; 12414 12415 u32 ack_vf_disabled[VF_MAX_STATIC / 32]; 12416 12417 struct drv_version_stc drv_version; 12418 12419 struct lan_stats_stc lan_stats; 12420 struct fcoe_stats_stc fcoe_stats; 12421 struct ocbb_data_stc ocbb_info; 12422 struct temperature_status_stc temp_info; 12423 struct resource_info resource; 12424 struct bist_nvm_image_att nvm_image_att; 12425 struct mdump_config_stc mdump_config; 12426 }; 12427 12428 struct public_drv_mb { 12429 u32 drv_mb_header; 12430 #define DRV_MSG_CODE_MASK 0xffff0000 12431 #define DRV_MSG_CODE_LOAD_REQ 0x10000000 12432 #define DRV_MSG_CODE_LOAD_DONE 0x11000000 12433 #define DRV_MSG_CODE_INIT_HW 0x12000000 12434 #define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000 12435 #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000 12436 #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000 12437 #define DRV_MSG_CODE_INIT_PHY 0x22000000 12438 #define DRV_MSG_CODE_LINK_RESET 0x23000000 12439 #define DRV_MSG_CODE_SET_DCBX 0x25000000 12440 #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000 12441 #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000 12442 #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000 12443 #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000 12444 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000 12445 #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 12446 #define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000 12447 #define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000 12448 #define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000 12449 #define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000 12450 #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000 12451 #define DRV_MSG_CODE_GET_OEM_UPDATES 0x41000000 12452 12453 #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000 12454 #define DRV_MSG_CODE_NIG_DRAIN 0x30000000 12455 #define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000 12456 #define DRV_MSG_CODE_GET_NVM_CFG_OPTION 0x003e0000 12457 #define DRV_MSG_CODE_SET_NVM_CFG_OPTION 0x003f0000 12458 #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000 12459 #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000 12460 #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000 12461 #define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000 12462 #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000 12463 #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000 12464 #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000 12465 #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000 12466 #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000 12467 #define DRV_MSG_CODE_MCP_RESET 0x00090000 12468 #define DRV_MSG_CODE_SET_VERSION 0x000f0000 12469 #define DRV_MSG_CODE_MCP_HALT 0x00100000 12470 #define DRV_MSG_CODE_SET_VMAC 0x00110000 12471 #define DRV_MSG_CODE_GET_VMAC 0x00120000 12472 #define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4 12473 #define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30 12474 #define DRV_MSG_CODE_VMAC_TYPE_MAC 1 12475 #define DRV_MSG_CODE_VMAC_TYPE_WWNN 2 12476 #define DRV_MSG_CODE_VMAC_TYPE_WWPN 3 12477 12478 #define DRV_MSG_CODE_GET_STATS 0x00130000 12479 #define DRV_MSG_CODE_STATS_TYPE_LAN 1 12480 #define DRV_MSG_CODE_STATS_TYPE_FCOE 2 12481 #define DRV_MSG_CODE_STATS_TYPE_ISCSI 3 12482 #define DRV_MSG_CODE_STATS_TYPE_RDMA 4 12483 12484 #define DRV_MSG_CODE_TRANSCEIVER_READ 0x00160000 12485 12486 #define DRV_MSG_CODE_MASK_PARITIES 0x001a0000 12487 12488 #define DRV_MSG_CODE_BIST_TEST 0x001e0000 12489 #define DRV_MSG_CODE_SET_LED_MODE 0x00200000 12490 #define DRV_MSG_CODE_RESOURCE_CMD 0x00230000 12491 #define DRV_MSG_CODE_GET_TLV_DONE 0x002f0000 12492 #define DRV_MSG_CODE_GET_ENGINE_CONFIG 0x00370000 12493 #define DRV_MSG_CODE_GET_PPFID_BITMAP 0x43000000 12494 12495 #define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F 12496 #define RESOURCE_CMD_REQ_RESC_SHIFT 0 12497 #define RESOURCE_CMD_REQ_OPCODE_MASK 0x000000E0 12498 #define RESOURCE_CMD_REQ_OPCODE_SHIFT 5 12499 #define RESOURCE_OPCODE_REQ 1 12500 #define RESOURCE_OPCODE_REQ_WO_AGING 2 12501 #define RESOURCE_OPCODE_REQ_W_AGING 3 12502 #define RESOURCE_OPCODE_RELEASE 4 12503 #define RESOURCE_OPCODE_FORCE_RELEASE 5 12504 #define RESOURCE_CMD_REQ_AGE_MASK 0x0000FF00 12505 #define RESOURCE_CMD_REQ_AGE_SHIFT 8 12506 12507 #define RESOURCE_CMD_RSP_OWNER_MASK 0x000000FF 12508 #define RESOURCE_CMD_RSP_OWNER_SHIFT 0 12509 #define RESOURCE_CMD_RSP_OPCODE_MASK 0x00000700 12510 #define RESOURCE_CMD_RSP_OPCODE_SHIFT 8 12511 #define RESOURCE_OPCODE_GNT 1 12512 #define RESOURCE_OPCODE_BUSY 2 12513 #define RESOURCE_OPCODE_RELEASED 3 12514 #define RESOURCE_OPCODE_RELEASED_PREVIOUS 4 12515 #define RESOURCE_OPCODE_WRONG_OWNER 5 12516 #define RESOURCE_OPCODE_UNKNOWN_CMD 255 12517 12518 #define RESOURCE_DUMP 0 12519 12520 #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000 12521 #define DRV_MSG_CODE_OS_WOL 0x002e0000 12522 12523 #define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000 12524 #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000 12525 #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff 12526 12527 u32 drv_mb_param; 12528 #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000 12529 #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001 12530 #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002 12531 #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003 12532 #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF 12533 #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3 12534 12535 #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MBI 0x3 12536 #define DRV_MB_PARAM_NVM_OFFSET_OFFSET 0 12537 #define DRV_MB_PARAM_NVM_OFFSET_MASK 0x00FFFFFF 12538 #define DRV_MB_PARAM_NVM_LEN_OFFSET 24 12539 #define DRV_MB_PARAM_NVM_LEN_MASK 0xFF000000 12540 12541 #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0 12542 #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF 12543 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8 12544 #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00 12545 #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001 12546 #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0 12547 12548 #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0 12549 #define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F 12550 #define DRV_MB_PARAM_OV_CURR_CFG_NONE 0 12551 #define DRV_MB_PARAM_OV_CURR_CFG_OS 1 12552 #define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC 2 12553 #define DRV_MB_PARAM_OV_CURR_CFG_OTHER 3 12554 12555 #define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT 0 12556 #define DRV_MB_PARAM_OV_STORM_FW_VER_MASK 0xFFFFFFFF 12557 #define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK 0xFF000000 12558 #define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK 0x00FF0000 12559 #define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK 0x0000FF00 12560 #define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK 0x000000FF 12561 12562 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT 0 12563 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK 0xF 12564 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN 0x1 12565 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED 0x2 12566 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING 0x3 12567 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED 0x4 12568 #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE 0x5 12569 12570 #define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT 0 12571 #define DRV_MB_PARAM_OV_MTU_SIZE_MASK 0xFFFFFFFF 12572 12573 #define DRV_MB_PARAM_WOL_MASK (DRV_MB_PARAM_WOL_DEFAULT | \ 12574 DRV_MB_PARAM_WOL_DISABLED | \ 12575 DRV_MB_PARAM_WOL_ENABLED) 12576 #define DRV_MB_PARAM_WOL_DEFAULT DRV_MB_PARAM_UNLOAD_WOL_MCP 12577 #define DRV_MB_PARAM_WOL_DISABLED DRV_MB_PARAM_UNLOAD_WOL_DISABLED 12578 #define DRV_MB_PARAM_WOL_ENABLED DRV_MB_PARAM_UNLOAD_WOL_ENABLED 12579 12580 #define DRV_MB_PARAM_ESWITCH_MODE_MASK (DRV_MB_PARAM_ESWITCH_MODE_NONE | \ 12581 DRV_MB_PARAM_ESWITCH_MODE_VEB | \ 12582 DRV_MB_PARAM_ESWITCH_MODE_VEPA) 12583 #define DRV_MB_PARAM_ESWITCH_MODE_NONE 0x0 12584 #define DRV_MB_PARAM_ESWITCH_MODE_VEB 0x1 12585 #define DRV_MB_PARAM_ESWITCH_MODE_VEPA 0x2 12586 12587 #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_MASK 0x1 12588 #define DRV_MB_PARAM_DUMMY_OEM_UPDATES_OFFSET 0 12589 12590 #define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0 12591 #define DRV_MB_PARAM_SET_LED_MODE_ON 0x1 12592 #define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2 12593 12594 #define DRV_MB_PARAM_TRANSCEIVER_PORT_OFFSET 0 12595 #define DRV_MB_PARAM_TRANSCEIVER_PORT_MASK 0x00000003 12596 #define DRV_MB_PARAM_TRANSCEIVER_SIZE_OFFSET 2 12597 #define DRV_MB_PARAM_TRANSCEIVER_SIZE_MASK 0x000000FC 12598 #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_OFFSET 8 12599 #define DRV_MB_PARAM_TRANSCEIVER_I2C_ADDRESS_MASK 0x0000FF00 12600 #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_OFFSET 16 12601 #define DRV_MB_PARAM_TRANSCEIVER_OFFSET_MASK 0xFFFF0000 12602 12603 /* Resource Allocation params - Driver version support */ 12604 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000 12605 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 12606 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF 12607 #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 12608 12609 #define DRV_MB_PARAM_BIST_REGISTER_TEST 1 12610 #define DRV_MB_PARAM_BIST_CLOCK_TEST 2 12611 #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3 12612 #define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX 4 12613 12614 #define DRV_MB_PARAM_BIST_RC_UNKNOWN 0 12615 #define DRV_MB_PARAM_BIST_RC_PASSED 1 12616 #define DRV_MB_PARAM_BIST_RC_FAILED 2 12617 #define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER 3 12618 12619 #define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT 0 12620 #define DRV_MB_PARAM_BIST_TEST_INDEX_MASK 0x000000FF 12621 #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT 8 12622 #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK 0x0000FF00 12623 12624 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000FFFF 12625 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0 12626 #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002 12627 #define DRV_MB_PARAM_FEATURE_SUPPORT_FUNC_VLINK 0x00010000 12628 12629 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_SHIFT 0 12630 #define DRV_MB_PARAM_NVM_CFG_OPTION_ID_MASK 0x0000FFFF 12631 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_SHIFT 16 12632 #define DRV_MB_PARAM_NVM_CFG_OPTION_ALL_MASK 0x00010000 12633 #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_SHIFT 17 12634 #define DRV_MB_PARAM_NVM_CFG_OPTION_INIT_MASK 0x00020000 12635 #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_SHIFT 18 12636 #define DRV_MB_PARAM_NVM_CFG_OPTION_COMMIT_MASK 0x00040000 12637 #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_SHIFT 19 12638 #define DRV_MB_PARAM_NVM_CFG_OPTION_FREE_MASK 0x00080000 12639 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_SHIFT 20 12640 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_SEL_MASK 0x00100000 12641 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_SHIFT 24 12642 #define DRV_MB_PARAM_NVM_CFG_OPTION_ENTITY_ID_MASK 0x0f000000 12643 12644 u32 fw_mb_header; 12645 #define FW_MSG_CODE_MASK 0xffff0000 12646 #define FW_MSG_CODE_UNSUPPORTED 0x00000000 12647 #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000 12648 #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000 12649 #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000 12650 #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000 12651 #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000 12652 #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000 12653 #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000 12654 #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000 12655 #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000 12656 #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000 12657 #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000 12658 #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000 12659 #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000 12660 #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000 12661 #define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000 12662 #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000 12663 #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000 12664 #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000 12665 #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000 12666 12667 #define FW_MSG_CODE_NVM_OK 0x00010000 12668 #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000 12669 #define FW_MSG_CODE_PHY_OK 0x00110000 12670 #define FW_MSG_CODE_OK 0x00160000 12671 #define FW_MSG_CODE_ERROR 0x00170000 12672 #define FW_MSG_CODE_TRANSCEIVER_DIAG_OK 0x00160000 12673 #define FW_MSG_CODE_TRANSCEIVER_DIAG_ERROR 0x00170000 12674 #define FW_MSG_CODE_TRANSCEIVER_NOT_PRESENT 0x00020000 12675 12676 #define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000 12677 #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000 12678 #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000 12679 #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff 12680 12681 u32 fw_mb_param; 12682 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000 12683 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16 12684 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF 12685 #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0 12686 12687 /* get pf rdma protocol command responce */ 12688 #define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0 12689 #define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1 12690 #define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2 12691 #define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3 12692 12693 /* get MFW feature support response */ 12694 #define FW_MB_PARAM_FEATURE_SUPPORT_SMARTLINQ 0x00000001 12695 #define FW_MB_PARAM_FEATURE_SUPPORT_EEE 0x00000002 12696 #define FW_MB_PARAM_FEATURE_SUPPORT_VLINK 0x00010000 12697 12698 #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR (1 << 0) 12699 12700 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_MASK 0x00000001 12701 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALID_SHIFT 0 12702 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_MASK 0x00000002 12703 #define FW_MB_PARAM_ENG_CFG_FIR_AFFIN_VALUE_SHIFT 1 12704 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_MASK 0x00000004 12705 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALID_SHIFT 2 12706 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_MASK 0x00000008 12707 #define FW_MB_PARAM_ENG_CFG_L2_AFFIN_VALUE_SHIFT 3 12708 12709 #define FW_MB_PARAM_PPFID_BITMAP_MASK 0xFF 12710 #define FW_MB_PARAM_PPFID_BITMAP_SHIFT 0 12711 12712 u32 drv_pulse_mb; 12713 #define DRV_PULSE_SEQ_MASK 0x00007fff 12714 #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000 12715 #define DRV_PULSE_ALWAYS_ALIVE 0x00008000 12716 12717 u32 mcp_pulse_mb; 12718 #define MCP_PULSE_SEQ_MASK 0x00007fff 12719 #define MCP_PULSE_ALWAYS_ALIVE 0x00008000 12720 #define MCP_EVENT_MASK 0xffff0000 12721 #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000 12722 12723 union drv_union_data union_data; 12724 }; 12725 12726 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_MASK 0x00ffffff 12727 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_OFFSET_SHIFT 0 12728 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_MASK 0xff000000 12729 #define FW_MB_PARAM_NVM_PUT_FILE_REQ_SIZE_SHIFT 24 12730 12731 enum MFW_DRV_MSG_TYPE { 12732 MFW_DRV_MSG_LINK_CHANGE, 12733 MFW_DRV_MSG_FLR_FW_ACK_FAILED, 12734 MFW_DRV_MSG_VF_DISABLED, 12735 MFW_DRV_MSG_LLDP_DATA_UPDATED, 12736 MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED, 12737 MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED, 12738 MFW_DRV_MSG_ERROR_RECOVERY, 12739 MFW_DRV_MSG_BW_UPDATE, 12740 MFW_DRV_MSG_S_TAG_UPDATE, 12741 MFW_DRV_MSG_GET_LAN_STATS, 12742 MFW_DRV_MSG_GET_FCOE_STATS, 12743 MFW_DRV_MSG_GET_ISCSI_STATS, 12744 MFW_DRV_MSG_GET_RDMA_STATS, 12745 MFW_DRV_MSG_BW_UPDATE10, 12746 MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE, 12747 MFW_DRV_MSG_BW_UPDATE11, 12748 MFW_DRV_MSG_RESERVED, 12749 MFW_DRV_MSG_GET_TLV_REQ, 12750 MFW_DRV_MSG_OEM_CFG_UPDATE, 12751 MFW_DRV_MSG_MAX 12752 }; 12753 12754 #define MFW_DRV_MSG_MAX_DWORDS(msgs) (((msgs - 1) >> 2) + 1) 12755 #define MFW_DRV_MSG_DWORD(msg_id) (msg_id >> 2) 12756 #define MFW_DRV_MSG_OFFSET(msg_id) ((msg_id & 0x3) << 3) 12757 #define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id)) 12758 12759 struct public_mfw_mb { 12760 u32 sup_msgs; 12761 u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 12762 u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)]; 12763 }; 12764 12765 enum public_sections { 12766 PUBLIC_DRV_MB, 12767 PUBLIC_MFW_MB, 12768 PUBLIC_GLOBAL, 12769 PUBLIC_PATH, 12770 PUBLIC_PORT, 12771 PUBLIC_FUNC, 12772 PUBLIC_MAX_SECTIONS 12773 }; 12774 12775 struct mcp_public_data { 12776 u32 num_sections; 12777 u32 sections[PUBLIC_MAX_SECTIONS]; 12778 struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX]; 12779 struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX]; 12780 struct public_global global; 12781 struct public_path path[MCP_GLOB_PATH_MAX]; 12782 struct public_port port[MCP_GLOB_PORT_MAX]; 12783 struct public_func func[MCP_GLOB_FUNC_MAX]; 12784 }; 12785 12786 #define MAX_I2C_TRANSACTION_SIZE 16 12787 12788 /* OCBB definitions */ 12789 enum tlvs { 12790 /* Category 1: Device Properties */ 12791 DRV_TLV_CLP_STR, 12792 DRV_TLV_CLP_STR_CTD, 12793 /* Category 6: Device Configuration */ 12794 DRV_TLV_SCSI_TO, 12795 DRV_TLV_R_T_TOV, 12796 DRV_TLV_R_A_TOV, 12797 DRV_TLV_E_D_TOV, 12798 DRV_TLV_CR_TOV, 12799 DRV_TLV_BOOT_TYPE, 12800 /* Category 8: Port Configuration */ 12801 DRV_TLV_NPIV_ENABLED, 12802 /* Category 10: Function Configuration */ 12803 DRV_TLV_FEATURE_FLAGS, 12804 DRV_TLV_LOCAL_ADMIN_ADDR, 12805 DRV_TLV_ADDITIONAL_MAC_ADDR_1, 12806 DRV_TLV_ADDITIONAL_MAC_ADDR_2, 12807 DRV_TLV_LSO_MAX_OFFLOAD_SIZE, 12808 DRV_TLV_LSO_MIN_SEGMENT_COUNT, 12809 DRV_TLV_PROMISCUOUS_MODE, 12810 DRV_TLV_TX_DESCRIPTORS_QUEUE_SIZE, 12811 DRV_TLV_RX_DESCRIPTORS_QUEUE_SIZE, 12812 DRV_TLV_NUM_OF_NET_QUEUE_VMQ_CFG, 12813 DRV_TLV_FLEX_NIC_OUTER_VLAN_ID, 12814 DRV_TLV_OS_DRIVER_STATES, 12815 DRV_TLV_PXE_BOOT_PROGRESS, 12816 /* Category 12: FC/FCoE Configuration */ 12817 DRV_TLV_NPIV_STATE, 12818 DRV_TLV_NUM_OF_NPIV_IDS, 12819 DRV_TLV_SWITCH_NAME, 12820 DRV_TLV_SWITCH_PORT_NUM, 12821 DRV_TLV_SWITCH_PORT_ID, 12822 DRV_TLV_VENDOR_NAME, 12823 DRV_TLV_SWITCH_MODEL, 12824 DRV_TLV_SWITCH_FW_VER, 12825 DRV_TLV_QOS_PRIORITY_PER_802_1P, 12826 DRV_TLV_PORT_ALIAS, 12827 DRV_TLV_PORT_STATE, 12828 DRV_TLV_FIP_TX_DESCRIPTORS_QUEUE_SIZE, 12829 DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_SIZE, 12830 DRV_TLV_LINK_FAILURE_COUNT, 12831 DRV_TLV_FCOE_BOOT_PROGRESS, 12832 /* Category 13: iSCSI Configuration */ 12833 DRV_TLV_TARGET_LLMNR_ENABLED, 12834 DRV_TLV_HEADER_DIGEST_FLAG_ENABLED, 12835 DRV_TLV_DATA_DIGEST_FLAG_ENABLED, 12836 DRV_TLV_AUTHENTICATION_METHOD, 12837 DRV_TLV_ISCSI_BOOT_TARGET_PORTAL, 12838 DRV_TLV_MAX_FRAME_SIZE, 12839 DRV_TLV_PDU_TX_DESCRIPTORS_QUEUE_SIZE, 12840 DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_SIZE, 12841 DRV_TLV_ISCSI_BOOT_PROGRESS, 12842 /* Category 20: Device Data */ 12843 DRV_TLV_PCIE_BUS_RX_UTILIZATION, 12844 DRV_TLV_PCIE_BUS_TX_UTILIZATION, 12845 DRV_TLV_DEVICE_CPU_CORES_UTILIZATION, 12846 DRV_TLV_LAST_VALID_DCC_TLV_RECEIVED, 12847 DRV_TLV_NCSI_RX_BYTES_RECEIVED, 12848 DRV_TLV_NCSI_TX_BYTES_SENT, 12849 /* Category 22: Base Port Data */ 12850 DRV_TLV_RX_DISCARDS, 12851 DRV_TLV_RX_ERRORS, 12852 DRV_TLV_TX_ERRORS, 12853 DRV_TLV_TX_DISCARDS, 12854 DRV_TLV_RX_FRAMES_RECEIVED, 12855 DRV_TLV_TX_FRAMES_SENT, 12856 /* Category 23: FC/FCoE Port Data */ 12857 DRV_TLV_RX_BROADCAST_PACKETS, 12858 DRV_TLV_TX_BROADCAST_PACKETS, 12859 /* Category 28: Base Function Data */ 12860 DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV4, 12861 DRV_TLV_NUM_OFFLOADED_CONNECTIONS_TCP_IPV6, 12862 DRV_TLV_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 12863 DRV_TLV_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 12864 DRV_TLV_PF_RX_FRAMES_RECEIVED, 12865 DRV_TLV_RX_BYTES_RECEIVED, 12866 DRV_TLV_PF_TX_FRAMES_SENT, 12867 DRV_TLV_TX_BYTES_SENT, 12868 DRV_TLV_IOV_OFFLOAD, 12869 DRV_TLV_PCI_ERRORS_CAP_ID, 12870 DRV_TLV_UNCORRECTABLE_ERROR_STATUS, 12871 DRV_TLV_UNCORRECTABLE_ERROR_MASK, 12872 DRV_TLV_CORRECTABLE_ERROR_STATUS, 12873 DRV_TLV_CORRECTABLE_ERROR_MASK, 12874 DRV_TLV_PCI_ERRORS_AECC_REGISTER, 12875 DRV_TLV_TX_QUEUES_EMPTY, 12876 DRV_TLV_RX_QUEUES_EMPTY, 12877 DRV_TLV_TX_QUEUES_FULL, 12878 DRV_TLV_RX_QUEUES_FULL, 12879 /* Category 29: FC/FCoE Function Data */ 12880 DRV_TLV_FCOE_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 12881 DRV_TLV_FCOE_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 12882 DRV_TLV_FCOE_RX_FRAMES_RECEIVED, 12883 DRV_TLV_FCOE_RX_BYTES_RECEIVED, 12884 DRV_TLV_FCOE_TX_FRAMES_SENT, 12885 DRV_TLV_FCOE_TX_BYTES_SENT, 12886 DRV_TLV_CRC_ERROR_COUNT, 12887 DRV_TLV_CRC_ERROR_1_RECEIVED_SOURCE_FC_ID, 12888 DRV_TLV_CRC_ERROR_1_TIMESTAMP, 12889 DRV_TLV_CRC_ERROR_2_RECEIVED_SOURCE_FC_ID, 12890 DRV_TLV_CRC_ERROR_2_TIMESTAMP, 12891 DRV_TLV_CRC_ERROR_3_RECEIVED_SOURCE_FC_ID, 12892 DRV_TLV_CRC_ERROR_3_TIMESTAMP, 12893 DRV_TLV_CRC_ERROR_4_RECEIVED_SOURCE_FC_ID, 12894 DRV_TLV_CRC_ERROR_4_TIMESTAMP, 12895 DRV_TLV_CRC_ERROR_5_RECEIVED_SOURCE_FC_ID, 12896 DRV_TLV_CRC_ERROR_5_TIMESTAMP, 12897 DRV_TLV_LOSS_OF_SYNC_ERROR_COUNT, 12898 DRV_TLV_LOSS_OF_SIGNAL_ERRORS, 12899 DRV_TLV_PRIMITIVE_SEQUENCE_PROTOCOL_ERROR_COUNT, 12900 DRV_TLV_DISPARITY_ERROR_COUNT, 12901 DRV_TLV_CODE_VIOLATION_ERROR_COUNT, 12902 DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_1, 12903 DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_2, 12904 DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_3, 12905 DRV_TLV_LAST_FLOGI_ISSUED_COMMON_PARAMETERS_WORD_4, 12906 DRV_TLV_LAST_FLOGI_TIMESTAMP, 12907 DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_1, 12908 DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_2, 12909 DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_3, 12910 DRV_TLV_LAST_FLOGI_ACC_COMMON_PARAMETERS_WORD_4, 12911 DRV_TLV_LAST_FLOGI_ACC_TIMESTAMP, 12912 DRV_TLV_LAST_FLOGI_RJT, 12913 DRV_TLV_LAST_FLOGI_RJT_TIMESTAMP, 12914 DRV_TLV_FDISCS_SENT_COUNT, 12915 DRV_TLV_FDISC_ACCS_RECEIVED, 12916 DRV_TLV_FDISC_RJTS_RECEIVED, 12917 DRV_TLV_PLOGI_SENT_COUNT, 12918 DRV_TLV_PLOGI_ACCS_RECEIVED, 12919 DRV_TLV_PLOGI_RJTS_RECEIVED, 12920 DRV_TLV_PLOGI_1_SENT_DESTINATION_FC_ID, 12921 DRV_TLV_PLOGI_1_TIMESTAMP, 12922 DRV_TLV_PLOGI_2_SENT_DESTINATION_FC_ID, 12923 DRV_TLV_PLOGI_2_TIMESTAMP, 12924 DRV_TLV_PLOGI_3_SENT_DESTINATION_FC_ID, 12925 DRV_TLV_PLOGI_3_TIMESTAMP, 12926 DRV_TLV_PLOGI_4_SENT_DESTINATION_FC_ID, 12927 DRV_TLV_PLOGI_4_TIMESTAMP, 12928 DRV_TLV_PLOGI_5_SENT_DESTINATION_FC_ID, 12929 DRV_TLV_PLOGI_5_TIMESTAMP, 12930 DRV_TLV_PLOGI_1_ACC_RECEIVED_SOURCE_FC_ID, 12931 DRV_TLV_PLOGI_1_ACC_TIMESTAMP, 12932 DRV_TLV_PLOGI_2_ACC_RECEIVED_SOURCE_FC_ID, 12933 DRV_TLV_PLOGI_2_ACC_TIMESTAMP, 12934 DRV_TLV_PLOGI_3_ACC_RECEIVED_SOURCE_FC_ID, 12935 DRV_TLV_PLOGI_3_ACC_TIMESTAMP, 12936 DRV_TLV_PLOGI_4_ACC_RECEIVED_SOURCE_FC_ID, 12937 DRV_TLV_PLOGI_4_ACC_TIMESTAMP, 12938 DRV_TLV_PLOGI_5_ACC_RECEIVED_SOURCE_FC_ID, 12939 DRV_TLV_PLOGI_5_ACC_TIMESTAMP, 12940 DRV_TLV_LOGOS_ISSUED, 12941 DRV_TLV_LOGO_ACCS_RECEIVED, 12942 DRV_TLV_LOGO_RJTS_RECEIVED, 12943 DRV_TLV_LOGO_1_RECEIVED_SOURCE_FC_ID, 12944 DRV_TLV_LOGO_1_TIMESTAMP, 12945 DRV_TLV_LOGO_2_RECEIVED_SOURCE_FC_ID, 12946 DRV_TLV_LOGO_2_TIMESTAMP, 12947 DRV_TLV_LOGO_3_RECEIVED_SOURCE_FC_ID, 12948 DRV_TLV_LOGO_3_TIMESTAMP, 12949 DRV_TLV_LOGO_4_RECEIVED_SOURCE_FC_ID, 12950 DRV_TLV_LOGO_4_TIMESTAMP, 12951 DRV_TLV_LOGO_5_RECEIVED_SOURCE_FC_ID, 12952 DRV_TLV_LOGO_5_TIMESTAMP, 12953 DRV_TLV_LOGOS_RECEIVED, 12954 DRV_TLV_ACCS_ISSUED, 12955 DRV_TLV_PRLIS_ISSUED, 12956 DRV_TLV_ACCS_RECEIVED, 12957 DRV_TLV_ABTS_SENT_COUNT, 12958 DRV_TLV_ABTS_ACCS_RECEIVED, 12959 DRV_TLV_ABTS_RJTS_RECEIVED, 12960 DRV_TLV_ABTS_1_SENT_DESTINATION_FC_ID, 12961 DRV_TLV_ABTS_1_TIMESTAMP, 12962 DRV_TLV_ABTS_2_SENT_DESTINATION_FC_ID, 12963 DRV_TLV_ABTS_2_TIMESTAMP, 12964 DRV_TLV_ABTS_3_SENT_DESTINATION_FC_ID, 12965 DRV_TLV_ABTS_3_TIMESTAMP, 12966 DRV_TLV_ABTS_4_SENT_DESTINATION_FC_ID, 12967 DRV_TLV_ABTS_4_TIMESTAMP, 12968 DRV_TLV_ABTS_5_SENT_DESTINATION_FC_ID, 12969 DRV_TLV_ABTS_5_TIMESTAMP, 12970 DRV_TLV_RSCNS_RECEIVED, 12971 DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_1, 12972 DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_2, 12973 DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_3, 12974 DRV_TLV_LAST_RSCN_RECEIVED_N_PORT_4, 12975 DRV_TLV_LUN_RESETS_ISSUED, 12976 DRV_TLV_ABORT_TASK_SETS_ISSUED, 12977 DRV_TLV_TPRLOS_SENT, 12978 DRV_TLV_NOS_SENT_COUNT, 12979 DRV_TLV_NOS_RECEIVED_COUNT, 12980 DRV_TLV_OLS_COUNT, 12981 DRV_TLV_LR_COUNT, 12982 DRV_TLV_LRR_COUNT, 12983 DRV_TLV_LIP_SENT_COUNT, 12984 DRV_TLV_LIP_RECEIVED_COUNT, 12985 DRV_TLV_EOFA_COUNT, 12986 DRV_TLV_EOFNI_COUNT, 12987 DRV_TLV_SCSI_STATUS_CHECK_CONDITION_COUNT, 12988 DRV_TLV_SCSI_STATUS_CONDITION_MET_COUNT, 12989 DRV_TLV_SCSI_STATUS_BUSY_COUNT, 12990 DRV_TLV_SCSI_STATUS_INTERMEDIATE_COUNT, 12991 DRV_TLV_SCSI_STATUS_INTERMEDIATE_CONDITION_MET_COUNT, 12992 DRV_TLV_SCSI_STATUS_RESERVATION_CONFLICT_COUNT, 12993 DRV_TLV_SCSI_STATUS_TASK_SET_FULL_COUNT, 12994 DRV_TLV_SCSI_STATUS_ACA_ACTIVE_COUNT, 12995 DRV_TLV_SCSI_STATUS_TASK_ABORTED_COUNT, 12996 DRV_TLV_SCSI_CHECK_CONDITION_1_RECEIVED_SK_ASC_ASCQ, 12997 DRV_TLV_SCSI_CHECK_1_TIMESTAMP, 12998 DRV_TLV_SCSI_CHECK_CONDITION_2_RECEIVED_SK_ASC_ASCQ, 12999 DRV_TLV_SCSI_CHECK_2_TIMESTAMP, 13000 DRV_TLV_SCSI_CHECK_CONDITION_3_RECEIVED_SK_ASC_ASCQ, 13001 DRV_TLV_SCSI_CHECK_3_TIMESTAMP, 13002 DRV_TLV_SCSI_CHECK_CONDITION_4_RECEIVED_SK_ASC_ASCQ, 13003 DRV_TLV_SCSI_CHECK_4_TIMESTAMP, 13004 DRV_TLV_SCSI_CHECK_CONDITION_5_RECEIVED_SK_ASC_ASCQ, 13005 DRV_TLV_SCSI_CHECK_5_TIMESTAMP, 13006 /* Category 30: iSCSI Function Data */ 13007 DRV_TLV_PDU_TX_DESCRIPTOR_QUEUE_AVG_DEPTH, 13008 DRV_TLV_PDU_RX_DESCRIPTORS_QUEUE_AVG_DEPTH, 13009 DRV_TLV_ISCSI_PDU_RX_FRAMES_RECEIVED, 13010 DRV_TLV_ISCSI_PDU_RX_BYTES_RECEIVED, 13011 DRV_TLV_ISCSI_PDU_TX_FRAMES_SENT, 13012 DRV_TLV_ISCSI_PDU_TX_BYTES_SENT 13013 }; 13014 13015 struct nvm_cfg_mac_address { 13016 u32 mac_addr_hi; 13017 #define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000FFFF 13018 #define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0 13019 u32 mac_addr_lo; 13020 }; 13021 13022 struct nvm_cfg1_glob { 13023 u32 generic_cont0; 13024 #define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000FF0 13025 #define NVM_CFG1_GLOB_MF_MODE_OFFSET 4 13026 #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0 13027 #define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1 13028 #define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2 13029 #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3 13030 #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4 13031 #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5 13032 #define NVM_CFG1_GLOB_MF_MODE_BD 0x6 13033 #define NVM_CFG1_GLOB_MF_MODE_UFP 0x7 13034 u32 engineering_change[3]; 13035 u32 manufacturing_id; 13036 u32 serial_number[4]; 13037 u32 pcie_cfg; 13038 u32 mgmt_traffic; 13039 u32 core_cfg; 13040 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000FF 13041 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0 13042 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G 0x0 13043 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G 0x1 13044 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G 0x2 13045 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F 0x3 13046 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E 0x4 13047 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G 0x5 13048 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G 0xB 13049 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G 0xC 13050 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G 0xD 13051 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G 0xE 13052 #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G 0xF 13053 13054 u32 e_lane_cfg1; 13055 u32 e_lane_cfg2; 13056 u32 f_lane_cfg1; 13057 u32 f_lane_cfg2; 13058 u32 mps10_preemphasis; 13059 u32 mps10_driver_current; 13060 u32 mps25_preemphasis; 13061 u32 mps25_driver_current; 13062 u32 pci_id; 13063 u32 pci_subsys_id; 13064 u32 bar; 13065 u32 mps10_txfir_main; 13066 u32 mps10_txfir_post; 13067 u32 mps25_txfir_main; 13068 u32 mps25_txfir_post; 13069 u32 manufacture_ver; 13070 u32 manufacture_time; 13071 u32 led_global_settings; 13072 u32 generic_cont1; 13073 u32 mbi_version; 13074 #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000FF 13075 #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0 13076 #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000FF00 13077 #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8 13078 #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00FF0000 13079 #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16 13080 u32 mbi_date; 13081 u32 misc_sig; 13082 u32 device_capabilities; 13083 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1 13084 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE 0x2 13085 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI 0x4 13086 #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE 0x8 13087 u32 power_dissipated; 13088 u32 power_consumed; 13089 u32 efi_version; 13090 u32 multi_network_modes_capability; 13091 u32 reserved[41]; 13092 }; 13093 13094 struct nvm_cfg1_path { 13095 u32 reserved[30]; 13096 }; 13097 13098 struct nvm_cfg1_port { 13099 u32 reserved__m_relocated_to_option_123; 13100 u32 reserved__m_relocated_to_option_124; 13101 u32 generic_cont0; 13102 #define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000F0000 13103 #define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16 13104 #define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0 13105 #define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1 13106 #define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2 13107 #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3 13108 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00F00000 13109 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20 13110 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1 13111 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2 13112 #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4 13113 u32 pcie_cfg; 13114 u32 features; 13115 u32 speed_cap_mask; 13116 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000FFFF 13117 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0 13118 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1 13119 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2 13120 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_20G 0x4 13121 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8 13122 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10 13123 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20 13124 #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G 0x40 13125 u32 link_settings; 13126 #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000F 13127 #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0 13128 #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0 13129 #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1 13130 #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2 13131 #define NVM_CFG1_PORT_DRV_LINK_SPEED_20G 0x3 13132 #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4 13133 #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5 13134 #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6 13135 #define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G 0x7 13136 #define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ 0x8 13137 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070 13138 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4 13139 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1 13140 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2 13141 #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4 13142 u32 phy_cfg; 13143 u32 mgmt_traffic; 13144 13145 u32 ext_phy; 13146 /* EEE power saving mode */ 13147 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK 0x00FF0000 13148 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET 16 13149 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED 0x0 13150 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED 0x1 13151 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE 0x2 13152 #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY 0x3 13153 13154 u32 mba_cfg1; 13155 u32 mba_cfg2; 13156 u32 vf_cfg; 13157 struct nvm_cfg_mac_address lldp_mac_address; 13158 u32 led_port_settings; 13159 u32 transceiver_00; 13160 u32 device_ids; 13161 u32 board_cfg; 13162 #define NVM_CFG1_PORT_PORT_TYPE_MASK 0x000000FF 13163 #define NVM_CFG1_PORT_PORT_TYPE_OFFSET 0 13164 #define NVM_CFG1_PORT_PORT_TYPE_UNDEFINED 0x0 13165 #define NVM_CFG1_PORT_PORT_TYPE_MODULE 0x1 13166 #define NVM_CFG1_PORT_PORT_TYPE_BACKPLANE 0x2 13167 #define NVM_CFG1_PORT_PORT_TYPE_EXT_PHY 0x3 13168 #define NVM_CFG1_PORT_PORT_TYPE_MODULE_SLAVE 0x4 13169 u32 mnm_10g_cap; 13170 u32 mnm_10g_ctrl; 13171 u32 mnm_10g_misc; 13172 u32 mnm_25g_cap; 13173 u32 mnm_25g_ctrl; 13174 u32 mnm_25g_misc; 13175 u32 mnm_40g_cap; 13176 u32 mnm_40g_ctrl; 13177 u32 mnm_40g_misc; 13178 u32 mnm_50g_cap; 13179 u32 mnm_50g_ctrl; 13180 u32 mnm_50g_misc; 13181 u32 mnm_100g_cap; 13182 u32 mnm_100g_ctrl; 13183 u32 mnm_100g_misc; 13184 u32 reserved[116]; 13185 }; 13186 13187 struct nvm_cfg1_func { 13188 struct nvm_cfg_mac_address mac_address; 13189 u32 rsrv1; 13190 u32 rsrv2; 13191 u32 device_id; 13192 u32 cmn_cfg; 13193 u32 pci_cfg; 13194 struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr; 13195 struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr; 13196 u32 preboot_generic_cfg; 13197 u32 reserved[8]; 13198 }; 13199 13200 struct nvm_cfg1 { 13201 struct nvm_cfg1_glob glob; 13202 struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX]; 13203 struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX]; 13204 struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX]; 13205 }; 13206 13207 enum spad_sections { 13208 SPAD_SECTION_TRACE, 13209 SPAD_SECTION_NVM_CFG, 13210 SPAD_SECTION_PUBLIC, 13211 SPAD_SECTION_PRIVATE, 13212 SPAD_SECTION_MAX 13213 }; 13214 13215 #define MCP_TRACE_SIZE 2048 /* 2kb */ 13216 13217 /* This section is located at a fixed location in the beginning of the 13218 * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade. 13219 * All the rest of data has a floating location which differs from version to 13220 * version, and is pointed by the mcp_meta_data below. 13221 * Moreover, the spad_layout section is part of the MFW firmware, and is loaded 13222 * with it from nvram in order to clear this portion. 13223 */ 13224 struct static_init { 13225 u32 num_sections; 13226 offsize_t sections[SPAD_SECTION_MAX]; 13227 #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_])))) 13228 13229 struct mcp_trace trace; 13230 #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace))) 13231 u8 trace_buffer[MCP_TRACE_SIZE]; 13232 #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer))) 13233 /* running_mfw has the same definition as in nvm_map.h. 13234 * This bit indicate both the running dir, and the running bundle. 13235 * It is set once when the LIM is loaded. 13236 */ 13237 u32 running_mfw; 13238 #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw)))) 13239 u32 build_time; 13240 #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time)))) 13241 u32 reset_type; 13242 #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type)))) 13243 u32 mfw_secure_mode; 13244 #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode)))) 13245 u16 pme_status_pf_bitmap; 13246 #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap)))) 13247 u16 pme_enable_pf_bitmap; 13248 #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap)))) 13249 u32 mim_nvm_addr; 13250 u32 mim_start_addr; 13251 u32 ah_pcie_link_params; 13252 #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff) 13253 #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0) 13254 #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00) 13255 #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8) 13256 #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000) 13257 #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16) 13258 #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000) 13259 #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24) 13260 #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params)))) 13261 13262 u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */ 13263 }; 13264 13265 #define NVM_MAGIC_VALUE 0x669955aa 13266 13267 enum nvm_image_type { 13268 NVM_TYPE_TIM1 = 0x01, 13269 NVM_TYPE_TIM2 = 0x02, 13270 NVM_TYPE_MIM1 = 0x03, 13271 NVM_TYPE_MIM2 = 0x04, 13272 NVM_TYPE_MBA = 0x05, 13273 NVM_TYPE_MODULES_PN = 0x06, 13274 NVM_TYPE_VPD = 0x07, 13275 NVM_TYPE_MFW_TRACE1 = 0x08, 13276 NVM_TYPE_MFW_TRACE2 = 0x09, 13277 NVM_TYPE_NVM_CFG1 = 0x0a, 13278 NVM_TYPE_L2B = 0x0b, 13279 NVM_TYPE_DIR1 = 0x0c, 13280 NVM_TYPE_EAGLE_FW1 = 0x0d, 13281 NVM_TYPE_FALCON_FW1 = 0x0e, 13282 NVM_TYPE_PCIE_FW1 = 0x0f, 13283 NVM_TYPE_HW_SET = 0x10, 13284 NVM_TYPE_LIM = 0x11, 13285 NVM_TYPE_AVS_FW1 = 0x12, 13286 NVM_TYPE_DIR2 = 0x13, 13287 NVM_TYPE_CCM = 0x14, 13288 NVM_TYPE_EAGLE_FW2 = 0x15, 13289 NVM_TYPE_FALCON_FW2 = 0x16, 13290 NVM_TYPE_PCIE_FW2 = 0x17, 13291 NVM_TYPE_AVS_FW2 = 0x18, 13292 NVM_TYPE_INIT_HW = 0x19, 13293 NVM_TYPE_DEFAULT_CFG = 0x1a, 13294 NVM_TYPE_MDUMP = 0x1b, 13295 NVM_TYPE_META = 0x1c, 13296 NVM_TYPE_ISCSI_CFG = 0x1d, 13297 NVM_TYPE_FCOE_CFG = 0x1f, 13298 NVM_TYPE_ETH_PHY_FW1 = 0x20, 13299 NVM_TYPE_ETH_PHY_FW2 = 0x21, 13300 NVM_TYPE_BDN = 0x22, 13301 NVM_TYPE_8485X_PHY_FW = 0x23, 13302 NVM_TYPE_PUB_KEY = 0x24, 13303 NVM_TYPE_RECOVERY = 0x25, 13304 NVM_TYPE_PLDM = 0x26, 13305 NVM_TYPE_UPK1 = 0x27, 13306 NVM_TYPE_UPK2 = 0x28, 13307 NVM_TYPE_MASTER_KC = 0x29, 13308 NVM_TYPE_BACKUP_KC = 0x2a, 13309 NVM_TYPE_HW_DUMP = 0x2b, 13310 NVM_TYPE_HW_DUMP_OUT = 0x2c, 13311 NVM_TYPE_BIN_NVM_META = 0x30, 13312 NVM_TYPE_ROM_TEST = 0xf0, 13313 NVM_TYPE_88X33X0_PHY_FW = 0x31, 13314 NVM_TYPE_88X33X0_PHY_SLAVE_FW = 0x32, 13315 NVM_TYPE_MAX, 13316 }; 13317 13318 #define DIR_ID_1 (0) 13319 13320 #endif 13321