162306a36Sopenharmony_ci/* This file is part of the Emulex RoCE Device Driver for 262306a36Sopenharmony_ci * RoCE (RDMA over Converged Ethernet) adapters. 362306a36Sopenharmony_ci * Copyright (C) 2012-2015 Emulex. All rights reserved. 462306a36Sopenharmony_ci * EMULEX and SLI are trademarks of Emulex. 562306a36Sopenharmony_ci * www.emulex.com 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * This software is available to you under a choice of one of two licenses. 862306a36Sopenharmony_ci * You may choose to be licensed under the terms of the GNU General Public 962306a36Sopenharmony_ci * License (GPL) Version 2, available from the file COPYING in the main 1062306a36Sopenharmony_ci * directory of this source tree, or the BSD license below: 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * Redistribution and use in source and binary forms, with or without 1362306a36Sopenharmony_ci * modification, are permitted provided that the following conditions 1462306a36Sopenharmony_ci * are met: 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci * - Redistributions of source code must retain the above copyright notice, 1762306a36Sopenharmony_ci * this list of conditions and the following disclaimer. 1862306a36Sopenharmony_ci * 1962306a36Sopenharmony_ci * - Redistributions in binary form must reproduce the above copyright 2062306a36Sopenharmony_ci * notice, this list of conditions and the following disclaimer in 2162306a36Sopenharmony_ci * the documentation and/or other materials provided with the distribution. 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 2462306a36Sopenharmony_ci * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,THE 2562306a36Sopenharmony_ci * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2662306a36Sopenharmony_ci * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 2762306a36Sopenharmony_ci * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2862306a36Sopenharmony_ci * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2962306a36Sopenharmony_ci * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 3062306a36Sopenharmony_ci * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 3162306a36Sopenharmony_ci * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 3262306a36Sopenharmony_ci * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 3362306a36Sopenharmony_ci * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3462306a36Sopenharmony_ci * 3562306a36Sopenharmony_ci * Contact Information: 3662306a36Sopenharmony_ci * linux-drivers@emulex.com 3762306a36Sopenharmony_ci * 3862306a36Sopenharmony_ci * Emulex 3962306a36Sopenharmony_ci * 3333 Susan Street 4062306a36Sopenharmony_ci * Costa Mesa, CA 92626 4162306a36Sopenharmony_ci */ 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci#ifndef __OCRDMA_SLI_H__ 4462306a36Sopenharmony_ci#define __OCRDMA_SLI_H__ 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_cienum { 4762306a36Sopenharmony_ci OCRDMA_ASIC_GEN_SKH_R = 0x04, 4862306a36Sopenharmony_ci OCRDMA_ASIC_GEN_LANCER = 0x0B 4962306a36Sopenharmony_ci}; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_cienum { 5262306a36Sopenharmony_ci OCRDMA_ASIC_REV_A0 = 0x00, 5362306a36Sopenharmony_ci OCRDMA_ASIC_REV_B0 = 0x10, 5462306a36Sopenharmony_ci OCRDMA_ASIC_REV_C0 = 0x20 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define OCRDMA_SUBSYS_ROCE 10 5862306a36Sopenharmony_cienum { 5962306a36Sopenharmony_ci OCRDMA_CMD_QUERY_CONFIG = 1, 6062306a36Sopenharmony_ci OCRDMA_CMD_ALLOC_PD = 2, 6162306a36Sopenharmony_ci OCRDMA_CMD_DEALLOC_PD = 3, 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci OCRDMA_CMD_CREATE_AH_TBL = 4, 6462306a36Sopenharmony_ci OCRDMA_CMD_DELETE_AH_TBL = 5, 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci OCRDMA_CMD_CREATE_QP = 6, 6762306a36Sopenharmony_ci OCRDMA_CMD_QUERY_QP = 7, 6862306a36Sopenharmony_ci OCRDMA_CMD_MODIFY_QP = 8 , 6962306a36Sopenharmony_ci OCRDMA_CMD_DELETE_QP = 9, 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci OCRDMA_CMD_RSVD1 = 10, 7262306a36Sopenharmony_ci OCRDMA_CMD_ALLOC_LKEY = 11, 7362306a36Sopenharmony_ci OCRDMA_CMD_DEALLOC_LKEY = 12, 7462306a36Sopenharmony_ci OCRDMA_CMD_REGISTER_NSMR = 13, 7562306a36Sopenharmony_ci OCRDMA_CMD_REREGISTER_NSMR = 14, 7662306a36Sopenharmony_ci OCRDMA_CMD_REGISTER_NSMR_CONT = 15, 7762306a36Sopenharmony_ci OCRDMA_CMD_QUERY_NSMR = 16, 7862306a36Sopenharmony_ci OCRDMA_CMD_ALLOC_MW = 17, 7962306a36Sopenharmony_ci OCRDMA_CMD_QUERY_MW = 18, 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci OCRDMA_CMD_CREATE_SRQ = 19, 8262306a36Sopenharmony_ci OCRDMA_CMD_QUERY_SRQ = 20, 8362306a36Sopenharmony_ci OCRDMA_CMD_MODIFY_SRQ = 21, 8462306a36Sopenharmony_ci OCRDMA_CMD_DELETE_SRQ = 22, 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci OCRDMA_CMD_ATTACH_MCAST = 23, 8762306a36Sopenharmony_ci OCRDMA_CMD_DETACH_MCAST = 24, 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci OCRDMA_CMD_CREATE_RBQ = 25, 9062306a36Sopenharmony_ci OCRDMA_CMD_DESTROY_RBQ = 26, 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci OCRDMA_CMD_GET_RDMA_STATS = 27, 9362306a36Sopenharmony_ci OCRDMA_CMD_ALLOC_PD_RANGE = 28, 9462306a36Sopenharmony_ci OCRDMA_CMD_DEALLOC_PD_RANGE = 29, 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci OCRDMA_CMD_MAX 9762306a36Sopenharmony_ci}; 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci#define OCRDMA_SUBSYS_COMMON 1 10062306a36Sopenharmony_cienum { 10162306a36Sopenharmony_ci OCRDMA_CMD_QUERY_NTWK_LINK_CONFIG_V1 = 5, 10262306a36Sopenharmony_ci OCRDMA_CMD_CREATE_CQ = 12, 10362306a36Sopenharmony_ci OCRDMA_CMD_CREATE_EQ = 13, 10462306a36Sopenharmony_ci OCRDMA_CMD_CREATE_MQ = 21, 10562306a36Sopenharmony_ci OCRDMA_CMD_GET_CTRL_ATTRIBUTES = 32, 10662306a36Sopenharmony_ci OCRDMA_CMD_GET_FW_VER = 35, 10762306a36Sopenharmony_ci OCRDMA_CMD_MODIFY_EQ_DELAY = 41, 10862306a36Sopenharmony_ci OCRDMA_CMD_DELETE_MQ = 53, 10962306a36Sopenharmony_ci OCRDMA_CMD_DELETE_CQ = 54, 11062306a36Sopenharmony_ci OCRDMA_CMD_DELETE_EQ = 55, 11162306a36Sopenharmony_ci OCRDMA_CMD_GET_FW_CONFIG = 58, 11262306a36Sopenharmony_ci OCRDMA_CMD_CREATE_MQ_EXT = 90, 11362306a36Sopenharmony_ci OCRDMA_CMD_PHY_DETAILS = 102 11462306a36Sopenharmony_ci}; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_cienum { 11762306a36Sopenharmony_ci QTYPE_EQ = 1, 11862306a36Sopenharmony_ci QTYPE_CQ = 2, 11962306a36Sopenharmony_ci QTYPE_MCCQ = 3 12062306a36Sopenharmony_ci}; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci#define OCRDMA_MAX_SGID 16 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci#define OCRDMA_MAX_QP 2048 12562306a36Sopenharmony_ci#define OCRDMA_MAX_CQ 2048 12662306a36Sopenharmony_ci#define OCRDMA_MAX_STAG 16384 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_cienum { 12962306a36Sopenharmony_ci OCRDMA_DB_RQ_OFFSET = 0xE0, 13062306a36Sopenharmony_ci OCRDMA_DB_GEN2_RQ_OFFSET = 0x100, 13162306a36Sopenharmony_ci OCRDMA_DB_SQ_OFFSET = 0x60, 13262306a36Sopenharmony_ci OCRDMA_DB_GEN2_SQ_OFFSET = 0x1C0, 13362306a36Sopenharmony_ci OCRDMA_DB_SRQ_OFFSET = OCRDMA_DB_RQ_OFFSET, 13462306a36Sopenharmony_ci OCRDMA_DB_GEN2_SRQ_OFFSET = OCRDMA_DB_GEN2_RQ_OFFSET, 13562306a36Sopenharmony_ci OCRDMA_DB_CQ_OFFSET = 0x120, 13662306a36Sopenharmony_ci OCRDMA_DB_EQ_OFFSET = OCRDMA_DB_CQ_OFFSET, 13762306a36Sopenharmony_ci OCRDMA_DB_MQ_OFFSET = 0x140, 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci OCRDMA_DB_SQ_SHIFT = 16, 14062306a36Sopenharmony_ci OCRDMA_DB_RQ_SHIFT = 24 14162306a36Sopenharmony_ci}; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_cienum { 14462306a36Sopenharmony_ci OCRDMA_L3_TYPE_IB_GRH = 0x00, 14562306a36Sopenharmony_ci OCRDMA_L3_TYPE_IPV4 = 0x01, 14662306a36Sopenharmony_ci OCRDMA_L3_TYPE_IPV6 = 0x02 14762306a36Sopenharmony_ci}; 14862306a36Sopenharmony_ci 14962306a36Sopenharmony_ci#define OCRDMA_DB_CQ_RING_ID_MASK 0x3FF /* bits 0 - 9 */ 15062306a36Sopenharmony_ci#define OCRDMA_DB_CQ_RING_ID_EXT_MASK 0x0C00 /* bits 10-11 of qid at 12-11 */ 15162306a36Sopenharmony_ci/* qid #2 msbits at 12-11 */ 15262306a36Sopenharmony_ci#define OCRDMA_DB_CQ_RING_ID_EXT_MASK_SHIFT 0x1 15362306a36Sopenharmony_ci#define OCRDMA_DB_CQ_NUM_POPPED_SHIFT 16 /* bits 16 - 28 */ 15462306a36Sopenharmony_ci/* Rearm bit */ 15562306a36Sopenharmony_ci#define OCRDMA_DB_CQ_REARM_SHIFT 29 /* bit 29 */ 15662306a36Sopenharmony_ci/* solicited bit */ 15762306a36Sopenharmony_ci#define OCRDMA_DB_CQ_SOLICIT_SHIFT 31 /* bit 31 */ 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci#define OCRDMA_EQ_ID_MASK 0x1FF /* bits 0 - 8 */ 16062306a36Sopenharmony_ci#define OCRDMA_EQ_ID_EXT_MASK 0x3e00 /* bits 9-13 */ 16162306a36Sopenharmony_ci#define OCRDMA_EQ_ID_EXT_MASK_SHIFT 2 /* qid bits 9-13 at 11-15 */ 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci/* Clear the interrupt for this eq */ 16462306a36Sopenharmony_ci#define OCRDMA_EQ_CLR_SHIFT 9 /* bit 9 */ 16562306a36Sopenharmony_ci/* Must be 1 */ 16662306a36Sopenharmony_ci#define OCRDMA_EQ_TYPE_SHIFT 10 /* bit 10 */ 16762306a36Sopenharmony_ci/* Number of event entries processed */ 16862306a36Sopenharmony_ci#define OCRDMA_NUM_EQE_SHIFT 16 /* bits 16 - 28 */ 16962306a36Sopenharmony_ci/* Rearm bit */ 17062306a36Sopenharmony_ci#define OCRDMA_REARM_SHIFT 29 /* bit 29 */ 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci#define OCRDMA_MQ_ID_MASK 0x7FF /* bits 0 - 10 */ 17362306a36Sopenharmony_ci/* Number of entries posted */ 17462306a36Sopenharmony_ci#define OCRDMA_MQ_NUM_MQE_SHIFT 16 /* bits 16 - 29 */ 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#define OCRDMA_MIN_HPAGE_SIZE 4096 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci#define OCRDMA_MIN_Q_PAGE_SIZE 4096 17962306a36Sopenharmony_ci#define OCRDMA_MAX_Q_PAGES 8 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ci#define OCRDMA_SLI_ASIC_ID_OFFSET 0x9C 18262306a36Sopenharmony_ci#define OCRDMA_SLI_ASIC_REV_MASK 0x000000FF 18362306a36Sopenharmony_ci#define OCRDMA_SLI_ASIC_GEN_NUM_MASK 0x0000FF00 18462306a36Sopenharmony_ci#define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT 0x08 18562306a36Sopenharmony_ci/* 18662306a36Sopenharmony_ci# 0: 4K Bytes 18762306a36Sopenharmony_ci# 1: 8K Bytes 18862306a36Sopenharmony_ci# 2: 16K Bytes 18962306a36Sopenharmony_ci# 3: 32K Bytes 19062306a36Sopenharmony_ci# 4: 64K Bytes 19162306a36Sopenharmony_ci# 5: 128K Bytes 19262306a36Sopenharmony_ci# 6: 256K Bytes 19362306a36Sopenharmony_ci# 7: 512K Bytes 19462306a36Sopenharmony_ci*/ 19562306a36Sopenharmony_ci#define OCRDMA_MAX_Q_PAGE_SIZE_CNT 8 19662306a36Sopenharmony_ci#define OCRDMA_Q_PAGE_BASE_SIZE (OCRDMA_MIN_Q_PAGE_SIZE * OCRDMA_MAX_Q_PAGES) 19762306a36Sopenharmony_ci 19862306a36Sopenharmony_ci#define MAX_OCRDMA_QP_PAGES 8 19962306a36Sopenharmony_ci#define OCRDMA_MAX_WQE_MEM_SIZE (MAX_OCRDMA_QP_PAGES * OCRDMA_MIN_HQ_PAGE_SIZE) 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci#define OCRDMA_CREATE_CQ_MAX_PAGES 4 20262306a36Sopenharmony_ci#define OCRDMA_DPP_CQE_SIZE 4 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci#define OCRDMA_GEN2_MAX_CQE 1024 20562306a36Sopenharmony_ci#define OCRDMA_GEN2_CQ_PAGE_SIZE 4096 20662306a36Sopenharmony_ci#define OCRDMA_GEN2_WQE_SIZE 256 20762306a36Sopenharmony_ci#define OCRDMA_MAX_CQE 4095 20862306a36Sopenharmony_ci#define OCRDMA_CQ_PAGE_SIZE 16384 20962306a36Sopenharmony_ci#define OCRDMA_WQE_SIZE 128 21062306a36Sopenharmony_ci#define OCRDMA_WQE_STRIDE 8 21162306a36Sopenharmony_ci#define OCRDMA_WQE_ALIGN_BYTES 16 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci#define MAX_OCRDMA_SRQ_PAGES MAX_OCRDMA_QP_PAGES 21462306a36Sopenharmony_ci 21562306a36Sopenharmony_cienum { 21662306a36Sopenharmony_ci OCRDMA_MCH_OPCODE_SHIFT = 0, 21762306a36Sopenharmony_ci OCRDMA_MCH_OPCODE_MASK = 0xFF, 21862306a36Sopenharmony_ci OCRDMA_MCH_SUBSYS_SHIFT = 8, 21962306a36Sopenharmony_ci OCRDMA_MCH_SUBSYS_MASK = 0xFF00 22062306a36Sopenharmony_ci}; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci/* mailbox cmd header */ 22362306a36Sopenharmony_cistruct ocrdma_mbx_hdr { 22462306a36Sopenharmony_ci u32 subsys_op; 22562306a36Sopenharmony_ci u32 timeout; /* in seconds */ 22662306a36Sopenharmony_ci u32 cmd_len; 22762306a36Sopenharmony_ci u32 rsvd_version; 22862306a36Sopenharmony_ci}; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_cienum { 23162306a36Sopenharmony_ci OCRDMA_MBX_RSP_OPCODE_SHIFT = 0, 23262306a36Sopenharmony_ci OCRDMA_MBX_RSP_OPCODE_MASK = 0xFF, 23362306a36Sopenharmony_ci OCRDMA_MBX_RSP_SUBSYS_SHIFT = 8, 23462306a36Sopenharmony_ci OCRDMA_MBX_RSP_SUBSYS_MASK = 0xFF << OCRDMA_MBX_RSP_SUBSYS_SHIFT, 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci OCRDMA_MBX_RSP_STATUS_SHIFT = 0, 23762306a36Sopenharmony_ci OCRDMA_MBX_RSP_STATUS_MASK = 0xFF, 23862306a36Sopenharmony_ci OCRDMA_MBX_RSP_ASTATUS_SHIFT = 8, 23962306a36Sopenharmony_ci OCRDMA_MBX_RSP_ASTATUS_MASK = 0xFF << OCRDMA_MBX_RSP_ASTATUS_SHIFT 24062306a36Sopenharmony_ci}; 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci/* mailbox cmd response */ 24362306a36Sopenharmony_cistruct ocrdma_mbx_rsp { 24462306a36Sopenharmony_ci u32 subsys_op; 24562306a36Sopenharmony_ci u32 status; 24662306a36Sopenharmony_ci u32 rsp_len; 24762306a36Sopenharmony_ci u32 add_rsp_len; 24862306a36Sopenharmony_ci}; 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_cienum { 25162306a36Sopenharmony_ci OCRDMA_MQE_EMBEDDED = 1, 25262306a36Sopenharmony_ci OCRDMA_MQE_NONEMBEDDED = 0 25362306a36Sopenharmony_ci}; 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_cistruct ocrdma_mqe_sge { 25662306a36Sopenharmony_ci u32 pa_lo; 25762306a36Sopenharmony_ci u32 pa_hi; 25862306a36Sopenharmony_ci u32 len; 25962306a36Sopenharmony_ci}; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_cienum { 26262306a36Sopenharmony_ci OCRDMA_MQE_HDR_EMB_SHIFT = 0, 26362306a36Sopenharmony_ci OCRDMA_MQE_HDR_EMB_MASK = BIT(0), 26462306a36Sopenharmony_ci OCRDMA_MQE_HDR_SGE_CNT_SHIFT = 3, 26562306a36Sopenharmony_ci OCRDMA_MQE_HDR_SGE_CNT_MASK = 0x1F << OCRDMA_MQE_HDR_SGE_CNT_SHIFT, 26662306a36Sopenharmony_ci OCRDMA_MQE_HDR_SPECIAL_SHIFT = 24, 26762306a36Sopenharmony_ci OCRDMA_MQE_HDR_SPECIAL_MASK = 0xFF << OCRDMA_MQE_HDR_SPECIAL_SHIFT 26862306a36Sopenharmony_ci}; 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_cistruct ocrdma_mqe_hdr { 27162306a36Sopenharmony_ci u32 spcl_sge_cnt_emb; 27262306a36Sopenharmony_ci u32 pyld_len; 27362306a36Sopenharmony_ci u32 tag_lo; 27462306a36Sopenharmony_ci u32 tag_hi; 27562306a36Sopenharmony_ci u32 rsvd3; 27662306a36Sopenharmony_ci}; 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_cistruct ocrdma_mqe_emb_cmd { 27962306a36Sopenharmony_ci struct ocrdma_mbx_hdr mch; 28062306a36Sopenharmony_ci u8 pyld[220]; 28162306a36Sopenharmony_ci}; 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_cistruct ocrdma_mqe { 28462306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 28562306a36Sopenharmony_ci union { 28662306a36Sopenharmony_ci struct ocrdma_mqe_emb_cmd emb_req; 28762306a36Sopenharmony_ci struct { 28862306a36Sopenharmony_ci struct ocrdma_mqe_sge sge[19]; 28962306a36Sopenharmony_ci } nonemb_req; 29062306a36Sopenharmony_ci u8 cmd[236]; 29162306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 29262306a36Sopenharmony_ci } u; 29362306a36Sopenharmony_ci}; 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci#define OCRDMA_EQ_LEN 4096 29662306a36Sopenharmony_ci#define OCRDMA_MQ_CQ_LEN 256 29762306a36Sopenharmony_ci#define OCRDMA_MQ_LEN 128 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci#define PAGE_SHIFT_4K 12 30062306a36Sopenharmony_ci#define PAGE_SIZE_4K (1 << PAGE_SHIFT_4K) 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci/* Returns number of pages spanned by the data starting at the given addr */ 30362306a36Sopenharmony_ci#define PAGES_4K_SPANNED(_address, size) \ 30462306a36Sopenharmony_ci ((u32)((((size_t)(_address) & (PAGE_SIZE_4K - 1)) + \ 30562306a36Sopenharmony_ci (size) + (PAGE_SIZE_4K - 1)) >> PAGE_SHIFT_4K)) 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistruct ocrdma_delete_q_req { 30862306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 30962306a36Sopenharmony_ci u32 id; 31062306a36Sopenharmony_ci}; 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_cistruct ocrdma_pa { 31362306a36Sopenharmony_ci u32 lo; 31462306a36Sopenharmony_ci u32 hi; 31562306a36Sopenharmony_ci}; 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci#define MAX_OCRDMA_EQ_PAGES 8 31862306a36Sopenharmony_cistruct ocrdma_create_eq_req { 31962306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 32062306a36Sopenharmony_ci u32 num_pages; 32162306a36Sopenharmony_ci u32 valid; 32262306a36Sopenharmony_ci u32 cnt; 32362306a36Sopenharmony_ci u32 delay; 32462306a36Sopenharmony_ci u32 rsvd; 32562306a36Sopenharmony_ci struct ocrdma_pa pa[MAX_OCRDMA_EQ_PAGES]; 32662306a36Sopenharmony_ci}; 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_cienum { 32962306a36Sopenharmony_ci OCRDMA_CREATE_EQ_VALID = BIT(29), 33062306a36Sopenharmony_ci OCRDMA_CREATE_EQ_CNT_SHIFT = 26, 33162306a36Sopenharmony_ci OCRDMA_CREATE_CQ_DELAY_SHIFT = 13, 33262306a36Sopenharmony_ci}; 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_cistruct ocrdma_create_eq_rsp { 33562306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 33662306a36Sopenharmony_ci u32 vector_eqid; 33762306a36Sopenharmony_ci}; 33862306a36Sopenharmony_ci 33962306a36Sopenharmony_ci#define OCRDMA_EQ_MINOR_OTHER 0x1 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_cistruct ocrmda_set_eqd { 34262306a36Sopenharmony_ci u32 eq_id; 34362306a36Sopenharmony_ci u32 phase; 34462306a36Sopenharmony_ci u32 delay_multiplier; 34562306a36Sopenharmony_ci}; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_cistruct ocrdma_modify_eqd_cmd { 34862306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 34962306a36Sopenharmony_ci u32 num_eq; 35062306a36Sopenharmony_ci struct ocrmda_set_eqd set_eqd[8]; 35162306a36Sopenharmony_ci} __packed; 35262306a36Sopenharmony_ci 35362306a36Sopenharmony_cistruct ocrdma_modify_eqd_req { 35462306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 35562306a36Sopenharmony_ci struct ocrdma_modify_eqd_cmd cmd; 35662306a36Sopenharmony_ci}; 35762306a36Sopenharmony_ci 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_cistruct ocrdma_modify_eq_delay_rsp { 36062306a36Sopenharmony_ci struct ocrdma_mbx_rsp hdr; 36162306a36Sopenharmony_ci u32 rsvd0; 36262306a36Sopenharmony_ci} __packed; 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_cienum { 36562306a36Sopenharmony_ci OCRDMA_MCQE_STATUS_SHIFT = 0, 36662306a36Sopenharmony_ci OCRDMA_MCQE_STATUS_MASK = 0xFFFF, 36762306a36Sopenharmony_ci OCRDMA_MCQE_ESTATUS_SHIFT = 16, 36862306a36Sopenharmony_ci OCRDMA_MCQE_ESTATUS_MASK = 0xFFFF << OCRDMA_MCQE_ESTATUS_SHIFT, 36962306a36Sopenharmony_ci OCRDMA_MCQE_CONS_SHIFT = 27, 37062306a36Sopenharmony_ci OCRDMA_MCQE_CONS_MASK = BIT(27), 37162306a36Sopenharmony_ci OCRDMA_MCQE_CMPL_SHIFT = 28, 37262306a36Sopenharmony_ci OCRDMA_MCQE_CMPL_MASK = BIT(28), 37362306a36Sopenharmony_ci OCRDMA_MCQE_AE_SHIFT = 30, 37462306a36Sopenharmony_ci OCRDMA_MCQE_AE_MASK = BIT(30), 37562306a36Sopenharmony_ci OCRDMA_MCQE_VALID_SHIFT = 31, 37662306a36Sopenharmony_ci OCRDMA_MCQE_VALID_MASK = BIT(31) 37762306a36Sopenharmony_ci}; 37862306a36Sopenharmony_ci 37962306a36Sopenharmony_cistruct ocrdma_mcqe { 38062306a36Sopenharmony_ci u32 status; 38162306a36Sopenharmony_ci u32 tag_lo; 38262306a36Sopenharmony_ci u32 tag_hi; 38362306a36Sopenharmony_ci u32 valid_ae_cmpl_cons; 38462306a36Sopenharmony_ci}; 38562306a36Sopenharmony_ci 38662306a36Sopenharmony_cienum { 38762306a36Sopenharmony_ci OCRDMA_AE_MCQE_QPVALID = BIT(31), 38862306a36Sopenharmony_ci OCRDMA_AE_MCQE_QPID_MASK = 0xFFFF, 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci OCRDMA_AE_MCQE_CQVALID = BIT(31), 39162306a36Sopenharmony_ci OCRDMA_AE_MCQE_CQID_MASK = 0xFFFF, 39262306a36Sopenharmony_ci OCRDMA_AE_MCQE_VALID = BIT(31), 39362306a36Sopenharmony_ci OCRDMA_AE_MCQE_AE = BIT(30), 39462306a36Sopenharmony_ci OCRDMA_AE_MCQE_EVENT_TYPE_SHIFT = 16, 39562306a36Sopenharmony_ci OCRDMA_AE_MCQE_EVENT_TYPE_MASK = 39662306a36Sopenharmony_ci 0xFF << OCRDMA_AE_MCQE_EVENT_TYPE_SHIFT, 39762306a36Sopenharmony_ci OCRDMA_AE_MCQE_EVENT_CODE_SHIFT = 8, 39862306a36Sopenharmony_ci OCRDMA_AE_MCQE_EVENT_CODE_MASK = 39962306a36Sopenharmony_ci 0xFF << OCRDMA_AE_MCQE_EVENT_CODE_SHIFT 40062306a36Sopenharmony_ci}; 40162306a36Sopenharmony_cistruct ocrdma_ae_mcqe { 40262306a36Sopenharmony_ci u32 qpvalid_qpid; 40362306a36Sopenharmony_ci u32 cqvalid_cqid; 40462306a36Sopenharmony_ci u32 evt_tag; 40562306a36Sopenharmony_ci u32 valid_ae_event; 40662306a36Sopenharmony_ci}; 40762306a36Sopenharmony_ci 40862306a36Sopenharmony_cienum { 40962306a36Sopenharmony_ci OCRDMA_AE_PVID_MCQE_ENABLED_SHIFT = 0, 41062306a36Sopenharmony_ci OCRDMA_AE_PVID_MCQE_ENABLED_MASK = 0xFF, 41162306a36Sopenharmony_ci OCRDMA_AE_PVID_MCQE_TAG_SHIFT = 16, 41262306a36Sopenharmony_ci OCRDMA_AE_PVID_MCQE_TAG_MASK = 0xFFFF << OCRDMA_AE_PVID_MCQE_TAG_SHIFT 41362306a36Sopenharmony_ci}; 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_cistruct ocrdma_ae_pvid_mcqe { 41662306a36Sopenharmony_ci u32 tag_enabled; 41762306a36Sopenharmony_ci u32 event_tag; 41862306a36Sopenharmony_ci u32 rsvd1; 41962306a36Sopenharmony_ci u32 rsvd2; 42062306a36Sopenharmony_ci}; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_cienum { 42362306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_REQ_ID_SHIFT = 16, 42462306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_REQ_ID_MASK = 0xFFFF << 42562306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_REQ_ID_SHIFT, 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_CODE_SHIFT = 8, 42862306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_CODE_MASK = 0xFF << 42962306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_CODE_SHIFT, 43062306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_TYPE_SHIFT = 16, 43162306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_TYPE_MASK = 0xFF << 43262306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_TYPE_SHIFT, 43362306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_AE_SHIFT = 30, 43462306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_AE_MASK = BIT(30), 43562306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_VALID_SHIFT = 31, 43662306a36Sopenharmony_ci OCRDMA_AE_MPA_MCQE_EVENT_VALID_MASK = BIT(31) 43762306a36Sopenharmony_ci}; 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_cistruct ocrdma_ae_mpa_mcqe { 44062306a36Sopenharmony_ci u32 req_id; 44162306a36Sopenharmony_ci u32 w1; 44262306a36Sopenharmony_ci u32 w2; 44362306a36Sopenharmony_ci u32 valid_ae_event; 44462306a36Sopenharmony_ci}; 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_cienum { 44762306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_NEW_QP_STATE_SHIFT = 0, 44862306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_NEW_QP_STATE_MASK = 0xFFFF, 44962306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_QP_ID_SHIFT = 16, 45062306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_QP_ID_MASK = 0xFFFF << 45162306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_QP_ID_SHIFT, 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_CODE_SHIFT = 8, 45462306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_CODE_MASK = 0xFF << 45562306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_CODE_SHIFT, 45662306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_TYPE_SHIFT = 16, 45762306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_TYPE_MASK = 0xFF << 45862306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_TYPE_SHIFT, 45962306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_AE_SHIFT = 30, 46062306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_AE_MASK = BIT(30), 46162306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_VALID_SHIFT = 31, 46262306a36Sopenharmony_ci OCRDMA_AE_QP_MCQE_EVENT_VALID_MASK = BIT(31) 46362306a36Sopenharmony_ci}; 46462306a36Sopenharmony_ci 46562306a36Sopenharmony_cistruct ocrdma_ae_qp_mcqe { 46662306a36Sopenharmony_ci u32 qp_id_state; 46762306a36Sopenharmony_ci u32 w1; 46862306a36Sopenharmony_ci u32 w2; 46962306a36Sopenharmony_ci u32 valid_ae_event; 47062306a36Sopenharmony_ci}; 47162306a36Sopenharmony_ci 47262306a36Sopenharmony_cienum ocrdma_async_event_code { 47362306a36Sopenharmony_ci OCRDMA_ASYNC_LINK_EVE_CODE = 0x01, 47462306a36Sopenharmony_ci OCRDMA_ASYNC_GRP5_EVE_CODE = 0x05, 47562306a36Sopenharmony_ci OCRDMA_ASYNC_RDMA_EVE_CODE = 0x14 47662306a36Sopenharmony_ci}; 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_cienum ocrdma_async_grp5_events { 47962306a36Sopenharmony_ci OCRDMA_ASYNC_EVENT_QOS_VALUE = 0x01, 48062306a36Sopenharmony_ci OCRDMA_ASYNC_EVENT_COS_VALUE = 0x02, 48162306a36Sopenharmony_ci OCRDMA_ASYNC_EVENT_PVID_STATE = 0x03 48262306a36Sopenharmony_ci}; 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_cienum OCRDMA_ASYNC_EVENT_TYPE { 48562306a36Sopenharmony_ci OCRDMA_CQ_ERROR = 0x00, 48662306a36Sopenharmony_ci OCRDMA_CQ_OVERRUN_ERROR = 0x01, 48762306a36Sopenharmony_ci OCRDMA_CQ_QPCAT_ERROR = 0x02, 48862306a36Sopenharmony_ci OCRDMA_QP_ACCESS_ERROR = 0x03, 48962306a36Sopenharmony_ci OCRDMA_QP_COMM_EST_EVENT = 0x04, 49062306a36Sopenharmony_ci OCRDMA_SQ_DRAINED_EVENT = 0x05, 49162306a36Sopenharmony_ci OCRDMA_DEVICE_FATAL_EVENT = 0x08, 49262306a36Sopenharmony_ci OCRDMA_SRQCAT_ERROR = 0x0E, 49362306a36Sopenharmony_ci OCRDMA_SRQ_LIMIT_EVENT = 0x0F, 49462306a36Sopenharmony_ci OCRDMA_QP_LAST_WQE_EVENT = 0x10, 49562306a36Sopenharmony_ci 49662306a36Sopenharmony_ci OCRDMA_MAX_ASYNC_ERRORS 49762306a36Sopenharmony_ci}; 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_cistruct ocrdma_ae_lnkst_mcqe { 50062306a36Sopenharmony_ci u32 speed_state_ptn; 50162306a36Sopenharmony_ci u32 qos_reason_falut; 50262306a36Sopenharmony_ci u32 evt_tag; 50362306a36Sopenharmony_ci u32 valid_ae_event; 50462306a36Sopenharmony_ci}; 50562306a36Sopenharmony_ci 50662306a36Sopenharmony_cienum { 50762306a36Sopenharmony_ci OCRDMA_AE_LSC_PORT_NUM_MASK = 0x3F, 50862306a36Sopenharmony_ci OCRDMA_AE_LSC_PT_SHIFT = 0x06, 50962306a36Sopenharmony_ci OCRDMA_AE_LSC_PT_MASK = (0x03 << 51062306a36Sopenharmony_ci OCRDMA_AE_LSC_PT_SHIFT), 51162306a36Sopenharmony_ci OCRDMA_AE_LSC_LS_SHIFT = 0x08, 51262306a36Sopenharmony_ci OCRDMA_AE_LSC_LS_MASK = (0xFF << 51362306a36Sopenharmony_ci OCRDMA_AE_LSC_LS_SHIFT), 51462306a36Sopenharmony_ci OCRDMA_AE_LSC_LD_SHIFT = 0x10, 51562306a36Sopenharmony_ci OCRDMA_AE_LSC_LD_MASK = (0xFF << 51662306a36Sopenharmony_ci OCRDMA_AE_LSC_LD_SHIFT), 51762306a36Sopenharmony_ci OCRDMA_AE_LSC_PPS_SHIFT = 0x18, 51862306a36Sopenharmony_ci OCRDMA_AE_LSC_PPS_MASK = (0xFF << 51962306a36Sopenharmony_ci OCRDMA_AE_LSC_PPS_SHIFT), 52062306a36Sopenharmony_ci OCRDMA_AE_LSC_PPF_MASK = 0xFF, 52162306a36Sopenharmony_ci OCRDMA_AE_LSC_ER_SHIFT = 0x08, 52262306a36Sopenharmony_ci OCRDMA_AE_LSC_ER_MASK = (0xFF << 52362306a36Sopenharmony_ci OCRDMA_AE_LSC_ER_SHIFT), 52462306a36Sopenharmony_ci OCRDMA_AE_LSC_QOS_SHIFT = 0x10, 52562306a36Sopenharmony_ci OCRDMA_AE_LSC_QOS_MASK = (0xFFFF << 52662306a36Sopenharmony_ci OCRDMA_AE_LSC_QOS_SHIFT) 52762306a36Sopenharmony_ci}; 52862306a36Sopenharmony_ci 52962306a36Sopenharmony_cienum { 53062306a36Sopenharmony_ci OCRDMA_AE_LSC_PLINK_DOWN = 0x00, 53162306a36Sopenharmony_ci OCRDMA_AE_LSC_PLINK_UP = 0x01, 53262306a36Sopenharmony_ci OCRDMA_AE_LSC_LLINK_DOWN = 0x02, 53362306a36Sopenharmony_ci OCRDMA_AE_LSC_LLINK_MASK = 0x02, 53462306a36Sopenharmony_ci OCRDMA_AE_LSC_LLINK_UP = 0x03 53562306a36Sopenharmony_ci}; 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_ci/* mailbox command request and responses */ 53862306a36Sopenharmony_cienum { 53962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_CQ_OVERFLOW_SHIFT = 2, 54062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_CQ_OVERFLOW_MASK = BIT(2), 54162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_SRQ_SUPPORTED_SHIFT = 3, 54262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_SRQ_SUPPORTED_MASK = BIT(3), 54362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_QP_SHIFT = 8, 54462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_QP_MASK = 0xFFFFFF << 54562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_QP_SHIFT, 54662306a36Sopenharmony_ci 54762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_PD_SHIFT = 16, 54862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_PD_MASK = 0xFFFF << 54962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_PD_SHIFT, 55062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT = 8, 55162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_MASK = 0xFF << 55262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT, 55362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_L3_TYPE_SHIFT = 3, 55462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_L3_TYPE_MASK = 0x18, 55562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT = 0, 55662306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK = 0xFFFF, 55762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RECV_SGE_SHIFT = 16, 55862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RECV_SGE_MASK = 0xFFFF << 55962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RECV_SGE_SHIFT, 56062306a36Sopenharmony_ci 56162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_ORD_PER_QP_SHIFT = 0, 56262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_ORD_PER_QP_MASK = 0xFFFF, 56362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_SHIFT = 16, 56462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_MASK = 0xFFFF << 56562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_SHIFT, 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQE_SIZE_OFFSET = 24, 56862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQE_SIZE_MASK = 0xFF << 56962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQE_SIZE_OFFSET, 57062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQE_SIZE_OFFSET = 16, 57162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQE_SIZE_MASK = 0xFF << 57262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQE_SIZE_OFFSET, 57362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CQES_OFFSET = 0, 57462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CQES_MASK = 0xFFFF << 57562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CQES_OFFSET, 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_OFFSET = 16, 57862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_MASK = 0xFFFF << 57962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_OFFSET, 58062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RPIR_QPS_OFFSET = 0, 58162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RPIR_QPS_MASK = 0xFFFF << 58262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RPIR_QPS_OFFSET, 58362306a36Sopenharmony_ci 58462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_OFFSET = 16, 58562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_MASK = 0xFFFF << 58662306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_PDS_OFFSET, 58762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CREDITS_OFFSET = 0, 58862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CREDITS_MASK = 0xFFFF << 58962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_CREDITS_OFFSET, 59062306a36Sopenharmony_ci 59162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_QPS_OFFSET = 0, 59262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_QPS_MASK = 0xFFFF << 59362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_DPP_QPS_OFFSET, 59462306a36Sopenharmony_ci 59562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQES_PER_WQ_OFFSET = 16, 59662306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQES_PER_WQ_MASK = 0xFFFF << 59762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_WQES_PER_WQ_OFFSET, 59862306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQES_PER_RQ_OFFSET = 0, 59962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQES_PER_RQ_MASK = 0xFFFF << 60062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RQES_PER_RQ_OFFSET, 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQ_OFFSET = 16, 60362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQ_MASK = 0xFFFF << 60462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQ_OFFSET, 60562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQES_PER_CQ_OFFSET = 0, 60662306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQES_PER_CQ_MASK = 0xFFFF << 60762306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_CQES_PER_CQ_OFFSET, 60862306a36Sopenharmony_ci 60962306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_RQE_OFFSET = 16, 61062306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_RQE_MASK = 0xFFFF << 61162306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_RQE_OFFSET, 61262306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_SGE_OFFSET = 0, 61362306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_SGE_MASK = 0xFFFF << 61462306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_SRQ_SGE_OFFSET, 61562306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RD_SGE_SHIFT = 0, 61662306a36Sopenharmony_ci OCRDMA_MBX_QUERY_CFG_MAX_RD_SGE_MASK = 0xFFFF, 61762306a36Sopenharmony_ci}; 61862306a36Sopenharmony_ci 61962306a36Sopenharmony_cistruct ocrdma_mbx_query_config { 62062306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 62162306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 62262306a36Sopenharmony_ci u32 qp_srq_cq_ird_ord; 62362306a36Sopenharmony_ci u32 max_pd_ca_ack_delay; 62462306a36Sopenharmony_ci u32 max_recv_send_sge; 62562306a36Sopenharmony_ci u32 max_ird_ord_per_qp; 62662306a36Sopenharmony_ci u32 max_shared_ird_ord; 62762306a36Sopenharmony_ci u32 max_mr; 62862306a36Sopenharmony_ci u32 max_mr_size_hi; 62962306a36Sopenharmony_ci u32 max_mr_size_lo; 63062306a36Sopenharmony_ci u32 max_num_mr_pbl; 63162306a36Sopenharmony_ci u32 max_mw; 63262306a36Sopenharmony_ci u32 max_fmr; 63362306a36Sopenharmony_ci u32 max_pages_per_frmr; 63462306a36Sopenharmony_ci u32 max_mcast_group; 63562306a36Sopenharmony_ci u32 max_mcast_qp_attach; 63662306a36Sopenharmony_ci u32 max_total_mcast_qp_attach; 63762306a36Sopenharmony_ci u32 wqe_rqe_stride_max_dpp_cqs; 63862306a36Sopenharmony_ci u32 max_srq_rpir_qps; 63962306a36Sopenharmony_ci u32 max_dpp_pds_credits; 64062306a36Sopenharmony_ci u32 max_dpp_credits_pds_per_pd; 64162306a36Sopenharmony_ci u32 max_wqes_rqes_per_q; 64262306a36Sopenharmony_ci u32 max_cq_cqes_per_cq; 64362306a36Sopenharmony_ci u32 max_srq_rqe_sge; 64462306a36Sopenharmony_ci u32 max_wr_rd_sge; 64562306a36Sopenharmony_ci u32 ird_pgsz_num_pages; 64662306a36Sopenharmony_ci}; 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_cistruct ocrdma_fw_ver_rsp { 64962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 65062306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci u8 running_ver[32]; 65362306a36Sopenharmony_ci}; 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_cistruct ocrdma_fw_conf_rsp { 65662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 65762306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 65862306a36Sopenharmony_ci 65962306a36Sopenharmony_ci u32 config_num; 66062306a36Sopenharmony_ci u32 asic_revision; 66162306a36Sopenharmony_ci u32 phy_port; 66262306a36Sopenharmony_ci u32 fn_mode; 66362306a36Sopenharmony_ci struct { 66462306a36Sopenharmony_ci u32 mode; 66562306a36Sopenharmony_ci u32 nic_wqid_base; 66662306a36Sopenharmony_ci u32 nic_wq_tot; 66762306a36Sopenharmony_ci u32 prot_wqid_base; 66862306a36Sopenharmony_ci u32 prot_wq_tot; 66962306a36Sopenharmony_ci u32 prot_rqid_base; 67062306a36Sopenharmony_ci u32 prot_rqid_tot; 67162306a36Sopenharmony_ci u32 rsvd[6]; 67262306a36Sopenharmony_ci } ulp[2]; 67362306a36Sopenharmony_ci u32 fn_capabilities; 67462306a36Sopenharmony_ci u32 rsvd1; 67562306a36Sopenharmony_ci u32 rsvd2; 67662306a36Sopenharmony_ci u32 base_eqid; 67762306a36Sopenharmony_ci u32 max_eq; 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ci}; 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_cienum { 68262306a36Sopenharmony_ci OCRDMA_FN_MODE_RDMA = 0x4 68362306a36Sopenharmony_ci}; 68462306a36Sopenharmony_ci 68562306a36Sopenharmony_cienum { 68662306a36Sopenharmony_ci OCRDMA_IF_TYPE_MASK = 0xFFFF0000, 68762306a36Sopenharmony_ci OCRDMA_IF_TYPE_SHIFT = 0x10, 68862306a36Sopenharmony_ci OCRDMA_PHY_TYPE_MASK = 0x0000FFFF, 68962306a36Sopenharmony_ci OCRDMA_FUTURE_DETAILS_MASK = 0xFFFF0000, 69062306a36Sopenharmony_ci OCRDMA_FUTURE_DETAILS_SHIFT = 0x10, 69162306a36Sopenharmony_ci OCRDMA_EX_PHY_DETAILS_MASK = 0x0000FFFF, 69262306a36Sopenharmony_ci OCRDMA_FSPEED_SUPP_MASK = 0xFFFF0000, 69362306a36Sopenharmony_ci OCRDMA_FSPEED_SUPP_SHIFT = 0x10, 69462306a36Sopenharmony_ci OCRDMA_ASPEED_SUPP_MASK = 0x0000FFFF 69562306a36Sopenharmony_ci}; 69662306a36Sopenharmony_ci 69762306a36Sopenharmony_cistruct ocrdma_get_phy_info_rsp { 69862306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 69962306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ci u32 ityp_ptyp; 70262306a36Sopenharmony_ci u32 misc_params; 70362306a36Sopenharmony_ci u32 ftrdtl_exphydtl; 70462306a36Sopenharmony_ci u32 fspeed_aspeed; 70562306a36Sopenharmony_ci u32 future_use[2]; 70662306a36Sopenharmony_ci}; 70762306a36Sopenharmony_ci 70862306a36Sopenharmony_cienum { 70962306a36Sopenharmony_ci OCRDMA_PHY_SPEED_ZERO = 0x0, 71062306a36Sopenharmony_ci OCRDMA_PHY_SPEED_10MBPS = 0x1, 71162306a36Sopenharmony_ci OCRDMA_PHY_SPEED_100MBPS = 0x2, 71262306a36Sopenharmony_ci OCRDMA_PHY_SPEED_1GBPS = 0x4, 71362306a36Sopenharmony_ci OCRDMA_PHY_SPEED_10GBPS = 0x8, 71462306a36Sopenharmony_ci OCRDMA_PHY_SPEED_40GBPS = 0x20 71562306a36Sopenharmony_ci}; 71662306a36Sopenharmony_ci 71762306a36Sopenharmony_cienum { 71862306a36Sopenharmony_ci OCRDMA_PORT_NUM_MASK = 0x3F, 71962306a36Sopenharmony_ci OCRDMA_PT_MASK = 0xC0, 72062306a36Sopenharmony_ci OCRDMA_PT_SHIFT = 0x6, 72162306a36Sopenharmony_ci OCRDMA_LINK_DUP_MASK = 0x0000FF00, 72262306a36Sopenharmony_ci OCRDMA_LINK_DUP_SHIFT = 0x8, 72362306a36Sopenharmony_ci OCRDMA_PHY_PS_MASK = 0x00FF0000, 72462306a36Sopenharmony_ci OCRDMA_PHY_PS_SHIFT = 0x10, 72562306a36Sopenharmony_ci OCRDMA_PHY_PFLT_MASK = 0xFF000000, 72662306a36Sopenharmony_ci OCRDMA_PHY_PFLT_SHIFT = 0x18, 72762306a36Sopenharmony_ci OCRDMA_QOS_LNKSP_MASK = 0xFFFF0000, 72862306a36Sopenharmony_ci OCRDMA_QOS_LNKSP_SHIFT = 0x10, 72962306a36Sopenharmony_ci OCRDMA_LINK_ST_MASK = 0x01, 73062306a36Sopenharmony_ci OCRDMA_PLFC_MASK = 0x00000400, 73162306a36Sopenharmony_ci OCRDMA_PLFC_SHIFT = 0x8, 73262306a36Sopenharmony_ci OCRDMA_PLRFC_MASK = 0x00000200, 73362306a36Sopenharmony_ci OCRDMA_PLRFC_SHIFT = 0x8, 73462306a36Sopenharmony_ci OCRDMA_PLTFC_MASK = 0x00000100, 73562306a36Sopenharmony_ci OCRDMA_PLTFC_SHIFT = 0x8 73662306a36Sopenharmony_ci}; 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_cistruct ocrdma_get_link_speed_rsp { 73962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 74062306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 74162306a36Sopenharmony_ci 74262306a36Sopenharmony_ci u32 pflt_pps_ld_pnum; 74362306a36Sopenharmony_ci u32 qos_lsp; 74462306a36Sopenharmony_ci u32 res_lnk_st; 74562306a36Sopenharmony_ci}; 74662306a36Sopenharmony_ci 74762306a36Sopenharmony_cienum { 74862306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_ZERO = 0x0, 74962306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_10MBPS = 0x1, 75062306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_100MBPS = 0x2, 75162306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_1GBPS = 0x3, 75262306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_10GBPS = 0x4, 75362306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_20GBPS = 0x5, 75462306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_25GBPS = 0x6, 75562306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_40GBPS = 0x7, 75662306a36Sopenharmony_ci OCRDMA_PHYS_LINK_SPEED_100GBPS = 0x8 75762306a36Sopenharmony_ci}; 75862306a36Sopenharmony_ci 75962306a36Sopenharmony_cienum { 76062306a36Sopenharmony_ci OCRDMA_CREATE_CQ_VER2 = 2, 76162306a36Sopenharmony_ci OCRDMA_CREATE_CQ_VER3 = 3, 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ci OCRDMA_CREATE_CQ_PAGE_CNT_MASK = 0xFFFF, 76462306a36Sopenharmony_ci OCRDMA_CREATE_CQ_PAGE_SIZE_SHIFT = 16, 76562306a36Sopenharmony_ci OCRDMA_CREATE_CQ_PAGE_SIZE_MASK = 0xFF, 76662306a36Sopenharmony_ci 76762306a36Sopenharmony_ci OCRDMA_CREATE_CQ_COALESCWM_SHIFT = 12, 76862306a36Sopenharmony_ci OCRDMA_CREATE_CQ_COALESCWM_MASK = BIT(13) | BIT(12), 76962306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_NODELAY = BIT(14), 77062306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_AUTO_VALID = BIT(15), 77162306a36Sopenharmony_ci 77262306a36Sopenharmony_ci OCRDMA_CREATE_CQ_EQ_ID_MASK = 0xFFFF, 77362306a36Sopenharmony_ci OCRDMA_CREATE_CQ_CQE_COUNT_MASK = 0xFFFF 77462306a36Sopenharmony_ci}; 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_cienum { 77762306a36Sopenharmony_ci OCRDMA_CREATE_CQ_VER0 = 0, 77862306a36Sopenharmony_ci OCRDMA_CREATE_CQ_DPP = 1, 77962306a36Sopenharmony_ci OCRDMA_CREATE_CQ_TYPE_SHIFT = 24, 78062306a36Sopenharmony_ci OCRDMA_CREATE_CQ_EQID_SHIFT = 22, 78162306a36Sopenharmony_ci 78262306a36Sopenharmony_ci OCRDMA_CREATE_CQ_CNT_SHIFT = 27, 78362306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_VALID = BIT(29), 78462306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_EVENTABLE = BIT(31), 78562306a36Sopenharmony_ci OCRDMA_CREATE_CQ_DEF_FLAGS = OCRDMA_CREATE_CQ_FLAGS_VALID | 78662306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_EVENTABLE | 78762306a36Sopenharmony_ci OCRDMA_CREATE_CQ_FLAGS_NODELAY 78862306a36Sopenharmony_ci}; 78962306a36Sopenharmony_ci 79062306a36Sopenharmony_cistruct ocrdma_create_cq_cmd { 79162306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 79262306a36Sopenharmony_ci u32 pgsz_pgcnt; 79362306a36Sopenharmony_ci u32 ev_cnt_flags; 79462306a36Sopenharmony_ci u32 eqn; 79562306a36Sopenharmony_ci u32 pdid_cqecnt; 79662306a36Sopenharmony_ci u32 rsvd6; 79762306a36Sopenharmony_ci struct ocrdma_pa pa[OCRDMA_CREATE_CQ_MAX_PAGES]; 79862306a36Sopenharmony_ci}; 79962306a36Sopenharmony_ci 80062306a36Sopenharmony_cistruct ocrdma_create_cq { 80162306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 80262306a36Sopenharmony_ci struct ocrdma_create_cq_cmd cmd; 80362306a36Sopenharmony_ci}; 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_cienum { 80662306a36Sopenharmony_ci OCRDMA_CREATE_CQ_CMD_PDID_SHIFT = 0x10 80762306a36Sopenharmony_ci}; 80862306a36Sopenharmony_ci 80962306a36Sopenharmony_cienum { 81062306a36Sopenharmony_ci OCRDMA_CREATE_CQ_RSP_CQ_ID_MASK = 0xFFFF 81162306a36Sopenharmony_ci}; 81262306a36Sopenharmony_ci 81362306a36Sopenharmony_cistruct ocrdma_create_cq_cmd_rsp { 81462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 81562306a36Sopenharmony_ci u32 cq_id; 81662306a36Sopenharmony_ci}; 81762306a36Sopenharmony_ci 81862306a36Sopenharmony_cistruct ocrdma_create_cq_rsp { 81962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 82062306a36Sopenharmony_ci struct ocrdma_create_cq_cmd_rsp rsp; 82162306a36Sopenharmony_ci}; 82262306a36Sopenharmony_ci 82362306a36Sopenharmony_cienum { 82462306a36Sopenharmony_ci OCRDMA_CREATE_MQ_V0_CQ_ID_SHIFT = 22, 82562306a36Sopenharmony_ci OCRDMA_CREATE_MQ_CQ_ID_SHIFT = 16, 82662306a36Sopenharmony_ci OCRDMA_CREATE_MQ_RING_SIZE_SHIFT = 16, 82762306a36Sopenharmony_ci OCRDMA_CREATE_MQ_VALID = BIT(31), 82862306a36Sopenharmony_ci OCRDMA_CREATE_MQ_ASYNC_CQ_VALID = BIT(0) 82962306a36Sopenharmony_ci}; 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_cistruct ocrdma_create_mq_req { 83262306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 83362306a36Sopenharmony_ci u32 cqid_pages; 83462306a36Sopenharmony_ci u32 async_event_bitmap; 83562306a36Sopenharmony_ci u32 async_cqid_ringsize; 83662306a36Sopenharmony_ci u32 valid; 83762306a36Sopenharmony_ci u32 async_cqid_valid; 83862306a36Sopenharmony_ci u32 rsvd; 83962306a36Sopenharmony_ci struct ocrdma_pa pa[8]; 84062306a36Sopenharmony_ci}; 84162306a36Sopenharmony_ci 84262306a36Sopenharmony_cistruct ocrdma_create_mq_rsp { 84362306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 84462306a36Sopenharmony_ci u32 id; 84562306a36Sopenharmony_ci}; 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_cienum { 84862306a36Sopenharmony_ci OCRDMA_DESTROY_CQ_QID_SHIFT = 0, 84962306a36Sopenharmony_ci OCRDMA_DESTROY_CQ_QID_MASK = 0xFFFF, 85062306a36Sopenharmony_ci OCRDMA_DESTROY_CQ_QID_BYPASS_FLUSH_SHIFT = 16, 85162306a36Sopenharmony_ci OCRDMA_DESTROY_CQ_QID_BYPASS_FLUSH_MASK = 0xFFFF << 85262306a36Sopenharmony_ci OCRDMA_DESTROY_CQ_QID_BYPASS_FLUSH_SHIFT 85362306a36Sopenharmony_ci}; 85462306a36Sopenharmony_ci 85562306a36Sopenharmony_cistruct ocrdma_destroy_cq { 85662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 85762306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 85862306a36Sopenharmony_ci 85962306a36Sopenharmony_ci u32 bypass_flush_qid; 86062306a36Sopenharmony_ci}; 86162306a36Sopenharmony_ci 86262306a36Sopenharmony_cistruct ocrdma_destroy_cq_rsp { 86362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 86462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 86562306a36Sopenharmony_ci}; 86662306a36Sopenharmony_ci 86762306a36Sopenharmony_cienum { 86862306a36Sopenharmony_ci OCRDMA_QPT_GSI = 1, 86962306a36Sopenharmony_ci OCRDMA_QPT_RC = 2, 87062306a36Sopenharmony_ci OCRDMA_QPT_UD = 4, 87162306a36Sopenharmony_ci}; 87262306a36Sopenharmony_ci 87362306a36Sopenharmony_cienum { 87462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_PD_ID_SHIFT = 0, 87562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_PD_ID_MASK = 0xFFFF, 87662306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_SQ_PAGE_SIZE_SHIFT = 16, 87762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_RQ_PAGE_SIZE_SHIFT = 19, 87862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_QPT_SHIFT = 29, 87962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_QPT_MASK = BIT(31) | BIT(30) | BIT(29), 88062306a36Sopenharmony_ci 88162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_RQE_SHIFT = 0, 88262306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_RQE_MASK = 0xFFFF, 88362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_WQE_SHIFT = 16, 88462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_WQE_MASK = 0xFFFF << 88562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_WQE_SHIFT, 88662306a36Sopenharmony_ci 88762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_WRITE_SHIFT = 0, 88862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_WRITE_MASK = 0xFFFF, 88962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_SEND_SHIFT = 16, 89062306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_SEND_MASK = 0xFFFF << 89162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_SEND_SHIFT, 89262306a36Sopenharmony_ci 89362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_FMR_EN_SHIFT = 0, 89462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_FMR_EN_MASK = BIT(0), 89562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ZERO_LKEYEN_SHIFT = 1, 89662306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ZERO_LKEYEN_MASK = BIT(1), 89762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_BIND_MEMWIN_SHIFT = 2, 89862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_BIND_MEMWIN_MASK = BIT(2), 89962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_INB_WREN_SHIFT = 3, 90062306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_INB_WREN_MASK = BIT(3), 90162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_INB_RDEN_SHIFT = 4, 90262306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_INB_RDEN_MASK = BIT(4), 90362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_USE_SRQ_SHIFT = 5, 90462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_USE_SRQ_MASK = BIT(5), 90562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_RPIR_SHIFT = 6, 90662306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_RPIR_MASK = BIT(6), 90762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_DPP_SHIFT = 7, 90862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_DPP_MASK = BIT(7), 90962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_DPP_CQ_SHIFT = 8, 91062306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_ENABLE_DPP_CQ_MASK = BIT(8), 91162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_RECV_SHIFT = 16, 91262306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_RECV_MASK = 0xFFFF << 91362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_SGE_RECV_SHIFT, 91462306a36Sopenharmony_ci 91562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_IRD_SHIFT = 0, 91662306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_IRD_MASK = 0xFFFF, 91762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_ORD_SHIFT = 16, 91862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_ORD_MASK = 0xFFFF << 91962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_MAX_ORD_SHIFT, 92062306a36Sopenharmony_ci 92162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_NUM_RQ_PAGES_SHIFT = 0, 92262306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_NUM_RQ_PAGES_MASK = 0xFFFF, 92362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_NUM_WQ_PAGES_SHIFT = 16, 92462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_NUM_WQ_PAGES_MASK = 0xFFFF << 92562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_NUM_WQ_PAGES_SHIFT, 92662306a36Sopenharmony_ci 92762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_RQE_SIZE_SHIFT = 0, 92862306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_RQE_SIZE_MASK = 0xFFFF, 92962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQE_SIZE_SHIFT = 16, 93062306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQE_SIZE_MASK = 0xFFFF << 93162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQE_SIZE_SHIFT, 93262306a36Sopenharmony_ci 93362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_RQ_CQID_SHIFT = 0, 93462306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_RQ_CQID_MASK = 0xFFFF, 93562306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT = 16, 93662306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQ_CQID_MASK = 0xFFFF << 93762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_WQ_CQID_SHIFT, 93862306a36Sopenharmony_ci 93962306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CQPID_SHIFT = 0, 94062306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CQPID_MASK = 0xFFFF, 94162306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CREDIT_SHIFT = 16, 94262306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CREDIT_MASK = 0xFFFF << 94362306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CREDIT_SHIFT 94462306a36Sopenharmony_ci}; 94562306a36Sopenharmony_ci 94662306a36Sopenharmony_cienum { 94762306a36Sopenharmony_ci OCRDMA_CREATE_QP_REQ_DPP_CREDIT_LIMIT = 16, 94862306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_PAGE_SHIFT = 1 94962306a36Sopenharmony_ci}; 95062306a36Sopenharmony_ci 95162306a36Sopenharmony_ci#define MAX_OCRDMA_IRD_PAGES 4 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_cienum ocrdma_qp_flags { 95462306a36Sopenharmony_ci OCRDMA_QP_MW_BIND = 1, 95562306a36Sopenharmony_ci OCRDMA_QP_LKEY0 = (1 << 1), 95662306a36Sopenharmony_ci OCRDMA_QP_FAST_REG = (1 << 2), 95762306a36Sopenharmony_ci OCRDMA_QP_INB_RD = (1 << 6), 95862306a36Sopenharmony_ci OCRDMA_QP_INB_WR = (1 << 7), 95962306a36Sopenharmony_ci}; 96062306a36Sopenharmony_ci 96162306a36Sopenharmony_cienum ocrdma_qp_state { 96262306a36Sopenharmony_ci OCRDMA_QPS_RST = 0, 96362306a36Sopenharmony_ci OCRDMA_QPS_INIT = 1, 96462306a36Sopenharmony_ci OCRDMA_QPS_RTR = 2, 96562306a36Sopenharmony_ci OCRDMA_QPS_RTS = 3, 96662306a36Sopenharmony_ci OCRDMA_QPS_SQE = 4, 96762306a36Sopenharmony_ci OCRDMA_QPS_SQ_DRAINING = 5, 96862306a36Sopenharmony_ci OCRDMA_QPS_ERR = 6, 96962306a36Sopenharmony_ci OCRDMA_QPS_SQD = 7 97062306a36Sopenharmony_ci}; 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_cistruct ocrdma_create_qp_req { 97362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 97462306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ci u32 type_pgsz_pdn; 97762306a36Sopenharmony_ci u32 max_wqe_rqe; 97862306a36Sopenharmony_ci u32 max_sge_send_write; 97962306a36Sopenharmony_ci u32 max_sge_recv_flags; 98062306a36Sopenharmony_ci u32 max_ord_ird; 98162306a36Sopenharmony_ci u32 num_wq_rq_pages; 98262306a36Sopenharmony_ci u32 wqe_rqe_size; 98362306a36Sopenharmony_ci u32 wq_rq_cqid; 98462306a36Sopenharmony_ci struct ocrdma_pa wq_addr[MAX_OCRDMA_QP_PAGES]; 98562306a36Sopenharmony_ci struct ocrdma_pa rq_addr[MAX_OCRDMA_QP_PAGES]; 98662306a36Sopenharmony_ci u32 dpp_credits_cqid; 98762306a36Sopenharmony_ci u32 rpir_lkey; 98862306a36Sopenharmony_ci struct ocrdma_pa ird_addr[MAX_OCRDMA_IRD_PAGES]; 98962306a36Sopenharmony_ci}; 99062306a36Sopenharmony_ci 99162306a36Sopenharmony_cienum { 99262306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_QP_ID_SHIFT = 0, 99362306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_QP_ID_MASK = 0xFFFF, 99462306a36Sopenharmony_ci 99562306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_RQE_SHIFT = 0, 99662306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_RQE_MASK = 0xFFFF, 99762306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_WQE_SHIFT = 16, 99862306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_WQE_MASK = 0xFFFF << 99962306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_WQE_SHIFT, 100062306a36Sopenharmony_ci 100162306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_WRITE_SHIFT = 0, 100262306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_WRITE_MASK = 0xFFFF, 100362306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_SEND_SHIFT = 16, 100462306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_SEND_MASK = 0xFFFF << 100562306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_SEND_SHIFT, 100662306a36Sopenharmony_ci 100762306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_RECV_SHIFT = 16, 100862306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_RECV_MASK = 0xFFFF << 100962306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_SGE_RECV_SHIFT, 101062306a36Sopenharmony_ci 101162306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_IRD_SHIFT = 0, 101262306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_IRD_MASK = 0xFFFF, 101362306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_ORD_SHIFT = 16, 101462306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_ORD_MASK = 0xFFFF << 101562306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_MAX_ORD_SHIFT, 101662306a36Sopenharmony_ci 101762306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_RQ_ID_SHIFT = 0, 101862306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_RQ_ID_MASK = 0xFFFF, 101962306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_SQ_ID_SHIFT = 16, 102062306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_SQ_ID_MASK = 0xFFFF << 102162306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_SQ_ID_SHIFT, 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_ENABLED_MASK = BIT(0), 102462306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_PAGE_OFFSET_SHIFT = 1, 102562306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_PAGE_OFFSET_MASK = 0x7FFF << 102662306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_PAGE_OFFSET_SHIFT, 102762306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_CREDITS_SHIFT = 16, 102862306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_CREDITS_MASK = 0xFFFF << 102962306a36Sopenharmony_ci OCRDMA_CREATE_QP_RSP_DPP_CREDITS_SHIFT, 103062306a36Sopenharmony_ci}; 103162306a36Sopenharmony_ci 103262306a36Sopenharmony_cistruct ocrdma_create_qp_rsp { 103362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 103462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 103562306a36Sopenharmony_ci 103662306a36Sopenharmony_ci u32 qp_id; 103762306a36Sopenharmony_ci u32 max_wqe_rqe; 103862306a36Sopenharmony_ci u32 max_sge_send_write; 103962306a36Sopenharmony_ci u32 max_sge_recv; 104062306a36Sopenharmony_ci u32 max_ord_ird; 104162306a36Sopenharmony_ci u32 sq_rq_id; 104262306a36Sopenharmony_ci u32 dpp_response; 104362306a36Sopenharmony_ci}; 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_cistruct ocrdma_destroy_qp { 104662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 104762306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 104862306a36Sopenharmony_ci u32 qp_id; 104962306a36Sopenharmony_ci}; 105062306a36Sopenharmony_ci 105162306a36Sopenharmony_cistruct ocrdma_destroy_qp_rsp { 105262306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 105362306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 105462306a36Sopenharmony_ci}; 105562306a36Sopenharmony_ci 105662306a36Sopenharmony_cienum { 105762306a36Sopenharmony_ci OCRDMA_MODIFY_QP_ID_SHIFT = 0, 105862306a36Sopenharmony_ci OCRDMA_MODIFY_QP_ID_MASK = 0xFFFF, 105962306a36Sopenharmony_ci 106062306a36Sopenharmony_ci OCRDMA_QP_PARA_QPS_VALID = BIT(0), 106162306a36Sopenharmony_ci OCRDMA_QP_PARA_SQD_ASYNC_VALID = BIT(1), 106262306a36Sopenharmony_ci OCRDMA_QP_PARA_PKEY_VALID = BIT(2), 106362306a36Sopenharmony_ci OCRDMA_QP_PARA_QKEY_VALID = BIT(3), 106462306a36Sopenharmony_ci OCRDMA_QP_PARA_PMTU_VALID = BIT(4), 106562306a36Sopenharmony_ci OCRDMA_QP_PARA_ACK_TO_VALID = BIT(5), 106662306a36Sopenharmony_ci OCRDMA_QP_PARA_RETRY_CNT_VALID = BIT(6), 106762306a36Sopenharmony_ci OCRDMA_QP_PARA_RRC_VALID = BIT(7), 106862306a36Sopenharmony_ci OCRDMA_QP_PARA_RQPSN_VALID = BIT(8), 106962306a36Sopenharmony_ci OCRDMA_QP_PARA_MAX_IRD_VALID = BIT(9), 107062306a36Sopenharmony_ci OCRDMA_QP_PARA_MAX_ORD_VALID = BIT(10), 107162306a36Sopenharmony_ci OCRDMA_QP_PARA_RNT_VALID = BIT(11), 107262306a36Sopenharmony_ci OCRDMA_QP_PARA_SQPSN_VALID = BIT(12), 107362306a36Sopenharmony_ci OCRDMA_QP_PARA_DST_QPN_VALID = BIT(13), 107462306a36Sopenharmony_ci OCRDMA_QP_PARA_MAX_WQE_VALID = BIT(14), 107562306a36Sopenharmony_ci OCRDMA_QP_PARA_MAX_RQE_VALID = BIT(15), 107662306a36Sopenharmony_ci OCRDMA_QP_PARA_SGE_SEND_VALID = BIT(16), 107762306a36Sopenharmony_ci OCRDMA_QP_PARA_SGE_RECV_VALID = BIT(17), 107862306a36Sopenharmony_ci OCRDMA_QP_PARA_SGE_WR_VALID = BIT(18), 107962306a36Sopenharmony_ci OCRDMA_QP_PARA_INB_RDEN_VALID = BIT(19), 108062306a36Sopenharmony_ci OCRDMA_QP_PARA_INB_WREN_VALID = BIT(20), 108162306a36Sopenharmony_ci OCRDMA_QP_PARA_FLOW_LBL_VALID = BIT(21), 108262306a36Sopenharmony_ci OCRDMA_QP_PARA_BIND_EN_VALID = BIT(22), 108362306a36Sopenharmony_ci OCRDMA_QP_PARA_ZLKEY_EN_VALID = BIT(23), 108462306a36Sopenharmony_ci OCRDMA_QP_PARA_FMR_EN_VALID = BIT(24), 108562306a36Sopenharmony_ci OCRDMA_QP_PARA_INBAT_EN_VALID = BIT(25), 108662306a36Sopenharmony_ci OCRDMA_QP_PARA_VLAN_EN_VALID = BIT(26), 108762306a36Sopenharmony_ci 108862306a36Sopenharmony_ci OCRDMA_MODIFY_QP_FLAGS_RD = BIT(0), 108962306a36Sopenharmony_ci OCRDMA_MODIFY_QP_FLAGS_WR = BIT(1), 109062306a36Sopenharmony_ci OCRDMA_MODIFY_QP_FLAGS_SEND = BIT(2), 109162306a36Sopenharmony_ci OCRDMA_MODIFY_QP_FLAGS_ATOMIC = BIT(3) 109262306a36Sopenharmony_ci}; 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_cienum { 109562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SRQ_ID_SHIFT = 0, 109662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SRQ_ID_MASK = 0xFFFF, 109762306a36Sopenharmony_ci 109862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_RQE_SHIFT = 0, 109962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_RQE_MASK = 0xFFFF, 110062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_WQE_SHIFT = 16, 110162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_WQE_MASK = 0xFFFF << 110262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_WQE_SHIFT, 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_WRITE_SHIFT = 0, 110562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_WRITE_MASK = 0xFFFF, 110662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_SEND_SHIFT = 16, 110762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_SEND_MASK = 0xFFFF << 110862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_SEND_SHIFT, 110962306a36Sopenharmony_ci 111062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_FMR_EN = BIT(0), 111162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_LKEY_0_EN = BIT(1), 111262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_BIND_MW_EN = BIT(2), 111362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_INBWR_EN = BIT(3), 111462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_INBRD_EN = BIT(4), 111562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_STATE_SHIFT = 5, 111662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_STATE_MASK = BIT(5) | BIT(6) | BIT(7), 111762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_SQD_ASYNC = BIT(8), 111862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_INB_ATEN = BIT(9), 111962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_L3_TYPE_SHIFT = 11, 112062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLAGS_L3_TYPE_MASK = BIT(11) | BIT(12) | BIT(13), 112162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_RECV_SHIFT = 16, 112262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_RECV_MASK = 0xFFFF << 112362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_SGE_RECV_SHIFT, 112462306a36Sopenharmony_ci 112562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_IRD_SHIFT = 0, 112662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_IRD_MASK = 0xFFFF, 112762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_ORD_SHIFT = 16, 112862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_ORD_MASK = 0xFFFF << 112962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_MAX_ORD_SHIFT, 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RQ_CQID_SHIFT = 0, 113262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RQ_CQID_MASK = 0xFFFF, 113362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_WQ_CQID_SHIFT = 16, 113462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_WQ_CQID_MASK = 0xFFFF << 113562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_WQ_CQID_SHIFT, 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RQ_PSN_SHIFT = 0, 113862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RQ_PSN_MASK = 0xFFFFFF, 113962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_HOP_LMT_SHIFT = 24, 114062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_HOP_LMT_MASK = 0xFF << 114162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_HOP_LMT_SHIFT, 114262306a36Sopenharmony_ci 114362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SQ_PSN_SHIFT = 0, 114462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SQ_PSN_MASK = 0xFFFFFF, 114562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_TCLASS_SHIFT = 24, 114662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_TCLASS_MASK = 0xFF << 114762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_TCLASS_SHIFT, 114862306a36Sopenharmony_ci 114962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_DEST_QPN_SHIFT = 0, 115062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_DEST_QPN_MASK = 0xFFFFFF, 115162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_RETRY_CNT_SHIFT = 24, 115262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_RETRY_CNT_MASK = 0x7 << 115362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_RETRY_CNT_SHIFT, 115462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_ACK_TIMEOUT_SHIFT = 27, 115562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_ACK_TIMEOUT_MASK = 0x1F << 115662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_ACK_TIMEOUT_SHIFT, 115762306a36Sopenharmony_ci 115862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_PKEY_IDNEX_SHIFT = 0, 115962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_PKEY_INDEX_MASK = 0xFFFF, 116062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_PATH_MTU_SHIFT = 18, 116162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_PATH_MTU_MASK = 0x3FFF << 116262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_PATH_MTU_SHIFT, 116362306a36Sopenharmony_ci 116462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLOW_LABEL_SHIFT = 0, 116562306a36Sopenharmony_ci OCRDMA_QP_PARAMS_FLOW_LABEL_MASK = 0xFFFFF, 116662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SL_SHIFT = 20, 116762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SL_MASK = 0xF << 116862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_SL_SHIFT, 116962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RETRY_CNT_SHIFT = 24, 117062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RETRY_CNT_MASK = 0x7 << 117162306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RETRY_CNT_SHIFT, 117262306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_NAK_TIMER_SHIFT = 27, 117362306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_NAK_TIMER_MASK = 0x1F << 117462306a36Sopenharmony_ci OCRDMA_QP_PARAMS_RNR_NAK_TIMER_SHIFT, 117562306a36Sopenharmony_ci 117662306a36Sopenharmony_ci OCRDMA_QP_PARAMS_DMAC_B4_TO_B5_SHIFT = 0, 117762306a36Sopenharmony_ci OCRDMA_QP_PARAMS_DMAC_B4_TO_B5_MASK = 0xFFFF, 117862306a36Sopenharmony_ci OCRDMA_QP_PARAMS_VLAN_SHIFT = 16, 117962306a36Sopenharmony_ci OCRDMA_QP_PARAMS_VLAN_MASK = 0xFFFF << 118062306a36Sopenharmony_ci OCRDMA_QP_PARAMS_VLAN_SHIFT 118162306a36Sopenharmony_ci}; 118262306a36Sopenharmony_ci 118362306a36Sopenharmony_cistruct ocrdma_qp_params { 118462306a36Sopenharmony_ci u32 id; 118562306a36Sopenharmony_ci u32 max_wqe_rqe; 118662306a36Sopenharmony_ci u32 max_sge_send_write; 118762306a36Sopenharmony_ci u32 max_sge_recv_flags; 118862306a36Sopenharmony_ci u32 max_ord_ird; 118962306a36Sopenharmony_ci u32 wq_rq_cqid; 119062306a36Sopenharmony_ci u32 hop_lmt_rq_psn; 119162306a36Sopenharmony_ci u32 tclass_sq_psn; 119262306a36Sopenharmony_ci u32 ack_to_rnr_rtc_dest_qpn; 119362306a36Sopenharmony_ci u32 path_mtu_pkey_indx; 119462306a36Sopenharmony_ci u32 rnt_rc_sl_fl; 119562306a36Sopenharmony_ci u8 sgid[16]; 119662306a36Sopenharmony_ci u8 dgid[16]; 119762306a36Sopenharmony_ci u32 dmac_b0_to_b3; 119862306a36Sopenharmony_ci u32 vlan_dmac_b4_to_b5; 119962306a36Sopenharmony_ci u32 qkey; 120062306a36Sopenharmony_ci}; 120162306a36Sopenharmony_ci 120262306a36Sopenharmony_ci 120362306a36Sopenharmony_cistruct ocrdma_modify_qp { 120462306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 120562306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_ci struct ocrdma_qp_params params; 120862306a36Sopenharmony_ci u32 flags; 120962306a36Sopenharmony_ci u32 rdma_flags; 121062306a36Sopenharmony_ci u32 num_outstanding_atomic_rd; 121162306a36Sopenharmony_ci}; 121262306a36Sopenharmony_ci 121362306a36Sopenharmony_cienum { 121462306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_RQE_SHIFT = 0, 121562306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_RQE_MASK = 0xFFFF, 121662306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_WQE_SHIFT = 16, 121762306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_WQE_MASK = 0xFFFF << 121862306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_WQE_SHIFT, 121962306a36Sopenharmony_ci 122062306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_IRD_SHIFT = 0, 122162306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_IRD_MASK = 0xFFFF, 122262306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_ORD_SHIFT = 16, 122362306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_ORD_MASK = 0xFFFF << 122462306a36Sopenharmony_ci OCRDMA_MODIFY_QP_RSP_MAX_ORD_SHIFT 122562306a36Sopenharmony_ci}; 122662306a36Sopenharmony_ci 122762306a36Sopenharmony_cistruct ocrdma_modify_qp_rsp { 122862306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 122962306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 123062306a36Sopenharmony_ci 123162306a36Sopenharmony_ci u32 max_wqe_rqe; 123262306a36Sopenharmony_ci u32 max_ord_ird; 123362306a36Sopenharmony_ci}; 123462306a36Sopenharmony_ci 123562306a36Sopenharmony_cistruct ocrdma_query_qp { 123662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 123762306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 123862306a36Sopenharmony_ci 123962306a36Sopenharmony_ci#define OCRDMA_QUERY_UP_QP_ID_SHIFT 0 124062306a36Sopenharmony_ci#define OCRDMA_QUERY_UP_QP_ID_MASK 0xFFFFFF 124162306a36Sopenharmony_ci u32 qp_id; 124262306a36Sopenharmony_ci}; 124362306a36Sopenharmony_ci 124462306a36Sopenharmony_cistruct ocrdma_query_qp_rsp { 124562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 124662306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 124762306a36Sopenharmony_ci struct ocrdma_qp_params params; 124862306a36Sopenharmony_ci u32 dpp_credits_cqid; 124962306a36Sopenharmony_ci u32 rbq_id; 125062306a36Sopenharmony_ci}; 125162306a36Sopenharmony_ci 125262306a36Sopenharmony_cienum { 125362306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_PD_ID_SHIFT = 0, 125462306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_PD_ID_MASK = 0xFFFF, 125562306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_PG_SZ_SHIFT = 16, 125662306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_PG_SZ_MASK = 0x3 << 125762306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_PG_SZ_SHIFT, 125862306a36Sopenharmony_ci 125962306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_MAX_RQE_SHIFT = 0, 126062306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_MAX_SGE_RECV_SHIFT = 16, 126162306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_MAX_SGE_RECV_MASK = 0xFFFF << 126262306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_MAX_SGE_RECV_SHIFT, 126362306a36Sopenharmony_ci 126462306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RQE_SIZE_SHIFT = 0, 126562306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RQE_SIZE_MASK = 0xFFFF, 126662306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT = 16, 126762306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_MASK = 0xFFFF << 126862306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_NUM_RQ_PAGES_SHIFT 126962306a36Sopenharmony_ci}; 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_cistruct ocrdma_create_srq { 127262306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 127362306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 127462306a36Sopenharmony_ci 127562306a36Sopenharmony_ci u32 pgsz_pdid; 127662306a36Sopenharmony_ci u32 max_sge_rqe; 127762306a36Sopenharmony_ci u32 pages_rqe_sz; 127862306a36Sopenharmony_ci struct ocrdma_pa rq_addr[MAX_OCRDMA_SRQ_PAGES]; 127962306a36Sopenharmony_ci}; 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_cienum { 128262306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_SRQ_ID_SHIFT = 0, 128362306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_SRQ_ID_MASK = 0xFFFFFF, 128462306a36Sopenharmony_ci 128562306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_MAX_RQE_ALLOCATED_SHIFT = 0, 128662306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_MAX_RQE_ALLOCATED_MASK = 0xFFFF, 128762306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_MAX_SGE_RECV_ALLOCATED_SHIFT = 16, 128862306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_MAX_SGE_RECV_ALLOCATED_MASK = 0xFFFF << 128962306a36Sopenharmony_ci OCRDMA_CREATE_SRQ_RSP_MAX_SGE_RECV_ALLOCATED_SHIFT 129062306a36Sopenharmony_ci}; 129162306a36Sopenharmony_ci 129262306a36Sopenharmony_cistruct ocrdma_create_srq_rsp { 129362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 129462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 129562306a36Sopenharmony_ci 129662306a36Sopenharmony_ci u32 id; 129762306a36Sopenharmony_ci u32 max_sge_rqe_allocated; 129862306a36Sopenharmony_ci}; 129962306a36Sopenharmony_ci 130062306a36Sopenharmony_cienum { 130162306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_ID_SHIFT = 0, 130262306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_ID_MASK = 0xFFFFFF, 130362306a36Sopenharmony_ci 130462306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_MAX_RQE_SHIFT = 0, 130562306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_MAX_RQE_MASK = 0xFFFF, 130662306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_LIMIT_SHIFT = 16, 130762306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ__LIMIT_MASK = 0xFFFF << 130862306a36Sopenharmony_ci OCRDMA_MODIFY_SRQ_LIMIT_SHIFT 130962306a36Sopenharmony_ci}; 131062306a36Sopenharmony_ci 131162306a36Sopenharmony_cistruct ocrdma_modify_srq { 131262306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 131362306a36Sopenharmony_ci struct ocrdma_mbx_rsp rep; 131462306a36Sopenharmony_ci 131562306a36Sopenharmony_ci u32 id; 131662306a36Sopenharmony_ci u32 limit_max_rqe; 131762306a36Sopenharmony_ci}; 131862306a36Sopenharmony_ci 131962306a36Sopenharmony_cienum { 132062306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_ID_SHIFT = 0, 132162306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_ID_MASK = 0xFFFFFF 132262306a36Sopenharmony_ci}; 132362306a36Sopenharmony_ci 132462306a36Sopenharmony_cistruct ocrdma_query_srq { 132562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 132662306a36Sopenharmony_ci struct ocrdma_mbx_rsp req; 132762306a36Sopenharmony_ci 132862306a36Sopenharmony_ci u32 id; 132962306a36Sopenharmony_ci}; 133062306a36Sopenharmony_ci 133162306a36Sopenharmony_cienum { 133262306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_PD_ID_SHIFT = 0, 133362306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_PD_ID_MASK = 0xFFFF, 133462306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_MAX_RQE_SHIFT = 16, 133562306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_MAX_RQE_MASK = 0xFFFF << 133662306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_MAX_RQE_SHIFT, 133762306a36Sopenharmony_ci 133862306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_MAX_SGE_RECV_SHIFT = 0, 133962306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_MAX_SGE_RECV_MASK = 0xFFFF, 134062306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_SRQ_LIMIT_SHIFT = 16, 134162306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_SRQ_LIMIT_MASK = 0xFFFF << 134262306a36Sopenharmony_ci OCRDMA_QUERY_SRQ_RSP_SRQ_LIMIT_SHIFT 134362306a36Sopenharmony_ci}; 134462306a36Sopenharmony_ci 134562306a36Sopenharmony_cistruct ocrdma_query_srq_rsp { 134662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 134762306a36Sopenharmony_ci struct ocrdma_mbx_rsp req; 134862306a36Sopenharmony_ci 134962306a36Sopenharmony_ci u32 max_rqe_pdid; 135062306a36Sopenharmony_ci u32 srq_lmt_max_sge; 135162306a36Sopenharmony_ci}; 135262306a36Sopenharmony_ci 135362306a36Sopenharmony_cienum { 135462306a36Sopenharmony_ci OCRDMA_DESTROY_SRQ_ID_SHIFT = 0, 135562306a36Sopenharmony_ci OCRDMA_DESTROY_SRQ_ID_MASK = 0xFFFFFF 135662306a36Sopenharmony_ci}; 135762306a36Sopenharmony_ci 135862306a36Sopenharmony_cistruct ocrdma_destroy_srq { 135962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 136062306a36Sopenharmony_ci struct ocrdma_mbx_rsp req; 136162306a36Sopenharmony_ci 136262306a36Sopenharmony_ci u32 id; 136362306a36Sopenharmony_ci}; 136462306a36Sopenharmony_ci 136562306a36Sopenharmony_cienum { 136662306a36Sopenharmony_ci OCRDMA_ALLOC_PD_ENABLE_DPP = BIT(16), 136762306a36Sopenharmony_ci OCRDMA_DPP_PAGE_SIZE = 4096 136862306a36Sopenharmony_ci}; 136962306a36Sopenharmony_ci 137062306a36Sopenharmony_cistruct ocrdma_alloc_pd { 137162306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 137262306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 137362306a36Sopenharmony_ci u32 enable_dpp_rsvd; 137462306a36Sopenharmony_ci}; 137562306a36Sopenharmony_ci 137662306a36Sopenharmony_cienum { 137762306a36Sopenharmony_ci OCRDMA_ALLOC_PD_RSP_DPP = BIT(16), 137862306a36Sopenharmony_ci OCRDMA_ALLOC_PD_RSP_DPP_PAGE_SHIFT = 20, 137962306a36Sopenharmony_ci OCRDMA_ALLOC_PD_RSP_PDID_MASK = 0xFFFF, 138062306a36Sopenharmony_ci}; 138162306a36Sopenharmony_ci 138262306a36Sopenharmony_cistruct ocrdma_alloc_pd_rsp { 138362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 138462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 138562306a36Sopenharmony_ci u32 dpp_page_pdid; 138662306a36Sopenharmony_ci}; 138762306a36Sopenharmony_ci 138862306a36Sopenharmony_cistruct ocrdma_dealloc_pd { 138962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 139062306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 139162306a36Sopenharmony_ci u32 id; 139262306a36Sopenharmony_ci}; 139362306a36Sopenharmony_ci 139462306a36Sopenharmony_cistruct ocrdma_dealloc_pd_rsp { 139562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 139662306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 139762306a36Sopenharmony_ci}; 139862306a36Sopenharmony_ci 139962306a36Sopenharmony_cistruct ocrdma_alloc_pd_range { 140062306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 140162306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 140262306a36Sopenharmony_ci u32 enable_dpp_rsvd; 140362306a36Sopenharmony_ci u32 pd_count; 140462306a36Sopenharmony_ci}; 140562306a36Sopenharmony_ci 140662306a36Sopenharmony_cistruct ocrdma_alloc_pd_range_rsp { 140762306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 140862306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 140962306a36Sopenharmony_ci u32 dpp_page_pdid; 141062306a36Sopenharmony_ci u32 pd_count; 141162306a36Sopenharmony_ci}; 141262306a36Sopenharmony_ci 141362306a36Sopenharmony_cienum { 141462306a36Sopenharmony_ci OCRDMA_ALLOC_PD_RNG_RSP_START_PDID_MASK = 0xFFFF, 141562306a36Sopenharmony_ci}; 141662306a36Sopenharmony_ci 141762306a36Sopenharmony_cistruct ocrdma_dealloc_pd_range { 141862306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 141962306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 142062306a36Sopenharmony_ci u32 start_pd_id; 142162306a36Sopenharmony_ci u32 pd_count; 142262306a36Sopenharmony_ci}; 142362306a36Sopenharmony_ci 142462306a36Sopenharmony_cistruct ocrdma_dealloc_pd_range_rsp { 142562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 142662306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 142762306a36Sopenharmony_ci u32 rsvd; 142862306a36Sopenharmony_ci}; 142962306a36Sopenharmony_ci 143062306a36Sopenharmony_cienum { 143162306a36Sopenharmony_ci OCRDMA_ADDR_CHECK_ENABLE = 1, 143262306a36Sopenharmony_ci OCRDMA_ADDR_CHECK_DISABLE = 0 143362306a36Sopenharmony_ci}; 143462306a36Sopenharmony_ci 143562306a36Sopenharmony_cienum { 143662306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_PD_ID_SHIFT = 0, 143762306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_PD_ID_MASK = 0xFFFF, 143862306a36Sopenharmony_ci 143962306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_ADDR_CHECK_SHIFT = 0, 144062306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_ADDR_CHECK_MASK = BIT(0), 144162306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_FMR_SHIFT = 1, 144262306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_FMR_MASK = BIT(1), 144362306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_INV_SHIFT = 2, 144462306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_INV_MASK = BIT(2), 144562306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_WR_SHIFT = 3, 144662306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_WR_MASK = BIT(3), 144762306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_RD_SHIFT = 4, 144862306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_RD_MASK = BIT(4), 144962306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_LOCAL_WR_SHIFT = 5, 145062306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_LOCAL_WR_MASK = BIT(5), 145162306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_ATOMIC_MASK = BIT(6), 145262306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_REMOTE_ATOMIC_SHIFT = 6, 145362306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_PBL_SIZE_SHIFT = 16, 145462306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_PBL_SIZE_MASK = 0xFFFF << 145562306a36Sopenharmony_ci OCRDMA_ALLOC_LKEY_PBL_SIZE_SHIFT 145662306a36Sopenharmony_ci}; 145762306a36Sopenharmony_ci 145862306a36Sopenharmony_cistruct ocrdma_alloc_lkey { 145962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 146062306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 146162306a36Sopenharmony_ci 146262306a36Sopenharmony_ci u32 pdid; 146362306a36Sopenharmony_ci u32 pbl_sz_flags; 146462306a36Sopenharmony_ci}; 146562306a36Sopenharmony_ci 146662306a36Sopenharmony_cistruct ocrdma_alloc_lkey_rsp { 146762306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 146862306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 146962306a36Sopenharmony_ci 147062306a36Sopenharmony_ci u32 lrkey; 147162306a36Sopenharmony_ci u32 num_pbl_rsvd; 147262306a36Sopenharmony_ci}; 147362306a36Sopenharmony_ci 147462306a36Sopenharmony_cistruct ocrdma_dealloc_lkey { 147562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 147662306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 147762306a36Sopenharmony_ci 147862306a36Sopenharmony_ci u32 lkey; 147962306a36Sopenharmony_ci u32 rsvd_frmr; 148062306a36Sopenharmony_ci}; 148162306a36Sopenharmony_ci 148262306a36Sopenharmony_cistruct ocrdma_dealloc_lkey_rsp { 148362306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 148462306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 148562306a36Sopenharmony_ci}; 148662306a36Sopenharmony_ci 148762306a36Sopenharmony_ci#define MAX_OCRDMA_NSMR_PBL (u32)22 148862306a36Sopenharmony_ci#define MAX_OCRDMA_PBL_SIZE 65536 148962306a36Sopenharmony_ci#define MAX_OCRDMA_PBL_PER_LKEY 32767 149062306a36Sopenharmony_ci 149162306a36Sopenharmony_cienum { 149262306a36Sopenharmony_ci OCRDMA_REG_NSMR_LRKEY_INDEX_SHIFT = 0, 149362306a36Sopenharmony_ci OCRDMA_REG_NSMR_LRKEY_INDEX_MASK = 0xFFFFFF, 149462306a36Sopenharmony_ci OCRDMA_REG_NSMR_LRKEY_SHIFT = 24, 149562306a36Sopenharmony_ci OCRDMA_REG_NSMR_LRKEY_MASK = 0xFF << 149662306a36Sopenharmony_ci OCRDMA_REG_NSMR_LRKEY_SHIFT, 149762306a36Sopenharmony_ci 149862306a36Sopenharmony_ci OCRDMA_REG_NSMR_PD_ID_SHIFT = 0, 149962306a36Sopenharmony_ci OCRDMA_REG_NSMR_PD_ID_MASK = 0xFFFF, 150062306a36Sopenharmony_ci OCRDMA_REG_NSMR_NUM_PBL_SHIFT = 16, 150162306a36Sopenharmony_ci OCRDMA_REG_NSMR_NUM_PBL_MASK = 0xFFFF << 150262306a36Sopenharmony_ci OCRDMA_REG_NSMR_NUM_PBL_SHIFT, 150362306a36Sopenharmony_ci 150462306a36Sopenharmony_ci OCRDMA_REG_NSMR_PBE_SIZE_SHIFT = 0, 150562306a36Sopenharmony_ci OCRDMA_REG_NSMR_PBE_SIZE_MASK = 0xFFFF, 150662306a36Sopenharmony_ci OCRDMA_REG_NSMR_HPAGE_SIZE_SHIFT = 16, 150762306a36Sopenharmony_ci OCRDMA_REG_NSMR_HPAGE_SIZE_MASK = 0xFF << 150862306a36Sopenharmony_ci OCRDMA_REG_NSMR_HPAGE_SIZE_SHIFT, 150962306a36Sopenharmony_ci OCRDMA_REG_NSMR_BIND_MEMWIN_SHIFT = 24, 151062306a36Sopenharmony_ci OCRDMA_REG_NSMR_BIND_MEMWIN_MASK = BIT(24), 151162306a36Sopenharmony_ci OCRDMA_REG_NSMR_ZB_SHIFT = 25, 151262306a36Sopenharmony_ci OCRDMA_REG_NSMR_ZB_SHIFT_MASK = BIT(25), 151362306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_INV_SHIFT = 26, 151462306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_INV_MASK = BIT(26), 151562306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_WR_SHIFT = 27, 151662306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_WR_MASK = BIT(27), 151762306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_RD_SHIFT = 28, 151862306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_RD_MASK = BIT(28), 151962306a36Sopenharmony_ci OCRDMA_REG_NSMR_LOCAL_WR_SHIFT = 29, 152062306a36Sopenharmony_ci OCRDMA_REG_NSMR_LOCAL_WR_MASK = BIT(29), 152162306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_ATOMIC_SHIFT = 30, 152262306a36Sopenharmony_ci OCRDMA_REG_NSMR_REMOTE_ATOMIC_MASK = BIT(30), 152362306a36Sopenharmony_ci OCRDMA_REG_NSMR_LAST_SHIFT = 31, 152462306a36Sopenharmony_ci OCRDMA_REG_NSMR_LAST_MASK = BIT(31) 152562306a36Sopenharmony_ci}; 152662306a36Sopenharmony_ci 152762306a36Sopenharmony_cistruct ocrdma_reg_nsmr { 152862306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 152962306a36Sopenharmony_ci struct ocrdma_mbx_hdr cmd; 153062306a36Sopenharmony_ci 153162306a36Sopenharmony_ci u32 fr_mr; 153262306a36Sopenharmony_ci u32 num_pbl_pdid; 153362306a36Sopenharmony_ci u32 flags_hpage_pbe_sz; 153462306a36Sopenharmony_ci u32 totlen_low; 153562306a36Sopenharmony_ci u32 totlen_high; 153662306a36Sopenharmony_ci u32 fbo_low; 153762306a36Sopenharmony_ci u32 fbo_high; 153862306a36Sopenharmony_ci u32 va_loaddr; 153962306a36Sopenharmony_ci u32 va_hiaddr; 154062306a36Sopenharmony_ci struct ocrdma_pa pbl[MAX_OCRDMA_NSMR_PBL]; 154162306a36Sopenharmony_ci}; 154262306a36Sopenharmony_ci 154362306a36Sopenharmony_cienum { 154462306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_PBL_SHIFT = 0, 154562306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_PBL_SHIFT_MASK = 0xFFFF, 154662306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT = 16, 154762306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_NUM_PBL_MASK = 0xFFFF << 154862306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_NUM_PBL_SHIFT, 154962306a36Sopenharmony_ci 155062306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_LAST_SHIFT = 31, 155162306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_LAST_MASK = BIT(31) 155262306a36Sopenharmony_ci}; 155362306a36Sopenharmony_ci 155462306a36Sopenharmony_cistruct ocrdma_reg_nsmr_cont { 155562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 155662306a36Sopenharmony_ci struct ocrdma_mbx_hdr cmd; 155762306a36Sopenharmony_ci 155862306a36Sopenharmony_ci u32 lrkey; 155962306a36Sopenharmony_ci u32 num_pbl_offset; 156062306a36Sopenharmony_ci u32 last; 156162306a36Sopenharmony_ci 156262306a36Sopenharmony_ci struct ocrdma_pa pbl[MAX_OCRDMA_NSMR_PBL]; 156362306a36Sopenharmony_ci}; 156462306a36Sopenharmony_ci 156562306a36Sopenharmony_cistruct ocrdma_pbe { 156662306a36Sopenharmony_ci u32 pa_hi; 156762306a36Sopenharmony_ci u32 pa_lo; 156862306a36Sopenharmony_ci}; 156962306a36Sopenharmony_ci 157062306a36Sopenharmony_cienum { 157162306a36Sopenharmony_ci OCRDMA_REG_NSMR_RSP_NUM_PBL_SHIFT = 16, 157262306a36Sopenharmony_ci OCRDMA_REG_NSMR_RSP_NUM_PBL_MASK = 0xFFFF0000 157362306a36Sopenharmony_ci}; 157462306a36Sopenharmony_cistruct ocrdma_reg_nsmr_rsp { 157562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 157662306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 157762306a36Sopenharmony_ci 157862306a36Sopenharmony_ci u32 lrkey; 157962306a36Sopenharmony_ci u32 num_pbl; 158062306a36Sopenharmony_ci}; 158162306a36Sopenharmony_ci 158262306a36Sopenharmony_cienum { 158362306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_LRKEY_INDEX_SHIFT = 0, 158462306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_LRKEY_INDEX_MASK = 0xFFFFFF, 158562306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_LRKEY_SHIFT = 24, 158662306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_LRKEY_MASK = 0xFF << 158762306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_LRKEY_SHIFT, 158862306a36Sopenharmony_ci 158962306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_NUM_PBL_SHIFT = 16, 159062306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_NUM_PBL_MASK = 0xFFFF << 159162306a36Sopenharmony_ci OCRDMA_REG_NSMR_CONT_RSP_NUM_PBL_SHIFT 159262306a36Sopenharmony_ci}; 159362306a36Sopenharmony_ci 159462306a36Sopenharmony_cistruct ocrdma_reg_nsmr_cont_rsp { 159562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 159662306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 159762306a36Sopenharmony_ci 159862306a36Sopenharmony_ci u32 lrkey_key_index; 159962306a36Sopenharmony_ci u32 num_pbl; 160062306a36Sopenharmony_ci}; 160162306a36Sopenharmony_ci 160262306a36Sopenharmony_cienum { 160362306a36Sopenharmony_ci OCRDMA_ALLOC_MW_PD_ID_SHIFT = 0, 160462306a36Sopenharmony_ci OCRDMA_ALLOC_MW_PD_ID_MASK = 0xFFFF 160562306a36Sopenharmony_ci}; 160662306a36Sopenharmony_ci 160762306a36Sopenharmony_cistruct ocrdma_alloc_mw { 160862306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 160962306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 161062306a36Sopenharmony_ci 161162306a36Sopenharmony_ci u32 pdid; 161262306a36Sopenharmony_ci}; 161362306a36Sopenharmony_ci 161462306a36Sopenharmony_cienum { 161562306a36Sopenharmony_ci OCRDMA_ALLOC_MW_RSP_LRKEY_INDEX_SHIFT = 0, 161662306a36Sopenharmony_ci OCRDMA_ALLOC_MW_RSP_LRKEY_INDEX_MASK = 0xFFFFFF 161762306a36Sopenharmony_ci}; 161862306a36Sopenharmony_ci 161962306a36Sopenharmony_cistruct ocrdma_alloc_mw_rsp { 162062306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 162162306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 162262306a36Sopenharmony_ci 162362306a36Sopenharmony_ci u32 lrkey_index; 162462306a36Sopenharmony_ci}; 162562306a36Sopenharmony_ci 162662306a36Sopenharmony_cistruct ocrdma_attach_mcast { 162762306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 162862306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 162962306a36Sopenharmony_ci u32 qp_id; 163062306a36Sopenharmony_ci u8 mgid[16]; 163162306a36Sopenharmony_ci u32 mac_b0_to_b3; 163262306a36Sopenharmony_ci u32 vlan_mac_b4_to_b5; 163362306a36Sopenharmony_ci}; 163462306a36Sopenharmony_ci 163562306a36Sopenharmony_cistruct ocrdma_attach_mcast_rsp { 163662306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 163762306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 163862306a36Sopenharmony_ci}; 163962306a36Sopenharmony_ci 164062306a36Sopenharmony_cistruct ocrdma_detach_mcast { 164162306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 164262306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 164362306a36Sopenharmony_ci u32 qp_id; 164462306a36Sopenharmony_ci u8 mgid[16]; 164562306a36Sopenharmony_ci u32 mac_b0_to_b3; 164662306a36Sopenharmony_ci u32 vlan_mac_b4_to_b5; 164762306a36Sopenharmony_ci}; 164862306a36Sopenharmony_ci 164962306a36Sopenharmony_cistruct ocrdma_detach_mcast_rsp { 165062306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 165162306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 165262306a36Sopenharmony_ci}; 165362306a36Sopenharmony_ci 165462306a36Sopenharmony_cienum { 165562306a36Sopenharmony_ci OCRDMA_CREATE_AH_NUM_PAGES_SHIFT = 19, 165662306a36Sopenharmony_ci OCRDMA_CREATE_AH_NUM_PAGES_MASK = 0xF << 165762306a36Sopenharmony_ci OCRDMA_CREATE_AH_NUM_PAGES_SHIFT, 165862306a36Sopenharmony_ci 165962306a36Sopenharmony_ci OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT = 16, 166062306a36Sopenharmony_ci OCRDMA_CREATE_AH_PAGE_SIZE_MASK = 0x7 << 166162306a36Sopenharmony_ci OCRDMA_CREATE_AH_PAGE_SIZE_SHIFT, 166262306a36Sopenharmony_ci 166362306a36Sopenharmony_ci OCRDMA_CREATE_AH_ENTRY_SIZE_SHIFT = 23, 166462306a36Sopenharmony_ci OCRDMA_CREATE_AH_ENTRY_SIZE_MASK = 0x1FF << 166562306a36Sopenharmony_ci OCRDMA_CREATE_AH_ENTRY_SIZE_SHIFT, 166662306a36Sopenharmony_ci}; 166762306a36Sopenharmony_ci 166862306a36Sopenharmony_ci#define OCRDMA_AH_TBL_PAGES 8 166962306a36Sopenharmony_ci 167062306a36Sopenharmony_cistruct ocrdma_create_ah_tbl { 167162306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 167262306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 167362306a36Sopenharmony_ci 167462306a36Sopenharmony_ci u32 ah_conf; 167562306a36Sopenharmony_ci struct ocrdma_pa tbl_addr[8]; 167662306a36Sopenharmony_ci}; 167762306a36Sopenharmony_ci 167862306a36Sopenharmony_cistruct ocrdma_create_ah_tbl_rsp { 167962306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 168062306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 168162306a36Sopenharmony_ci u32 ahid; 168262306a36Sopenharmony_ci}; 168362306a36Sopenharmony_ci 168462306a36Sopenharmony_cistruct ocrdma_delete_ah_tbl { 168562306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 168662306a36Sopenharmony_ci struct ocrdma_mbx_hdr req; 168762306a36Sopenharmony_ci u32 ahid; 168862306a36Sopenharmony_ci}; 168962306a36Sopenharmony_ci 169062306a36Sopenharmony_cistruct ocrdma_delete_ah_tbl_rsp { 169162306a36Sopenharmony_ci struct ocrdma_mqe_hdr hdr; 169262306a36Sopenharmony_ci struct ocrdma_mbx_rsp rsp; 169362306a36Sopenharmony_ci}; 169462306a36Sopenharmony_ci 169562306a36Sopenharmony_cienum { 169662306a36Sopenharmony_ci OCRDMA_EQE_VALID_SHIFT = 0, 169762306a36Sopenharmony_ci OCRDMA_EQE_VALID_MASK = BIT(0), 169862306a36Sopenharmony_ci OCRDMA_EQE_MAJOR_CODE_MASK = 0x0E, 169962306a36Sopenharmony_ci OCRDMA_EQE_MAJOR_CODE_SHIFT = 0x01, 170062306a36Sopenharmony_ci OCRDMA_EQE_FOR_CQE_MASK = 0xFFFE, 170162306a36Sopenharmony_ci OCRDMA_EQE_RESOURCE_ID_SHIFT = 16, 170262306a36Sopenharmony_ci OCRDMA_EQE_RESOURCE_ID_MASK = 0xFFFF << 170362306a36Sopenharmony_ci OCRDMA_EQE_RESOURCE_ID_SHIFT, 170462306a36Sopenharmony_ci}; 170562306a36Sopenharmony_ci 170662306a36Sopenharmony_cienum major_code { 170762306a36Sopenharmony_ci OCRDMA_MAJOR_CODE_COMPLETION = 0x00, 170862306a36Sopenharmony_ci OCRDMA_MAJOR_CODE_SENTINAL = 0x01 170962306a36Sopenharmony_ci}; 171062306a36Sopenharmony_ci 171162306a36Sopenharmony_cistruct ocrdma_eqe { 171262306a36Sopenharmony_ci u32 id_valid; 171362306a36Sopenharmony_ci}; 171462306a36Sopenharmony_ci 171562306a36Sopenharmony_cienum OCRDMA_CQE_STATUS { 171662306a36Sopenharmony_ci OCRDMA_CQE_SUCCESS = 0, 171762306a36Sopenharmony_ci OCRDMA_CQE_LOC_LEN_ERR, 171862306a36Sopenharmony_ci OCRDMA_CQE_LOC_QP_OP_ERR, 171962306a36Sopenharmony_ci OCRDMA_CQE_LOC_EEC_OP_ERR, 172062306a36Sopenharmony_ci OCRDMA_CQE_LOC_PROT_ERR, 172162306a36Sopenharmony_ci OCRDMA_CQE_WR_FLUSH_ERR, 172262306a36Sopenharmony_ci OCRDMA_CQE_MW_BIND_ERR, 172362306a36Sopenharmony_ci OCRDMA_CQE_BAD_RESP_ERR, 172462306a36Sopenharmony_ci OCRDMA_CQE_LOC_ACCESS_ERR, 172562306a36Sopenharmony_ci OCRDMA_CQE_REM_INV_REQ_ERR, 172662306a36Sopenharmony_ci OCRDMA_CQE_REM_ACCESS_ERR, 172762306a36Sopenharmony_ci OCRDMA_CQE_REM_OP_ERR, 172862306a36Sopenharmony_ci OCRDMA_CQE_RETRY_EXC_ERR, 172962306a36Sopenharmony_ci OCRDMA_CQE_RNR_RETRY_EXC_ERR, 173062306a36Sopenharmony_ci OCRDMA_CQE_LOC_RDD_VIOL_ERR, 173162306a36Sopenharmony_ci OCRDMA_CQE_REM_INV_RD_REQ_ERR, 173262306a36Sopenharmony_ci OCRDMA_CQE_REM_ABORT_ERR, 173362306a36Sopenharmony_ci OCRDMA_CQE_INV_EECN_ERR, 173462306a36Sopenharmony_ci OCRDMA_CQE_INV_EEC_STATE_ERR, 173562306a36Sopenharmony_ci OCRDMA_CQE_FATAL_ERR, 173662306a36Sopenharmony_ci OCRDMA_CQE_RESP_TIMEOUT_ERR, 173762306a36Sopenharmony_ci OCRDMA_CQE_GENERAL_ERR, 173862306a36Sopenharmony_ci 173962306a36Sopenharmony_ci OCRDMA_MAX_CQE_ERR 174062306a36Sopenharmony_ci}; 174162306a36Sopenharmony_ci 174262306a36Sopenharmony_cienum { 174362306a36Sopenharmony_ci /* w0 */ 174462306a36Sopenharmony_ci OCRDMA_CQE_WQEIDX_SHIFT = 0, 174562306a36Sopenharmony_ci OCRDMA_CQE_WQEIDX_MASK = 0xFFFF, 174662306a36Sopenharmony_ci 174762306a36Sopenharmony_ci /* w1 */ 174862306a36Sopenharmony_ci OCRDMA_CQE_UD_XFER_LEN_SHIFT = 16, 174962306a36Sopenharmony_ci OCRDMA_CQE_UD_XFER_LEN_MASK = 0x1FFF, 175062306a36Sopenharmony_ci OCRDMA_CQE_PKEY_SHIFT = 0, 175162306a36Sopenharmony_ci OCRDMA_CQE_PKEY_MASK = 0xFFFF, 175262306a36Sopenharmony_ci OCRDMA_CQE_UD_L3TYPE_SHIFT = 29, 175362306a36Sopenharmony_ci OCRDMA_CQE_UD_L3TYPE_MASK = 0x07, 175462306a36Sopenharmony_ci 175562306a36Sopenharmony_ci /* w2 */ 175662306a36Sopenharmony_ci OCRDMA_CQE_QPN_SHIFT = 0, 175762306a36Sopenharmony_ci OCRDMA_CQE_QPN_MASK = 0x0000FFFF, 175862306a36Sopenharmony_ci 175962306a36Sopenharmony_ci OCRDMA_CQE_BUFTAG_SHIFT = 16, 176062306a36Sopenharmony_ci OCRDMA_CQE_BUFTAG_MASK = 0xFFFF << OCRDMA_CQE_BUFTAG_SHIFT, 176162306a36Sopenharmony_ci 176262306a36Sopenharmony_ci /* w3 */ 176362306a36Sopenharmony_ci OCRDMA_CQE_UD_STATUS_SHIFT = 24, 176462306a36Sopenharmony_ci OCRDMA_CQE_UD_STATUS_MASK = 0x7 << OCRDMA_CQE_UD_STATUS_SHIFT, 176562306a36Sopenharmony_ci OCRDMA_CQE_STATUS_SHIFT = 16, 176662306a36Sopenharmony_ci OCRDMA_CQE_STATUS_MASK = 0xFF << OCRDMA_CQE_STATUS_SHIFT, 176762306a36Sopenharmony_ci OCRDMA_CQE_VALID = BIT(31), 176862306a36Sopenharmony_ci OCRDMA_CQE_INVALIDATE = BIT(30), 176962306a36Sopenharmony_ci OCRDMA_CQE_QTYPE = BIT(29), 177062306a36Sopenharmony_ci OCRDMA_CQE_IMM = BIT(28), 177162306a36Sopenharmony_ci OCRDMA_CQE_WRITE_IMM = BIT(27), 177262306a36Sopenharmony_ci OCRDMA_CQE_QTYPE_SQ = 0, 177362306a36Sopenharmony_ci OCRDMA_CQE_QTYPE_RQ = 1, 177462306a36Sopenharmony_ci OCRDMA_CQE_SRCQP_MASK = 0xFFFFFF 177562306a36Sopenharmony_ci}; 177662306a36Sopenharmony_ci 177762306a36Sopenharmony_cistruct ocrdma_cqe { 177862306a36Sopenharmony_ci union { 177962306a36Sopenharmony_ci /* w0 to w2 */ 178062306a36Sopenharmony_ci struct { 178162306a36Sopenharmony_ci u32 wqeidx; 178262306a36Sopenharmony_ci u32 bytes_xfered; 178362306a36Sopenharmony_ci u32 qpn; 178462306a36Sopenharmony_ci } wq; 178562306a36Sopenharmony_ci struct { 178662306a36Sopenharmony_ci u32 lkey_immdt; 178762306a36Sopenharmony_ci u32 rxlen; 178862306a36Sopenharmony_ci u32 buftag_qpn; 178962306a36Sopenharmony_ci } rq; 179062306a36Sopenharmony_ci struct { 179162306a36Sopenharmony_ci u32 lkey_immdt; 179262306a36Sopenharmony_ci u32 rxlen_pkey; 179362306a36Sopenharmony_ci u32 buftag_qpn; 179462306a36Sopenharmony_ci } ud; 179562306a36Sopenharmony_ci struct { 179662306a36Sopenharmony_ci u32 word_0; 179762306a36Sopenharmony_ci u32 word_1; 179862306a36Sopenharmony_ci u32 qpn; 179962306a36Sopenharmony_ci } cmn; 180062306a36Sopenharmony_ci }; 180162306a36Sopenharmony_ci u32 flags_status_srcqpn; /* w3 */ 180262306a36Sopenharmony_ci}; 180362306a36Sopenharmony_ci 180462306a36Sopenharmony_cistruct ocrdma_sge { 180562306a36Sopenharmony_ci u32 addr_hi; 180662306a36Sopenharmony_ci u32 addr_lo; 180762306a36Sopenharmony_ci u32 lrkey; 180862306a36Sopenharmony_ci u32 len; 180962306a36Sopenharmony_ci}; 181062306a36Sopenharmony_ci 181162306a36Sopenharmony_cienum { 181262306a36Sopenharmony_ci OCRDMA_FLAG_SIG = 0x1, 181362306a36Sopenharmony_ci OCRDMA_FLAG_INV = 0x2, 181462306a36Sopenharmony_ci OCRDMA_FLAG_FENCE_L = 0x4, 181562306a36Sopenharmony_ci OCRDMA_FLAG_FENCE_R = 0x8, 181662306a36Sopenharmony_ci OCRDMA_FLAG_SOLICIT = 0x10, 181762306a36Sopenharmony_ci OCRDMA_FLAG_IMM = 0x20, 181862306a36Sopenharmony_ci OCRDMA_FLAG_AH_VLAN_PR = 0x40, 181962306a36Sopenharmony_ci 182062306a36Sopenharmony_ci /* Stag flags */ 182162306a36Sopenharmony_ci OCRDMA_LKEY_FLAG_LOCAL_WR = 0x1, 182262306a36Sopenharmony_ci OCRDMA_LKEY_FLAG_REMOTE_RD = 0x2, 182362306a36Sopenharmony_ci OCRDMA_LKEY_FLAG_REMOTE_WR = 0x4, 182462306a36Sopenharmony_ci OCRDMA_LKEY_FLAG_VATO = 0x8, 182562306a36Sopenharmony_ci}; 182662306a36Sopenharmony_ci 182762306a36Sopenharmony_cienum OCRDMA_WQE_OPCODE { 182862306a36Sopenharmony_ci OCRDMA_WRITE = 0x06, 182962306a36Sopenharmony_ci OCRDMA_READ = 0x0C, 183062306a36Sopenharmony_ci OCRDMA_RESV0 = 0x02, 183162306a36Sopenharmony_ci OCRDMA_SEND = 0x00, 183262306a36Sopenharmony_ci OCRDMA_CMP_SWP = 0x14, 183362306a36Sopenharmony_ci OCRDMA_BIND_MW = 0x10, 183462306a36Sopenharmony_ci OCRDMA_FR_MR = 0x11, 183562306a36Sopenharmony_ci OCRDMA_RESV1 = 0x0A, 183662306a36Sopenharmony_ci OCRDMA_LKEY_INV = 0x15, 183762306a36Sopenharmony_ci OCRDMA_FETCH_ADD = 0x13, 183862306a36Sopenharmony_ci OCRDMA_POST_RQ = 0x12 183962306a36Sopenharmony_ci}; 184062306a36Sopenharmony_ci 184162306a36Sopenharmony_cienum { 184262306a36Sopenharmony_ci OCRDMA_TYPE_INLINE = 0x0, 184362306a36Sopenharmony_ci OCRDMA_TYPE_LKEY = 0x1, 184462306a36Sopenharmony_ci}; 184562306a36Sopenharmony_ci 184662306a36Sopenharmony_cienum { 184762306a36Sopenharmony_ci OCRDMA_WQE_OPCODE_SHIFT = 0, 184862306a36Sopenharmony_ci OCRDMA_WQE_OPCODE_MASK = 0x0000001F, 184962306a36Sopenharmony_ci OCRDMA_WQE_FLAGS_SHIFT = 5, 185062306a36Sopenharmony_ci OCRDMA_WQE_TYPE_SHIFT = 16, 185162306a36Sopenharmony_ci OCRDMA_WQE_TYPE_MASK = 0x00030000, 185262306a36Sopenharmony_ci OCRDMA_WQE_SIZE_SHIFT = 18, 185362306a36Sopenharmony_ci OCRDMA_WQE_SIZE_MASK = 0xFF, 185462306a36Sopenharmony_ci OCRDMA_WQE_NXT_WQE_SIZE_SHIFT = 25, 185562306a36Sopenharmony_ci 185662306a36Sopenharmony_ci OCRDMA_WQE_LKEY_FLAGS_SHIFT = 0, 185762306a36Sopenharmony_ci OCRDMA_WQE_LKEY_FLAGS_MASK = 0xF 185862306a36Sopenharmony_ci}; 185962306a36Sopenharmony_ci 186062306a36Sopenharmony_ci/* header WQE for all the SQ and RQ operations */ 186162306a36Sopenharmony_cistruct ocrdma_hdr_wqe { 186262306a36Sopenharmony_ci u32 cw; 186362306a36Sopenharmony_ci union { 186462306a36Sopenharmony_ci u32 rsvd_tag; 186562306a36Sopenharmony_ci u32 rsvd_lkey_flags; 186662306a36Sopenharmony_ci }; 186762306a36Sopenharmony_ci union { 186862306a36Sopenharmony_ci u32 immdt; 186962306a36Sopenharmony_ci u32 lkey; 187062306a36Sopenharmony_ci }; 187162306a36Sopenharmony_ci u32 total_len; 187262306a36Sopenharmony_ci}; 187362306a36Sopenharmony_ci 187462306a36Sopenharmony_cistruct ocrdma_ewqe_ud_hdr { 187562306a36Sopenharmony_ci u32 rsvd_dest_qpn; 187662306a36Sopenharmony_ci u32 qkey; 187762306a36Sopenharmony_ci u32 rsvd_ahid; 187862306a36Sopenharmony_ci u32 hdr_type; 187962306a36Sopenharmony_ci}; 188062306a36Sopenharmony_ci 188162306a36Sopenharmony_ci/* extended wqe followed by hdr_wqe for Fast Memory register */ 188262306a36Sopenharmony_cistruct ocrdma_ewqe_fr { 188362306a36Sopenharmony_ci u32 va_hi; 188462306a36Sopenharmony_ci u32 va_lo; 188562306a36Sopenharmony_ci u32 fbo_hi; 188662306a36Sopenharmony_ci u32 fbo_lo; 188762306a36Sopenharmony_ci u32 size_sge; 188862306a36Sopenharmony_ci u32 num_sges; 188962306a36Sopenharmony_ci u32 rsvd; 189062306a36Sopenharmony_ci u32 rsvd2; 189162306a36Sopenharmony_ci}; 189262306a36Sopenharmony_ci 189362306a36Sopenharmony_cistruct ocrdma_eth_basic { 189462306a36Sopenharmony_ci u8 dmac[6]; 189562306a36Sopenharmony_ci u8 smac[6]; 189662306a36Sopenharmony_ci __be16 eth_type; 189762306a36Sopenharmony_ci} __packed; 189862306a36Sopenharmony_ci 189962306a36Sopenharmony_cistruct ocrdma_eth_vlan { 190062306a36Sopenharmony_ci u8 dmac[6]; 190162306a36Sopenharmony_ci u8 smac[6]; 190262306a36Sopenharmony_ci __be16 eth_type; 190362306a36Sopenharmony_ci __be16 vlan_tag; 190462306a36Sopenharmony_ci __be16 roce_eth_type; 190562306a36Sopenharmony_ci} __packed; 190662306a36Sopenharmony_ci 190762306a36Sopenharmony_cistruct ocrdma_grh { 190862306a36Sopenharmony_ci __be32 tclass_flow; 190962306a36Sopenharmony_ci __be32 pdid_hoplimit; 191062306a36Sopenharmony_ci u8 sgid[16]; 191162306a36Sopenharmony_ci u8 dgid[16]; 191262306a36Sopenharmony_ci u16 rsvd; 191362306a36Sopenharmony_ci} __packed; 191462306a36Sopenharmony_ci 191562306a36Sopenharmony_ci#define OCRDMA_AV_VALID BIT(7) 191662306a36Sopenharmony_ci#define OCRDMA_AV_VLAN_VALID BIT(1) 191762306a36Sopenharmony_ci 191862306a36Sopenharmony_cistruct ocrdma_av { 191962306a36Sopenharmony_ci struct ocrdma_eth_vlan eth_hdr; 192062306a36Sopenharmony_ci struct ocrdma_grh grh; 192162306a36Sopenharmony_ci u32 valid; 192262306a36Sopenharmony_ci} __packed; 192362306a36Sopenharmony_ci 192462306a36Sopenharmony_cistruct ocrdma_rsrc_stats { 192562306a36Sopenharmony_ci u32 dpp_pds; 192662306a36Sopenharmony_ci u32 non_dpp_pds; 192762306a36Sopenharmony_ci u32 rc_dpp_qps; 192862306a36Sopenharmony_ci u32 uc_dpp_qps; 192962306a36Sopenharmony_ci u32 ud_dpp_qps; 193062306a36Sopenharmony_ci u32 rc_non_dpp_qps; 193162306a36Sopenharmony_ci u32 rsvd; 193262306a36Sopenharmony_ci u32 uc_non_dpp_qps; 193362306a36Sopenharmony_ci u32 ud_non_dpp_qps; 193462306a36Sopenharmony_ci u32 rsvd1; 193562306a36Sopenharmony_ci u32 srqs; 193662306a36Sopenharmony_ci u32 rbqs; 193762306a36Sopenharmony_ci u32 r64K_nsmr; 193862306a36Sopenharmony_ci u32 r64K_to_2M_nsmr; 193962306a36Sopenharmony_ci u32 r2M_to_44M_nsmr; 194062306a36Sopenharmony_ci u32 r44M_to_1G_nsmr; 194162306a36Sopenharmony_ci u32 r1G_to_4G_nsmr; 194262306a36Sopenharmony_ci u32 nsmr_count_4G_to_32G; 194362306a36Sopenharmony_ci u32 r32G_to_64G_nsmr; 194462306a36Sopenharmony_ci u32 r64G_to_128G_nsmr; 194562306a36Sopenharmony_ci u32 r128G_to_higher_nsmr; 194662306a36Sopenharmony_ci u32 embedded_nsmr; 194762306a36Sopenharmony_ci u32 frmr; 194862306a36Sopenharmony_ci u32 prefetch_qps; 194962306a36Sopenharmony_ci u32 ondemand_qps; 195062306a36Sopenharmony_ci u32 phy_mr; 195162306a36Sopenharmony_ci u32 mw; 195262306a36Sopenharmony_ci u32 rsvd2[7]; 195362306a36Sopenharmony_ci}; 195462306a36Sopenharmony_ci 195562306a36Sopenharmony_cistruct ocrdma_db_err_stats { 195662306a36Sopenharmony_ci u32 sq_doorbell_errors; 195762306a36Sopenharmony_ci u32 cq_doorbell_errors; 195862306a36Sopenharmony_ci u32 rq_srq_doorbell_errors; 195962306a36Sopenharmony_ci u32 cq_overflow_errors; 196062306a36Sopenharmony_ci u32 rsvd[4]; 196162306a36Sopenharmony_ci}; 196262306a36Sopenharmony_ci 196362306a36Sopenharmony_cistruct ocrdma_wqe_stats { 196462306a36Sopenharmony_ci u32 large_send_rc_wqes_lo; 196562306a36Sopenharmony_ci u32 large_send_rc_wqes_hi; 196662306a36Sopenharmony_ci u32 large_write_rc_wqes_lo; 196762306a36Sopenharmony_ci u32 large_write_rc_wqes_hi; 196862306a36Sopenharmony_ci u32 rsvd[4]; 196962306a36Sopenharmony_ci u32 read_wqes_lo; 197062306a36Sopenharmony_ci u32 read_wqes_hi; 197162306a36Sopenharmony_ci u32 frmr_wqes_lo; 197262306a36Sopenharmony_ci u32 frmr_wqes_hi; 197362306a36Sopenharmony_ci u32 mw_bind_wqes_lo; 197462306a36Sopenharmony_ci u32 mw_bind_wqes_hi; 197562306a36Sopenharmony_ci u32 invalidate_wqes_lo; 197662306a36Sopenharmony_ci u32 invalidate_wqes_hi; 197762306a36Sopenharmony_ci u32 rsvd1[2]; 197862306a36Sopenharmony_ci u32 dpp_wqe_drops; 197962306a36Sopenharmony_ci u32 rsvd2[5]; 198062306a36Sopenharmony_ci}; 198162306a36Sopenharmony_ci 198262306a36Sopenharmony_cistruct ocrdma_tx_stats { 198362306a36Sopenharmony_ci u32 send_pkts_lo; 198462306a36Sopenharmony_ci u32 send_pkts_hi; 198562306a36Sopenharmony_ci u32 write_pkts_lo; 198662306a36Sopenharmony_ci u32 write_pkts_hi; 198762306a36Sopenharmony_ci u32 read_pkts_lo; 198862306a36Sopenharmony_ci u32 read_pkts_hi; 198962306a36Sopenharmony_ci u32 read_rsp_pkts_lo; 199062306a36Sopenharmony_ci u32 read_rsp_pkts_hi; 199162306a36Sopenharmony_ci u32 ack_pkts_lo; 199262306a36Sopenharmony_ci u32 ack_pkts_hi; 199362306a36Sopenharmony_ci u32 send_bytes_lo; 199462306a36Sopenharmony_ci u32 send_bytes_hi; 199562306a36Sopenharmony_ci u32 write_bytes_lo; 199662306a36Sopenharmony_ci u32 write_bytes_hi; 199762306a36Sopenharmony_ci u32 read_req_bytes_lo; 199862306a36Sopenharmony_ci u32 read_req_bytes_hi; 199962306a36Sopenharmony_ci u32 read_rsp_bytes_lo; 200062306a36Sopenharmony_ci u32 read_rsp_bytes_hi; 200162306a36Sopenharmony_ci u32 ack_timeouts; 200262306a36Sopenharmony_ci u32 rsvd[5]; 200362306a36Sopenharmony_ci}; 200462306a36Sopenharmony_ci 200562306a36Sopenharmony_ci 200662306a36Sopenharmony_cistruct ocrdma_tx_qp_err_stats { 200762306a36Sopenharmony_ci u32 local_length_errors; 200862306a36Sopenharmony_ci u32 local_protection_errors; 200962306a36Sopenharmony_ci u32 local_qp_operation_errors; 201062306a36Sopenharmony_ci u32 retry_count_exceeded_errors; 201162306a36Sopenharmony_ci u32 rnr_retry_count_exceeded_errors; 201262306a36Sopenharmony_ci u32 rsvd[3]; 201362306a36Sopenharmony_ci}; 201462306a36Sopenharmony_ci 201562306a36Sopenharmony_cistruct ocrdma_rx_stats { 201662306a36Sopenharmony_ci u32 roce_frame_bytes_lo; 201762306a36Sopenharmony_ci u32 roce_frame_bytes_hi; 201862306a36Sopenharmony_ci u32 roce_frame_icrc_drops; 201962306a36Sopenharmony_ci u32 roce_frame_payload_len_drops; 202062306a36Sopenharmony_ci u32 ud_drops; 202162306a36Sopenharmony_ci u32 qp1_drops; 202262306a36Sopenharmony_ci u32 psn_error_request_packets; 202362306a36Sopenharmony_ci u32 psn_error_resp_packets; 202462306a36Sopenharmony_ci u32 rnr_nak_timeouts; 202562306a36Sopenharmony_ci u32 rnr_nak_receives; 202662306a36Sopenharmony_ci u32 roce_frame_rxmt_drops; 202762306a36Sopenharmony_ci u32 nak_count_psn_sequence_errors; 202862306a36Sopenharmony_ci u32 rc_drop_count_lookup_errors; 202962306a36Sopenharmony_ci u32 rq_rnr_naks; 203062306a36Sopenharmony_ci u32 srq_rnr_naks; 203162306a36Sopenharmony_ci u32 roce_frames_lo; 203262306a36Sopenharmony_ci u32 roce_frames_hi; 203362306a36Sopenharmony_ci u32 rsvd; 203462306a36Sopenharmony_ci}; 203562306a36Sopenharmony_ci 203662306a36Sopenharmony_cistruct ocrdma_rx_qp_err_stats { 203762306a36Sopenharmony_ci u32 nak_invalid_request_errors; 203862306a36Sopenharmony_ci u32 nak_remote_operation_errors; 203962306a36Sopenharmony_ci u32 nak_count_remote_access_errors; 204062306a36Sopenharmony_ci u32 local_length_errors; 204162306a36Sopenharmony_ci u32 local_protection_errors; 204262306a36Sopenharmony_ci u32 local_qp_operation_errors; 204362306a36Sopenharmony_ci u32 rsvd[2]; 204462306a36Sopenharmony_ci}; 204562306a36Sopenharmony_ci 204662306a36Sopenharmony_cistruct ocrdma_tx_dbg_stats { 204762306a36Sopenharmony_ci u32 data[100]; 204862306a36Sopenharmony_ci}; 204962306a36Sopenharmony_ci 205062306a36Sopenharmony_cistruct ocrdma_rx_dbg_stats { 205162306a36Sopenharmony_ci u32 data[200]; 205262306a36Sopenharmony_ci}; 205362306a36Sopenharmony_ci 205462306a36Sopenharmony_cistruct ocrdma_rdma_stats_req { 205562306a36Sopenharmony_ci struct ocrdma_mbx_hdr hdr; 205662306a36Sopenharmony_ci u8 reset_stats; 205762306a36Sopenharmony_ci u8 rsvd[3]; 205862306a36Sopenharmony_ci} __packed; 205962306a36Sopenharmony_ci 206062306a36Sopenharmony_cistruct ocrdma_rdma_stats_resp { 206162306a36Sopenharmony_ci struct ocrdma_mbx_hdr hdr; 206262306a36Sopenharmony_ci struct ocrdma_rsrc_stats act_rsrc_stats; 206362306a36Sopenharmony_ci struct ocrdma_rsrc_stats th_rsrc_stats; 206462306a36Sopenharmony_ci struct ocrdma_db_err_stats db_err_stats; 206562306a36Sopenharmony_ci struct ocrdma_wqe_stats wqe_stats; 206662306a36Sopenharmony_ci struct ocrdma_tx_stats tx_stats; 206762306a36Sopenharmony_ci struct ocrdma_tx_qp_err_stats tx_qp_err_stats; 206862306a36Sopenharmony_ci struct ocrdma_rx_stats rx_stats; 206962306a36Sopenharmony_ci struct ocrdma_rx_qp_err_stats rx_qp_err_stats; 207062306a36Sopenharmony_ci struct ocrdma_tx_dbg_stats tx_dbg_stats; 207162306a36Sopenharmony_ci struct ocrdma_rx_dbg_stats rx_dbg_stats; 207262306a36Sopenharmony_ci} __packed; 207362306a36Sopenharmony_ci 207462306a36Sopenharmony_cienum { 207562306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_EPROM_VER_LO_MASK = 0xFF, 207662306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_EPROM_VER_HI_MASK = 0xFF00, 207762306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_EPROM_VER_HI_SHIFT = 0x08, 207862306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_CDBLEN_MASK = 0xFFFF, 207962306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ASIC_REV_MASK = 0xFF0000, 208062306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ASIC_REV_SHIFT = 0x10, 208162306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID0_MASK = 0xFF000000, 208262306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID0_SHIFT = 0x18, 208362306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID13_MASK = 0xFF, 208462306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID14_MASK = 0xFF00, 208562306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID14_SHIFT = 0x08, 208662306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID15_MASK = 0xFF0000, 208762306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_GUID15_SHIFT = 0x10, 208862306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCNT_MASK = 0xFF000000, 208962306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCNT_SHIFT = 0x18, 209062306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_LDTOUT_MASK = 0xFFFF, 209162306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ISCSI_VER_MASK = 0xFF0000, 209262306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ISCSI_VER_SHIFT = 0x10, 209362306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_MFUNC_DEV_MASK = 0xFF000000, 209462306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_MFUNC_DEV_SHIFT = 0x18, 209562306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_CV_MASK = 0xFF, 209662306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_HBA_ST_MASK = 0xFF00, 209762306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_HBA_ST_SHIFT = 0x08, 209862306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_MAX_DOMS_MASK = 0xFF0000, 209962306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_MAX_DOMS_SHIFT = 0x10, 210062306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PTNUM_MASK = 0x3F000000, 210162306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PTNUM_SHIFT = 0x18, 210262306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PT_MASK = 0xC0000000, 210362306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PT_SHIFT = 0x1E, 210462306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ISCSI_FET_MASK = 0xFF, 210562306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ASIC_GEN_MASK = 0xFF00, 210662306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_ASIC_GEN_SHIFT = 0x08, 210762306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_VID_MASK = 0xFFFF, 210862306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_DID_MASK = 0xFFFF0000, 210962306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_DID_SHIFT = 0x10, 211062306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_SVID_MASK = 0xFFFF, 211162306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_SSID_MASK = 0xFFFF0000, 211262306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_SSID_SHIFT = 0x10, 211362306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_BUSNUM_MASK = 0xFF, 211462306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_DEVNUM_MASK = 0xFF00, 211562306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_DEVNUM_SHIFT = 0x08, 211662306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_FUNCNUM_MASK = 0xFF0000, 211762306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_PCI_FUNCNUM_SHIFT = 0x10, 211862306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_IF_TYPE_MASK = 0xFF000000, 211962306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_IF_TYPE_SHIFT = 0x18, 212062306a36Sopenharmony_ci OCRDMA_HBA_ATTRB_NETFIL_MASK =0xFF 212162306a36Sopenharmony_ci}; 212262306a36Sopenharmony_ci 212362306a36Sopenharmony_cistruct mgmt_hba_attribs { 212462306a36Sopenharmony_ci u8 flashrom_version_string[32]; 212562306a36Sopenharmony_ci u8 manufacturer_name[32]; 212662306a36Sopenharmony_ci u32 supported_modes; 212762306a36Sopenharmony_ci u32 rsvd_eprom_verhi_verlo; 212862306a36Sopenharmony_ci u32 mbx_ds_ver; 212962306a36Sopenharmony_ci u32 epfw_ds_ver; 213062306a36Sopenharmony_ci u8 ncsi_ver_string[12]; 213162306a36Sopenharmony_ci u32 default_extended_timeout; 213262306a36Sopenharmony_ci u8 controller_model_number[32]; 213362306a36Sopenharmony_ci u8 controller_description[64]; 213462306a36Sopenharmony_ci u8 controller_serial_number[32]; 213562306a36Sopenharmony_ci u8 ip_version_string[32]; 213662306a36Sopenharmony_ci u8 firmware_version_string[32]; 213762306a36Sopenharmony_ci u8 bios_version_string[32]; 213862306a36Sopenharmony_ci u8 redboot_version_string[32]; 213962306a36Sopenharmony_ci u8 driver_version_string[32]; 214062306a36Sopenharmony_ci u8 fw_on_flash_version_string[32]; 214162306a36Sopenharmony_ci u32 functionalities_supported; 214262306a36Sopenharmony_ci u32 guid0_asicrev_cdblen; 214362306a36Sopenharmony_ci u8 generational_guid[12]; 214462306a36Sopenharmony_ci u32 portcnt_guid15; 214562306a36Sopenharmony_ci u32 mfuncdev_iscsi_ldtout; 214662306a36Sopenharmony_ci u32 ptpnum_maxdoms_hbast_cv; 214762306a36Sopenharmony_ci u32 firmware_post_status; 214862306a36Sopenharmony_ci u32 hba_mtu[8]; 214962306a36Sopenharmony_ci u32 res_asicgen_iscsi_feaures; 215062306a36Sopenharmony_ci u32 rsvd1[3]; 215162306a36Sopenharmony_ci}; 215262306a36Sopenharmony_ci 215362306a36Sopenharmony_cistruct mgmt_controller_attrib { 215462306a36Sopenharmony_ci struct mgmt_hba_attribs hba_attribs; 215562306a36Sopenharmony_ci u32 pci_did_vid; 215662306a36Sopenharmony_ci u32 pci_ssid_svid; 215762306a36Sopenharmony_ci u32 ityp_fnum_devnum_bnum; 215862306a36Sopenharmony_ci u32 uid_hi; 215962306a36Sopenharmony_ci u32 uid_lo; 216062306a36Sopenharmony_ci u32 res_nnetfil; 216162306a36Sopenharmony_ci u32 rsvd0[4]; 216262306a36Sopenharmony_ci}; 216362306a36Sopenharmony_ci 216462306a36Sopenharmony_cistruct ocrdma_get_ctrl_attribs_rsp { 216562306a36Sopenharmony_ci struct ocrdma_mbx_hdr hdr; 216662306a36Sopenharmony_ci struct mgmt_controller_attrib ctrl_attribs; 216762306a36Sopenharmony_ci}; 216862306a36Sopenharmony_ci 216962306a36Sopenharmony_ci#define OCRDMA_SUBSYS_DCBX 0x10 217062306a36Sopenharmony_ci 217162306a36Sopenharmony_cienum OCRDMA_DCBX_OPCODE { 217262306a36Sopenharmony_ci OCRDMA_CMD_GET_DCBX_CONFIG = 0x01 217362306a36Sopenharmony_ci}; 217462306a36Sopenharmony_ci 217562306a36Sopenharmony_cienum OCRDMA_DCBX_PARAM_TYPE { 217662306a36Sopenharmony_ci OCRDMA_PARAMETER_TYPE_ADMIN = 0x00, 217762306a36Sopenharmony_ci OCRDMA_PARAMETER_TYPE_OPER = 0x01, 217862306a36Sopenharmony_ci OCRDMA_PARAMETER_TYPE_PEER = 0x02 217962306a36Sopenharmony_ci}; 218062306a36Sopenharmony_ci 218162306a36Sopenharmony_cienum OCRDMA_DCBX_PROTO { 218262306a36Sopenharmony_ci OCRDMA_PROTO_SELECT_L2 = 0x00, 218362306a36Sopenharmony_ci OCRDMA_PROTO_SELECT_L4 = 0x01 218462306a36Sopenharmony_ci}; 218562306a36Sopenharmony_ci 218662306a36Sopenharmony_cienum OCRDMA_DCBX_APP_PARAM { 218762306a36Sopenharmony_ci OCRDMA_APP_PARAM_APP_PROTO_MASK = 0xFFFF, 218862306a36Sopenharmony_ci OCRDMA_APP_PARAM_PROTO_SEL_MASK = 0xFF, 218962306a36Sopenharmony_ci OCRDMA_APP_PARAM_PROTO_SEL_SHIFT = 0x10, 219062306a36Sopenharmony_ci OCRDMA_APP_PARAM_VALID_MASK = 0xFF, 219162306a36Sopenharmony_ci OCRDMA_APP_PARAM_VALID_SHIFT = 0x18 219262306a36Sopenharmony_ci}; 219362306a36Sopenharmony_ci 219462306a36Sopenharmony_cienum OCRDMA_DCBX_STATE_FLAGS { 219562306a36Sopenharmony_ci OCRDMA_STATE_FLAG_ENABLED = 0x01, 219662306a36Sopenharmony_ci OCRDMA_STATE_FLAG_ADDVERTISED = 0x02, 219762306a36Sopenharmony_ci OCRDMA_STATE_FLAG_WILLING = 0x04, 219862306a36Sopenharmony_ci OCRDMA_STATE_FLAG_SYNC = 0x08, 219962306a36Sopenharmony_ci OCRDMA_STATE_FLAG_UNSUPPORTED = 0x40000000, 220062306a36Sopenharmony_ci OCRDMA_STATE_FLAG_NEG_FAILD = 0x80000000 220162306a36Sopenharmony_ci}; 220262306a36Sopenharmony_ci 220362306a36Sopenharmony_cienum OCRDMA_TCV_AEV_OPV_ST { 220462306a36Sopenharmony_ci OCRDMA_DCBX_TC_SUPPORT_MASK = 0xFF, 220562306a36Sopenharmony_ci OCRDMA_DCBX_TC_SUPPORT_SHIFT = 0x18, 220662306a36Sopenharmony_ci OCRDMA_DCBX_APP_ENTRY_SHIFT = 0x10, 220762306a36Sopenharmony_ci OCRDMA_DCBX_OP_PARAM_SHIFT = 0x08, 220862306a36Sopenharmony_ci OCRDMA_DCBX_STATE_MASK = 0xFF 220962306a36Sopenharmony_ci}; 221062306a36Sopenharmony_ci 221162306a36Sopenharmony_cistruct ocrdma_app_parameter { 221262306a36Sopenharmony_ci u32 valid_proto_app; 221362306a36Sopenharmony_ci u32 oui; 221462306a36Sopenharmony_ci u32 app_prio[2]; 221562306a36Sopenharmony_ci}; 221662306a36Sopenharmony_ci 221762306a36Sopenharmony_cistruct ocrdma_dcbx_cfg { 221862306a36Sopenharmony_ci u32 tcv_aev_opv_st; 221962306a36Sopenharmony_ci u32 tc_state; 222062306a36Sopenharmony_ci u32 pfc_state; 222162306a36Sopenharmony_ci u32 qcn_state; 222262306a36Sopenharmony_ci u32 appl_state; 222362306a36Sopenharmony_ci u32 ll_state; 222462306a36Sopenharmony_ci u32 tc_bw[2]; 222562306a36Sopenharmony_ci u32 tc_prio[8]; 222662306a36Sopenharmony_ci u32 pfc_prio[2]; 222762306a36Sopenharmony_ci struct ocrdma_app_parameter app_param[15]; 222862306a36Sopenharmony_ci}; 222962306a36Sopenharmony_ci 223062306a36Sopenharmony_cistruct ocrdma_get_dcbx_cfg_req { 223162306a36Sopenharmony_ci struct ocrdma_mbx_hdr hdr; 223262306a36Sopenharmony_ci u32 param_type; 223362306a36Sopenharmony_ci} __packed; 223462306a36Sopenharmony_ci 223562306a36Sopenharmony_cistruct ocrdma_get_dcbx_cfg_rsp { 223662306a36Sopenharmony_ci struct ocrdma_mbx_rsp hdr; 223762306a36Sopenharmony_ci struct ocrdma_dcbx_cfg cfg; 223862306a36Sopenharmony_ci} __packed; 223962306a36Sopenharmony_ci 224062306a36Sopenharmony_ci#endif /* __OCRDMA_SLI_H__ */ 2241