1 /* 2 * Broadcom NetXtreme-E RoCE driver. 3 * 4 * Copyright (c) 2016 - 2017, Broadcom. All rights reserved. The term 5 * Broadcom refers to Broadcom Limited and/or its subsidiaries. 6 * 7 * This software is available to you under a choice of one of two 8 * licenses. You may choose to be licensed under the terms of the GNU 9 * General Public License (GPL) Version 2, available from the file 10 * COPYING in the main directory of this source tree, or the 11 * BSD license below: 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * 1. Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * 2. Redistributions in binary form must reproduce the above copyright 20 * notice, this list of conditions and the following disclaimer in 21 * the documentation and/or other materials provided with the 22 * distribution. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 26 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 27 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS 28 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 31 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 33 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 34 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 * 36 * Description: RoCE HSI File - Autogenerated 37 */ 38 39 #ifndef __BNXT_RE_HSI_H__ 40 #define __BNXT_RE_HSI_H__ 41 42 /* include linux/bnxt/hsi.h */ 43 #include <linux/bnxt/hsi.h> 44 45 /* tx_doorbell (size:32b/4B) */ 46 struct tx_doorbell { 47 __le32 key_idx; 48 #define TX_DOORBELL_IDX_MASK 0xffffffUL 49 #define TX_DOORBELL_IDX_SFT 0 50 #define TX_DOORBELL_KEY_MASK 0xf0000000UL 51 #define TX_DOORBELL_KEY_SFT 28 52 #define TX_DOORBELL_KEY_TX (0x0UL << 28) 53 #define TX_DOORBELL_KEY_LAST TX_DOORBELL_KEY_TX 54 }; 55 56 /* rx_doorbell (size:32b/4B) */ 57 struct rx_doorbell { 58 __le32 key_idx; 59 #define RX_DOORBELL_IDX_MASK 0xffffffUL 60 #define RX_DOORBELL_IDX_SFT 0 61 #define RX_DOORBELL_KEY_MASK 0xf0000000UL 62 #define RX_DOORBELL_KEY_SFT 28 63 #define RX_DOORBELL_KEY_RX (0x1UL << 28) 64 #define RX_DOORBELL_KEY_LAST RX_DOORBELL_KEY_RX 65 }; 66 67 /* cmpl_doorbell (size:32b/4B) */ 68 struct cmpl_doorbell { 69 __le32 key_mask_valid_idx; 70 #define CMPL_DOORBELL_IDX_MASK 0xffffffUL 71 #define CMPL_DOORBELL_IDX_SFT 0 72 #define CMPL_DOORBELL_IDX_VALID 0x4000000UL 73 #define CMPL_DOORBELL_MASK 0x8000000UL 74 #define CMPL_DOORBELL_KEY_MASK 0xf0000000UL 75 #define CMPL_DOORBELL_KEY_SFT 28 76 #define CMPL_DOORBELL_KEY_CMPL (0x2UL << 28) 77 #define CMPL_DOORBELL_KEY_LAST CMPL_DOORBELL_KEY_CMPL 78 }; 79 80 /* status_doorbell (size:32b/4B) */ 81 struct status_doorbell { 82 __le32 key_idx; 83 #define STATUS_DOORBELL_IDX_MASK 0xffffffUL 84 #define STATUS_DOORBELL_IDX_SFT 0 85 #define STATUS_DOORBELL_KEY_MASK 0xf0000000UL 86 #define STATUS_DOORBELL_KEY_SFT 28 87 #define STATUS_DOORBELL_KEY_STAT (0x3UL << 28) 88 #define STATUS_DOORBELL_KEY_LAST STATUS_DOORBELL_KEY_STAT 89 }; 90 91 /* cmdq_init (size:128b/16B) */ 92 struct cmdq_init { 93 __le64 cmdq_pbl; 94 __le16 cmdq_size_cmdq_lvl; 95 #define CMDQ_INIT_CMDQ_LVL_MASK 0x3UL 96 #define CMDQ_INIT_CMDQ_LVL_SFT 0 97 #define CMDQ_INIT_CMDQ_SIZE_MASK 0xfffcUL 98 #define CMDQ_INIT_CMDQ_SIZE_SFT 2 99 __le16 creq_ring_id; 100 __le32 prod_idx; 101 }; 102 103 /* cmdq_base (size:128b/16B) */ 104 struct cmdq_base { 105 u8 opcode; 106 #define CMDQ_BASE_OPCODE_CREATE_QP 0x1UL 107 #define CMDQ_BASE_OPCODE_DESTROY_QP 0x2UL 108 #define CMDQ_BASE_OPCODE_MODIFY_QP 0x3UL 109 #define CMDQ_BASE_OPCODE_QUERY_QP 0x4UL 110 #define CMDQ_BASE_OPCODE_CREATE_SRQ 0x5UL 111 #define CMDQ_BASE_OPCODE_DESTROY_SRQ 0x6UL 112 #define CMDQ_BASE_OPCODE_QUERY_SRQ 0x8UL 113 #define CMDQ_BASE_OPCODE_CREATE_CQ 0x9UL 114 #define CMDQ_BASE_OPCODE_DESTROY_CQ 0xaUL 115 #define CMDQ_BASE_OPCODE_RESIZE_CQ 0xcUL 116 #define CMDQ_BASE_OPCODE_ALLOCATE_MRW 0xdUL 117 #define CMDQ_BASE_OPCODE_DEALLOCATE_KEY 0xeUL 118 #define CMDQ_BASE_OPCODE_REGISTER_MR 0xfUL 119 #define CMDQ_BASE_OPCODE_DEREGISTER_MR 0x10UL 120 #define CMDQ_BASE_OPCODE_ADD_GID 0x11UL 121 #define CMDQ_BASE_OPCODE_DELETE_GID 0x12UL 122 #define CMDQ_BASE_OPCODE_MODIFY_GID 0x17UL 123 #define CMDQ_BASE_OPCODE_QUERY_GID 0x18UL 124 #define CMDQ_BASE_OPCODE_CREATE_QP1 0x13UL 125 #define CMDQ_BASE_OPCODE_DESTROY_QP1 0x14UL 126 #define CMDQ_BASE_OPCODE_CREATE_AH 0x15UL 127 #define CMDQ_BASE_OPCODE_DESTROY_AH 0x16UL 128 #define CMDQ_BASE_OPCODE_INITIALIZE_FW 0x80UL 129 #define CMDQ_BASE_OPCODE_DEINITIALIZE_FW 0x81UL 130 #define CMDQ_BASE_OPCODE_STOP_FUNC 0x82UL 131 #define CMDQ_BASE_OPCODE_QUERY_FUNC 0x83UL 132 #define CMDQ_BASE_OPCODE_SET_FUNC_RESOURCES 0x84UL 133 #define CMDQ_BASE_OPCODE_READ_CONTEXT 0x85UL 134 #define CMDQ_BASE_OPCODE_VF_BACKCHANNEL_REQUEST 0x86UL 135 #define CMDQ_BASE_OPCODE_READ_VF_MEMORY 0x87UL 136 #define CMDQ_BASE_OPCODE_COMPLETE_VF_REQUEST 0x88UL 137 #define CMDQ_BASE_OPCODE_EXTEND_CONTEXT_ARRRAY 0x89UL 138 #define CMDQ_BASE_OPCODE_MAP_TC_TO_COS 0x8aUL 139 #define CMDQ_BASE_OPCODE_QUERY_VERSION 0x8bUL 140 #define CMDQ_BASE_OPCODE_MODIFY_ROCE_CC 0x8cUL 141 #define CMDQ_BASE_OPCODE_QUERY_ROCE_CC 0x8dUL 142 #define CMDQ_BASE_OPCODE_QUERY_ROCE_STATS 0x8eUL 143 #define CMDQ_BASE_OPCODE_SET_LINK_AGGR_MODE 0x8fUL 144 #define CMDQ_BASE_OPCODE_MODIFY_CQ 0x90UL 145 #define CMDQ_BASE_OPCODE_QUERY_QP_EXTEND 0x91UL 146 #define CMDQ_BASE_OPCODE_QUERY_ROCE_STATS_EXT 0x92UL 147 #define CMDQ_BASE_OPCODE_ROCE_MIRROR_CFG 0x99UL 148 #define CMDQ_BASE_OPCODE_LAST CMDQ_BASE_OPCODE_ROCE_MIRROR_CFG 149 u8 cmd_size; 150 __le16 flags; 151 __le16 cookie; 152 u8 resp_size; 153 u8 reserved8; 154 __le64 resp_addr; 155 }; 156 157 /* creq_base (size:128b/16B) */ 158 struct creq_base { 159 u8 type; 160 #define CREQ_BASE_TYPE_MASK 0x3fUL 161 #define CREQ_BASE_TYPE_SFT 0 162 #define CREQ_BASE_TYPE_QP_EVENT 0x38UL 163 #define CREQ_BASE_TYPE_FUNC_EVENT 0x3aUL 164 #define CREQ_BASE_TYPE_LAST CREQ_BASE_TYPE_FUNC_EVENT 165 u8 reserved56[7]; 166 u8 v; 167 #define CREQ_BASE_V 0x1UL 168 u8 event; 169 u8 reserved48[6]; 170 }; 171 172 /* cmdq_query_version (size:128b/16B) */ 173 struct cmdq_query_version { 174 u8 opcode; 175 #define CMDQ_QUERY_VERSION_OPCODE_QUERY_VERSION 0x8bUL 176 #define CMDQ_QUERY_VERSION_OPCODE_LAST CMDQ_QUERY_VERSION_OPCODE_QUERY_VERSION 177 u8 cmd_size; 178 __le16 flags; 179 __le16 cookie; 180 u8 resp_size; 181 u8 reserved8; 182 __le64 resp_addr; 183 }; 184 185 /* creq_query_version_resp (size:128b/16B) */ 186 struct creq_query_version_resp { 187 u8 type; 188 #define CREQ_QUERY_VERSION_RESP_TYPE_MASK 0x3fUL 189 #define CREQ_QUERY_VERSION_RESP_TYPE_SFT 0 190 #define CREQ_QUERY_VERSION_RESP_TYPE_QP_EVENT 0x38UL 191 #define CREQ_QUERY_VERSION_RESP_TYPE_LAST CREQ_QUERY_VERSION_RESP_TYPE_QP_EVENT 192 u8 status; 193 __le16 cookie; 194 u8 fw_maj; 195 u8 fw_minor; 196 u8 fw_bld; 197 u8 fw_rsvd; 198 u8 v; 199 #define CREQ_QUERY_VERSION_RESP_V 0x1UL 200 u8 event; 201 #define CREQ_QUERY_VERSION_RESP_EVENT_QUERY_VERSION 0x8bUL 202 #define CREQ_QUERY_VERSION_RESP_EVENT_LAST \ 203 CREQ_QUERY_VERSION_RESP_EVENT_QUERY_VERSION 204 __le16 reserved16; 205 u8 intf_maj; 206 u8 intf_minor; 207 u8 intf_bld; 208 u8 intf_rsvd; 209 }; 210 211 /* cmdq_initialize_fw (size:896b/112B) */ 212 struct cmdq_initialize_fw { 213 u8 opcode; 214 #define CMDQ_INITIALIZE_FW_OPCODE_INITIALIZE_FW 0x80UL 215 #define CMDQ_INITIALIZE_FW_OPCODE_LAST CMDQ_INITIALIZE_FW_OPCODE_INITIALIZE_FW 216 u8 cmd_size; 217 __le16 flags; 218 #define CMDQ_INITIALIZE_FW_FLAGS_MRAV_RESERVATION_SPLIT 0x1UL 219 #define CMDQ_INITIALIZE_FW_FLAGS_HW_REQUESTER_RETX_SUPPORTED 0x2UL 220 #define CMDQ_INITIALIZE_FW_FLAGS_OPTIMIZE_MODIFY_QP_SUPPORTED 0x8UL 221 #define CMDQ_INITIALIZE_FW_FLAGS_L2_VF_RESOURCE_MGMT 0x10UL 222 #define CMDQ_INITIALIZE_FW_FLAGS_MIRROR_ON_ROCE_SUPPORTED 0x80UL 223 __le16 cookie; 224 u8 resp_size; 225 u8 reserved8; 226 __le64 resp_addr; 227 u8 qpc_pg_size_qpc_lvl; 228 #define CMDQ_INITIALIZE_FW_QPC_LVL_MASK 0xfUL 229 #define CMDQ_INITIALIZE_FW_QPC_LVL_SFT 0 230 #define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_0 0x0UL 231 #define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_1 0x1UL 232 #define CMDQ_INITIALIZE_FW_QPC_LVL_LVL_2 0x2UL 233 #define CMDQ_INITIALIZE_FW_QPC_LVL_LAST CMDQ_INITIALIZE_FW_QPC_LVL_LVL_2 234 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_MASK 0xf0UL 235 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_SFT 4 236 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_4K (0x0UL << 4) 237 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_8K (0x1UL << 4) 238 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_64K (0x2UL << 4) 239 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_2M (0x3UL << 4) 240 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_8M (0x4UL << 4) 241 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_1G (0x5UL << 4) 242 #define CMDQ_INITIALIZE_FW_QPC_PG_SIZE_LAST CMDQ_INITIALIZE_FW_QPC_PG_SIZE_PG_1G 243 u8 mrw_pg_size_mrw_lvl; 244 #define CMDQ_INITIALIZE_FW_MRW_LVL_MASK 0xfUL 245 #define CMDQ_INITIALIZE_FW_MRW_LVL_SFT 0 246 #define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_0 0x0UL 247 #define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_1 0x1UL 248 #define CMDQ_INITIALIZE_FW_MRW_LVL_LVL_2 0x2UL 249 #define CMDQ_INITIALIZE_FW_MRW_LVL_LAST CMDQ_INITIALIZE_FW_MRW_LVL_LVL_2 250 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_MASK 0xf0UL 251 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_SFT 4 252 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_4K (0x0UL << 4) 253 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_8K (0x1UL << 4) 254 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_64K (0x2UL << 4) 255 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_2M (0x3UL << 4) 256 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_8M (0x4UL << 4) 257 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_1G (0x5UL << 4) 258 #define CMDQ_INITIALIZE_FW_MRW_PG_SIZE_LAST CMDQ_INITIALIZE_FW_MRW_PG_SIZE_PG_1G 259 u8 srq_pg_size_srq_lvl; 260 #define CMDQ_INITIALIZE_FW_SRQ_LVL_MASK 0xfUL 261 #define CMDQ_INITIALIZE_FW_SRQ_LVL_SFT 0 262 #define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_0 0x0UL 263 #define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_1 0x1UL 264 #define CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_2 0x2UL 265 #define CMDQ_INITIALIZE_FW_SRQ_LVL_LAST CMDQ_INITIALIZE_FW_SRQ_LVL_LVL_2 266 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_MASK 0xf0UL 267 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_SFT 4 268 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_4K (0x0UL << 4) 269 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_8K (0x1UL << 4) 270 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_64K (0x2UL << 4) 271 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_2M (0x3UL << 4) 272 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_8M (0x4UL << 4) 273 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_1G (0x5UL << 4) 274 #define CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_LAST CMDQ_INITIALIZE_FW_SRQ_PG_SIZE_PG_1G 275 u8 cq_pg_size_cq_lvl; 276 #define CMDQ_INITIALIZE_FW_CQ_LVL_MASK 0xfUL 277 #define CMDQ_INITIALIZE_FW_CQ_LVL_SFT 0 278 #define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_0 0x0UL 279 #define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_1 0x1UL 280 #define CMDQ_INITIALIZE_FW_CQ_LVL_LVL_2 0x2UL 281 #define CMDQ_INITIALIZE_FW_CQ_LVL_LAST CMDQ_INITIALIZE_FW_CQ_LVL_LVL_2 282 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_MASK 0xf0UL 283 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_SFT 4 284 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_4K (0x0UL << 4) 285 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_8K (0x1UL << 4) 286 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_64K (0x2UL << 4) 287 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_2M (0x3UL << 4) 288 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_8M (0x4UL << 4) 289 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_1G (0x5UL << 4) 290 #define CMDQ_INITIALIZE_FW_CQ_PG_SIZE_LAST CMDQ_INITIALIZE_FW_CQ_PG_SIZE_PG_1G 291 u8 tqm_pg_size_tqm_lvl; 292 #define CMDQ_INITIALIZE_FW_TQM_LVL_MASK 0xfUL 293 #define CMDQ_INITIALIZE_FW_TQM_LVL_SFT 0 294 #define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_0 0x0UL 295 #define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_1 0x1UL 296 #define CMDQ_INITIALIZE_FW_TQM_LVL_LVL_2 0x2UL 297 #define CMDQ_INITIALIZE_FW_TQM_LVL_LAST CMDQ_INITIALIZE_FW_TQM_LVL_LVL_2 298 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_MASK 0xf0UL 299 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_SFT 4 300 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_4K (0x0UL << 4) 301 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_8K (0x1UL << 4) 302 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_64K (0x2UL << 4) 303 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_2M (0x3UL << 4) 304 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_8M (0x4UL << 4) 305 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_1G (0x5UL << 4) 306 #define CMDQ_INITIALIZE_FW_TQM_PG_SIZE_LAST CMDQ_INITIALIZE_FW_TQM_PG_SIZE_PG_1G 307 u8 tim_pg_size_tim_lvl; 308 #define CMDQ_INITIALIZE_FW_TIM_LVL_MASK 0xfUL 309 #define CMDQ_INITIALIZE_FW_TIM_LVL_SFT 0 310 #define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_0 0x0UL 311 #define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_1 0x1UL 312 #define CMDQ_INITIALIZE_FW_TIM_LVL_LVL_2 0x2UL 313 #define CMDQ_INITIALIZE_FW_TIM_LVL_LAST CMDQ_INITIALIZE_FW_TIM_LVL_LVL_2 314 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_MASK 0xf0UL 315 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_SFT 4 316 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_4K (0x0UL << 4) 317 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_8K (0x1UL << 4) 318 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_64K (0x2UL << 4) 319 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_2M (0x3UL << 4) 320 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_8M (0x4UL << 4) 321 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_1G (0x5UL << 4) 322 #define CMDQ_INITIALIZE_FW_TIM_PG_SIZE_LAST CMDQ_INITIALIZE_FW_TIM_PG_SIZE_PG_1G 323 __le16 log2_dbr_pg_size; 324 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_MASK 0xfUL 325 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_SFT 0 326 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_4K 0x0UL 327 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_8K 0x1UL 328 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_16K 0x2UL 329 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_32K 0x3UL 330 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_64K 0x4UL 331 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128K 0x5UL 332 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_256K 0x6UL 333 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_512K 0x7UL 334 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_1M 0x8UL 335 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_2M 0x9UL 336 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_4M 0xaUL 337 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_8M 0xbUL 338 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_16M 0xcUL 339 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_32M 0xdUL 340 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_64M 0xeUL 341 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128M 0xfUL 342 #define CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_LAST \ 343 CMDQ_INITIALIZE_FW_LOG2_DBR_PG_SIZE_PG_128M 344 #define CMDQ_INITIALIZE_FW_RSVD_MASK 0xfff0UL 345 #define CMDQ_INITIALIZE_FW_RSVD_SFT 4 346 __le64 qpc_page_dir; 347 __le64 mrw_page_dir; 348 __le64 srq_page_dir; 349 __le64 cq_page_dir; 350 __le64 tqm_page_dir; 351 __le64 tim_page_dir; 352 __le32 number_of_qp; 353 __le32 number_of_mrw; 354 __le32 number_of_srq; 355 __le32 number_of_cq; 356 __le32 max_qp_per_vf; 357 __le32 max_mrw_per_vf; 358 __le32 max_srq_per_vf; 359 __le32 max_cq_per_vf; 360 __le32 max_gid_per_vf; 361 __le32 stat_ctx_id; 362 }; 363 364 /* creq_initialize_fw_resp (size:128b/16B) */ 365 struct creq_initialize_fw_resp { 366 u8 type; 367 #define CREQ_INITIALIZE_FW_RESP_TYPE_MASK 0x3fUL 368 #define CREQ_INITIALIZE_FW_RESP_TYPE_SFT 0 369 #define CREQ_INITIALIZE_FW_RESP_TYPE_QP_EVENT 0x38UL 370 #define CREQ_INITIALIZE_FW_RESP_TYPE_LAST CREQ_INITIALIZE_FW_RESP_TYPE_QP_EVENT 371 u8 status; 372 __le16 cookie; 373 __le32 reserved32; 374 u8 v; 375 #define CREQ_INITIALIZE_FW_RESP_V 0x1UL 376 u8 event; 377 #define CREQ_INITIALIZE_FW_RESP_EVENT_INITIALIZE_FW 0x80UL 378 #define CREQ_INITIALIZE_FW_RESP_EVENT_LAST \ 379 CREQ_INITIALIZE_FW_RESP_EVENT_INITIALIZE_FW 380 u8 reserved48[6]; 381 }; 382 383 /* cmdq_deinitialize_fw (size:128b/16B) */ 384 struct cmdq_deinitialize_fw { 385 u8 opcode; 386 #define CMDQ_DEINITIALIZE_FW_OPCODE_DEINITIALIZE_FW 0x81UL 387 #define CMDQ_DEINITIALIZE_FW_OPCODE_LAST \ 388 CMDQ_DEINITIALIZE_FW_OPCODE_DEINITIALIZE_FW 389 u8 cmd_size; 390 __le16 flags; 391 __le16 cookie; 392 u8 resp_size; 393 u8 reserved8; 394 __le64 resp_addr; 395 }; 396 397 /* creq_deinitialize_fw_resp (size:128b/16B) */ 398 struct creq_deinitialize_fw_resp { 399 u8 type; 400 #define CREQ_DEINITIALIZE_FW_RESP_TYPE_MASK 0x3fUL 401 #define CREQ_DEINITIALIZE_FW_RESP_TYPE_SFT 0 402 #define CREQ_DEINITIALIZE_FW_RESP_TYPE_QP_EVENT 0x38UL 403 #define CREQ_DEINITIALIZE_FW_RESP_TYPE_LAST CREQ_DEINITIALIZE_FW_RESP_TYPE_QP_EVENT 404 u8 status; 405 __le16 cookie; 406 __le32 reserved32; 407 u8 v; 408 #define CREQ_DEINITIALIZE_FW_RESP_V 0x1UL 409 u8 event; 410 #define CREQ_DEINITIALIZE_FW_RESP_EVENT_DEINITIALIZE_FW 0x81UL 411 #define CREQ_DEINITIALIZE_FW_RESP_EVENT_LAST \ 412 CREQ_DEINITIALIZE_FW_RESP_EVENT_DEINITIALIZE_FW 413 u8 reserved48[6]; 414 }; 415 416 /* cmdq_create_qp (size:832b/104B) */ 417 struct cmdq_create_qp { 418 u8 opcode; 419 #define CMDQ_CREATE_QP_OPCODE_CREATE_QP 0x1UL 420 #define CMDQ_CREATE_QP_OPCODE_LAST CMDQ_CREATE_QP_OPCODE_CREATE_QP 421 u8 cmd_size; 422 __le16 flags; 423 __le16 cookie; 424 u8 resp_size; 425 u8 reserved8; 426 __le64 resp_addr; 427 __le64 qp_handle; 428 __le32 qp_flags; 429 #define CMDQ_CREATE_QP_QP_FLAGS_SRQ_USED 0x1UL 430 #define CMDQ_CREATE_QP_QP_FLAGS_FORCE_COMPLETION 0x2UL 431 #define CMDQ_CREATE_QP_QP_FLAGS_RESERVED_LKEY_ENABLE 0x4UL 432 #define CMDQ_CREATE_QP_QP_FLAGS_FR_PMR_ENABLED 0x8UL 433 #define CMDQ_CREATE_QP_QP_FLAGS_VARIABLE_SIZED_WQE_ENABLED 0x10UL 434 #define CMDQ_CREATE_QP_QP_FLAGS_OPTIMIZED_TRANSMIT_ENABLED 0x20UL 435 #define CMDQ_CREATE_QP_QP_FLAGS_RESPONDER_UD_CQE_WITH_CFA 0x40UL 436 #define CMDQ_CREATE_QP_QP_FLAGS_EXT_STATS_ENABLED 0x80UL 437 #define CMDQ_CREATE_QP_QP_FLAGS_EXPRESS_MODE_ENABLED 0x100UL 438 #define CMDQ_CREATE_QP_QP_FLAGS_STEERING_TAG_VALID 0x200UL 439 #define CMDQ_CREATE_QP_QP_FLAGS_RDMA_READ_OR_ATOMICS_USED 0x400UL 440 #define CMDQ_CREATE_QP_QP_FLAGS_LAST \ 441 CMDQ_CREATE_QP_QP_FLAGS_RDMA_READ_OR_ATOMICS_USED 442 u8 type; 443 #define CMDQ_CREATE_QP_TYPE_RC 0x2UL 444 #define CMDQ_CREATE_QP_TYPE_UD 0x4UL 445 #define CMDQ_CREATE_QP_TYPE_RAW_ETHERTYPE 0x6UL 446 #define CMDQ_CREATE_QP_TYPE_GSI 0x7UL 447 #define CMDQ_CREATE_QP_TYPE_LAST CMDQ_CREATE_QP_TYPE_GSI 448 u8 sq_pg_size_sq_lvl; 449 #define CMDQ_CREATE_QP_SQ_LVL_MASK 0xfUL 450 #define CMDQ_CREATE_QP_SQ_LVL_SFT 0 451 #define CMDQ_CREATE_QP_SQ_LVL_LVL_0 0x0UL 452 #define CMDQ_CREATE_QP_SQ_LVL_LVL_1 0x1UL 453 #define CMDQ_CREATE_QP_SQ_LVL_LVL_2 0x2UL 454 #define CMDQ_CREATE_QP_SQ_LVL_LAST CMDQ_CREATE_QP_SQ_LVL_LVL_2 455 #define CMDQ_CREATE_QP_SQ_PG_SIZE_MASK 0xf0UL 456 #define CMDQ_CREATE_QP_SQ_PG_SIZE_SFT 4 457 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_4K (0x0UL << 4) 458 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_8K (0x1UL << 4) 459 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_64K (0x2UL << 4) 460 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_2M (0x3UL << 4) 461 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_8M (0x4UL << 4) 462 #define CMDQ_CREATE_QP_SQ_PG_SIZE_PG_1G (0x5UL << 4) 463 #define CMDQ_CREATE_QP_SQ_PG_SIZE_LAST CMDQ_CREATE_QP_SQ_PG_SIZE_PG_1G 464 u8 rq_pg_size_rq_lvl; 465 #define CMDQ_CREATE_QP_RQ_LVL_MASK 0xfUL 466 #define CMDQ_CREATE_QP_RQ_LVL_SFT 0 467 #define CMDQ_CREATE_QP_RQ_LVL_LVL_0 0x0UL 468 #define CMDQ_CREATE_QP_RQ_LVL_LVL_1 0x1UL 469 #define CMDQ_CREATE_QP_RQ_LVL_LVL_2 0x2UL 470 #define CMDQ_CREATE_QP_RQ_LVL_LAST CMDQ_CREATE_QP_RQ_LVL_LVL_2 471 #define CMDQ_CREATE_QP_RQ_PG_SIZE_MASK 0xf0UL 472 #define CMDQ_CREATE_QP_RQ_PG_SIZE_SFT 4 473 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_4K (0x0UL << 4) 474 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_8K (0x1UL << 4) 475 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_64K (0x2UL << 4) 476 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_2M (0x3UL << 4) 477 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_8M (0x4UL << 4) 478 #define CMDQ_CREATE_QP_RQ_PG_SIZE_PG_1G (0x5UL << 4) 479 #define CMDQ_CREATE_QP_RQ_PG_SIZE_LAST CMDQ_CREATE_QP_RQ_PG_SIZE_PG_1G 480 u8 unused_0; 481 __le32 dpi; 482 __le32 sq_size; 483 __le32 rq_size; 484 __le16 sq_fwo_sq_sge; 485 #define CMDQ_CREATE_QP_SQ_SGE_MASK 0xfUL 486 #define CMDQ_CREATE_QP_SQ_SGE_SFT 0 487 #define CMDQ_CREATE_QP_SQ_FWO_MASK 0xfff0UL 488 #define CMDQ_CREATE_QP_SQ_FWO_SFT 4 489 __le16 rq_fwo_rq_sge; 490 #define CMDQ_CREATE_QP_RQ_SGE_MASK 0xfUL 491 #define CMDQ_CREATE_QP_RQ_SGE_SFT 0 492 #define CMDQ_CREATE_QP_RQ_FWO_MASK 0xfff0UL 493 #define CMDQ_CREATE_QP_RQ_FWO_SFT 4 494 __le32 scq_cid; 495 __le32 rcq_cid; 496 __le32 srq_cid; 497 __le32 pd_id; 498 __le64 sq_pbl; 499 __le64 rq_pbl; 500 __le64 irrq_addr; 501 __le64 orrq_addr; 502 __le32 request_xid; 503 __le16 steering_tag; 504 __le16 reserved16; 505 }; 506 507 /* creq_create_qp_resp (size:128b/16B) */ 508 struct creq_create_qp_resp { 509 u8 type; 510 #define CREQ_CREATE_QP_RESP_TYPE_MASK 0x3fUL 511 #define CREQ_CREATE_QP_RESP_TYPE_SFT 0 512 #define CREQ_CREATE_QP_RESP_TYPE_QP_EVENT 0x38UL 513 #define CREQ_CREATE_QP_RESP_TYPE_LAST CREQ_CREATE_QP_RESP_TYPE_QP_EVENT 514 u8 status; 515 __le16 cookie; 516 __le32 xid; 517 u8 v; 518 #define CREQ_CREATE_QP_RESP_V 0x1UL 519 u8 event; 520 #define CREQ_CREATE_QP_RESP_EVENT_CREATE_QP 0x1UL 521 #define CREQ_CREATE_QP_RESP_EVENT_LAST CREQ_CREATE_QP_RESP_EVENT_CREATE_QP 522 u8 optimized_transmit_enabled; 523 u8 reserved48[5]; 524 }; 525 526 /* cmdq_destroy_qp (size:192b/24B) */ 527 struct cmdq_destroy_qp { 528 u8 opcode; 529 #define CMDQ_DESTROY_QP_OPCODE_DESTROY_QP 0x2UL 530 #define CMDQ_DESTROY_QP_OPCODE_LAST CMDQ_DESTROY_QP_OPCODE_DESTROY_QP 531 u8 cmd_size; 532 __le16 flags; 533 __le16 cookie; 534 u8 resp_size; 535 u8 reserved8; 536 __le64 resp_addr; 537 __le32 qp_cid; 538 __le32 unused_0; 539 }; 540 541 /* creq_destroy_qp_resp (size:128b/16B) */ 542 struct creq_destroy_qp_resp { 543 u8 type; 544 #define CREQ_DESTROY_QP_RESP_TYPE_MASK 0x3fUL 545 #define CREQ_DESTROY_QP_RESP_TYPE_SFT 0 546 #define CREQ_DESTROY_QP_RESP_TYPE_QP_EVENT 0x38UL 547 #define CREQ_DESTROY_QP_RESP_TYPE_LAST CREQ_DESTROY_QP_RESP_TYPE_QP_EVENT 548 u8 status; 549 __le16 cookie; 550 __le32 xid; 551 u8 v; 552 #define CREQ_DESTROY_QP_RESP_V 0x1UL 553 u8 event; 554 #define CREQ_DESTROY_QP_RESP_EVENT_DESTROY_QP 0x2UL 555 #define CREQ_DESTROY_QP_RESP_EVENT_LAST CREQ_DESTROY_QP_RESP_EVENT_DESTROY_QP 556 u8 reserved48[6]; 557 }; 558 559 /* cmdq_modify_qp (size:1024b/128B) */ 560 struct cmdq_modify_qp { 561 u8 opcode; 562 #define CMDQ_MODIFY_QP_OPCODE_MODIFY_QP 0x3UL 563 #define CMDQ_MODIFY_QP_OPCODE_LAST CMDQ_MODIFY_QP_OPCODE_MODIFY_QP 564 u8 cmd_size; 565 __le16 flags; 566 #define CMDQ_MODIFY_QP_FLAGS_SRQ_USED 0x1UL 567 __le16 cookie; 568 u8 resp_size; 569 u8 qp_type; 570 #define CMDQ_MODIFY_QP_QP_TYPE_RC 0x2UL 571 #define CMDQ_MODIFY_QP_QP_TYPE_UD 0x4UL 572 #define CMDQ_MODIFY_QP_QP_TYPE_RAW_ETHERTYPE 0x6UL 573 #define CMDQ_MODIFY_QP_QP_TYPE_GSI 0x7UL 574 #define CMDQ_MODIFY_QP_QP_TYPE_LAST CMDQ_MODIFY_QP_QP_TYPE_GSI 575 __le64 resp_addr; 576 __le32 modify_mask; 577 #define CMDQ_MODIFY_QP_MODIFY_MASK_STATE 0x1UL 578 #define CMDQ_MODIFY_QP_MODIFY_MASK_EN_SQD_ASYNC_NOTIFY 0x2UL 579 #define CMDQ_MODIFY_QP_MODIFY_MASK_ACCESS 0x4UL 580 #define CMDQ_MODIFY_QP_MODIFY_MASK_PKEY 0x8UL 581 #define CMDQ_MODIFY_QP_MODIFY_MASK_QKEY 0x10UL 582 #define CMDQ_MODIFY_QP_MODIFY_MASK_DGID 0x20UL 583 #define CMDQ_MODIFY_QP_MODIFY_MASK_FLOW_LABEL 0x40UL 584 #define CMDQ_MODIFY_QP_MODIFY_MASK_SGID_INDEX 0x80UL 585 #define CMDQ_MODIFY_QP_MODIFY_MASK_HOP_LIMIT 0x100UL 586 #define CMDQ_MODIFY_QP_MODIFY_MASK_TRAFFIC_CLASS 0x200UL 587 #define CMDQ_MODIFY_QP_MODIFY_MASK_DEST_MAC 0x400UL 588 #define CMDQ_MODIFY_QP_MODIFY_MASK_PINGPONG_PUSH_MODE 0x800UL 589 #define CMDQ_MODIFY_QP_MODIFY_MASK_PATH_MTU 0x1000UL 590 #define CMDQ_MODIFY_QP_MODIFY_MASK_TIMEOUT 0x2000UL 591 #define CMDQ_MODIFY_QP_MODIFY_MASK_RETRY_CNT 0x4000UL 592 #define CMDQ_MODIFY_QP_MODIFY_MASK_RNR_RETRY 0x8000UL 593 #define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_PSN 0x10000UL 594 #define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_RD_ATOMIC 0x20000UL 595 #define CMDQ_MODIFY_QP_MODIFY_MASK_MIN_RNR_TIMER 0x40000UL 596 #define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN 0x80000UL 597 #define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_DEST_RD_ATOMIC 0x100000UL 598 #define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_SIZE 0x200000UL 599 #define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_SIZE 0x400000UL 600 #define CMDQ_MODIFY_QP_MODIFY_MASK_SQ_SGE 0x800000UL 601 #define CMDQ_MODIFY_QP_MODIFY_MASK_RQ_SGE 0x1000000UL 602 #define CMDQ_MODIFY_QP_MODIFY_MASK_MAX_INLINE_DATA 0x2000000UL 603 #define CMDQ_MODIFY_QP_MODIFY_MASK_DEST_QP_ID 0x4000000UL 604 #define CMDQ_MODIFY_QP_MODIFY_MASK_SRC_MAC 0x8000000UL 605 #define CMDQ_MODIFY_QP_MODIFY_MASK_VLAN_ID 0x10000000UL 606 #define CMDQ_MODIFY_QP_MODIFY_MASK_ENABLE_CC 0x20000000UL 607 #define CMDQ_MODIFY_QP_MODIFY_MASK_TOS_ECN 0x40000000UL 608 #define CMDQ_MODIFY_QP_MODIFY_MASK_TOS_DSCP 0x80000000UL 609 __le32 qp_cid; 610 u8 network_type_en_sqd_async_notify_new_state; 611 #define CMDQ_MODIFY_QP_NEW_STATE_MASK 0xfUL 612 #define CMDQ_MODIFY_QP_NEW_STATE_SFT 0 613 #define CMDQ_MODIFY_QP_NEW_STATE_RESET 0x0UL 614 #define CMDQ_MODIFY_QP_NEW_STATE_INIT 0x1UL 615 #define CMDQ_MODIFY_QP_NEW_STATE_RTR 0x2UL 616 #define CMDQ_MODIFY_QP_NEW_STATE_RTS 0x3UL 617 #define CMDQ_MODIFY_QP_NEW_STATE_SQD 0x4UL 618 #define CMDQ_MODIFY_QP_NEW_STATE_SQE 0x5UL 619 #define CMDQ_MODIFY_QP_NEW_STATE_ERR 0x6UL 620 #define CMDQ_MODIFY_QP_NEW_STATE_LAST CMDQ_MODIFY_QP_NEW_STATE_ERR 621 #define CMDQ_MODIFY_QP_EN_SQD_ASYNC_NOTIFY 0x10UL 622 #define CMDQ_MODIFY_QP_UNUSED1 0x20UL 623 #define CMDQ_MODIFY_QP_NETWORK_TYPE_MASK 0xc0UL 624 #define CMDQ_MODIFY_QP_NETWORK_TYPE_SFT 6 625 #define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV1 (0x0UL << 6) 626 #define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV4 (0x2UL << 6) 627 #define CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6 (0x3UL << 6) 628 #define CMDQ_MODIFY_QP_NETWORK_TYPE_LAST CMDQ_MODIFY_QP_NETWORK_TYPE_ROCEV2_IPV6 629 u8 access; 630 #define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_MASK 0xffUL 631 #define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_SFT 0 632 #define CMDQ_MODIFY_QP_ACCESS_LOCAL_WRITE 0x1UL 633 #define CMDQ_MODIFY_QP_ACCESS_REMOTE_WRITE 0x2UL 634 #define CMDQ_MODIFY_QP_ACCESS_REMOTE_READ 0x4UL 635 #define CMDQ_MODIFY_QP_ACCESS_REMOTE_ATOMIC 0x8UL 636 __le16 pkey; 637 __le32 qkey; 638 __le32 dgid[4]; 639 __le32 flow_label; 640 __le16 sgid_index; 641 u8 hop_limit; 642 u8 traffic_class; 643 __le16 dest_mac[3]; 644 u8 tos_dscp_tos_ecn; 645 #define CMDQ_MODIFY_QP_TOS_ECN_MASK 0x3UL 646 #define CMDQ_MODIFY_QP_TOS_ECN_SFT 0 647 #define CMDQ_MODIFY_QP_TOS_DSCP_MASK 0xfcUL 648 #define CMDQ_MODIFY_QP_TOS_DSCP_SFT 2 649 u8 path_mtu_pingpong_push_enable; 650 #define CMDQ_MODIFY_QP_PINGPONG_PUSH_ENABLE 0x1UL 651 #define CMDQ_MODIFY_QP_UNUSED3_MASK 0xeUL 652 #define CMDQ_MODIFY_QP_UNUSED3_SFT 1 653 #define CMDQ_MODIFY_QP_PATH_MTU_MASK 0xf0UL 654 #define CMDQ_MODIFY_QP_PATH_MTU_SFT 4 655 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_256 (0x0UL << 4) 656 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_512 (0x1UL << 4) 657 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_1024 (0x2UL << 4) 658 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_2048 (0x3UL << 4) 659 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_4096 (0x4UL << 4) 660 #define CMDQ_MODIFY_QP_PATH_MTU_MTU_8192 (0x5UL << 4) 661 #define CMDQ_MODIFY_QP_PATH_MTU_LAST CMDQ_MODIFY_QP_PATH_MTU_MTU_8192 662 u8 timeout; 663 u8 retry_cnt; 664 u8 rnr_retry; 665 u8 min_rnr_timer; 666 __le32 rq_psn; 667 __le32 sq_psn; 668 u8 max_rd_atomic; 669 u8 max_dest_rd_atomic; 670 __le16 enable_cc; 671 #define CMDQ_MODIFY_QP_ENABLE_CC 0x1UL 672 #define CMDQ_MODIFY_QP_UNUSED15_MASK 0xfffeUL 673 #define CMDQ_MODIFY_QP_UNUSED15_SFT 1 674 __le32 sq_size; 675 __le32 rq_size; 676 __le16 sq_sge; 677 __le16 rq_sge; 678 __le32 max_inline_data; 679 __le32 dest_qp_id; 680 __le32 pingpong_push_dpi; 681 __le16 src_mac[3]; 682 __le16 vlan_pcp_vlan_dei_vlan_id; 683 #define CMDQ_MODIFY_QP_VLAN_ID_MASK 0xfffUL 684 #define CMDQ_MODIFY_QP_VLAN_ID_SFT 0 685 #define CMDQ_MODIFY_QP_VLAN_DEI 0x1000UL 686 #define CMDQ_MODIFY_QP_VLAN_PCP_MASK 0xe000UL 687 #define CMDQ_MODIFY_QP_VLAN_PCP_SFT 13 688 __le64 irrq_addr; 689 __le64 orrq_addr; 690 __le32 ext_modify_mask; 691 #define CMDQ_MODIFY_QP_EXT_MODIFY_MASK_EXT_STATS_CTX 0x1UL 692 #define CMDQ_MODIFY_QP_EXT_MODIFY_MASK_SCHQ_ID_VALID 0x2UL 693 __le32 ext_stats_ctx_id; 694 __le16 schq_id; 695 __le16 unused_0; 696 __le32 reserved32; 697 }; 698 699 /* creq_modify_qp_resp (size:128b/16B) */ 700 struct creq_modify_qp_resp { 701 u8 type; 702 #define CREQ_MODIFY_QP_RESP_TYPE_MASK 0x3fUL 703 #define CREQ_MODIFY_QP_RESP_TYPE_SFT 0 704 #define CREQ_MODIFY_QP_RESP_TYPE_QP_EVENT 0x38UL 705 #define CREQ_MODIFY_QP_RESP_TYPE_LAST CREQ_MODIFY_QP_RESP_TYPE_QP_EVENT 706 u8 status; 707 __le16 cookie; 708 __le32 xid; 709 u8 v; 710 #define CREQ_MODIFY_QP_RESP_V 0x1UL 711 u8 event; 712 #define CREQ_MODIFY_QP_RESP_EVENT_MODIFY_QP 0x3UL 713 #define CREQ_MODIFY_QP_RESP_EVENT_LAST CREQ_MODIFY_QP_RESP_EVENT_MODIFY_QP 714 u8 pingpong_push_state_index_enabled; 715 #define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_ENABLED 0x1UL 716 #define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_INDEX_MASK 0xeUL 717 #define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_INDEX_SFT 1 718 #define CREQ_MODIFY_QP_RESP_PINGPONG_PUSH_STATE 0x10UL 719 u8 reserved8; 720 __le32 lag_src_mac; 721 }; 722 723 /* cmdq_query_qp (size:192b/24B) */ 724 struct cmdq_query_qp { 725 u8 opcode; 726 #define CMDQ_QUERY_QP_OPCODE_QUERY_QP 0x4UL 727 #define CMDQ_QUERY_QP_OPCODE_LAST CMDQ_QUERY_QP_OPCODE_QUERY_QP 728 u8 cmd_size; 729 __le16 flags; 730 __le16 cookie; 731 u8 resp_size; 732 u8 reserved8; 733 __le64 resp_addr; 734 __le32 qp_cid; 735 __le32 unused_0; 736 }; 737 738 /* creq_query_qp_resp (size:128b/16B) */ 739 struct creq_query_qp_resp { 740 u8 type; 741 #define CREQ_QUERY_QP_RESP_TYPE_MASK 0x3fUL 742 #define CREQ_QUERY_QP_RESP_TYPE_SFT 0 743 #define CREQ_QUERY_QP_RESP_TYPE_QP_EVENT 0x38UL 744 #define CREQ_QUERY_QP_RESP_TYPE_LAST CREQ_QUERY_QP_RESP_TYPE_QP_EVENT 745 u8 status; 746 __le16 cookie; 747 __le32 size; 748 u8 v; 749 #define CREQ_QUERY_QP_RESP_V 0x1UL 750 u8 event; 751 #define CREQ_QUERY_QP_RESP_EVENT_QUERY_QP 0x4UL 752 #define CREQ_QUERY_QP_RESP_EVENT_LAST CREQ_QUERY_QP_RESP_EVENT_QUERY_QP 753 u8 reserved48[6]; 754 }; 755 756 /* creq_query_qp_resp_sb (size:832b/104B) */ 757 struct creq_query_qp_resp_sb { 758 u8 opcode; 759 #define CREQ_QUERY_QP_RESP_SB_OPCODE_QUERY_QP 0x4UL 760 #define CREQ_QUERY_QP_RESP_SB_OPCODE_LAST CREQ_QUERY_QP_RESP_SB_OPCODE_QUERY_QP 761 u8 status; 762 __le16 cookie; 763 __le16 flags; 764 u8 resp_size; 765 u8 reserved8; 766 __le32 xid; 767 u8 en_sqd_async_notify_state; 768 #define CREQ_QUERY_QP_RESP_SB_STATE_MASK 0xfUL 769 #define CREQ_QUERY_QP_RESP_SB_STATE_SFT 0 770 #define CREQ_QUERY_QP_RESP_SB_STATE_RESET 0x0UL 771 #define CREQ_QUERY_QP_RESP_SB_STATE_INIT 0x1UL 772 #define CREQ_QUERY_QP_RESP_SB_STATE_RTR 0x2UL 773 #define CREQ_QUERY_QP_RESP_SB_STATE_RTS 0x3UL 774 #define CREQ_QUERY_QP_RESP_SB_STATE_SQD 0x4UL 775 #define CREQ_QUERY_QP_RESP_SB_STATE_SQE 0x5UL 776 #define CREQ_QUERY_QP_RESP_SB_STATE_ERR 0x6UL 777 #define CREQ_QUERY_QP_RESP_SB_STATE_LAST CREQ_QUERY_QP_RESP_SB_STATE_ERR 778 #define CREQ_QUERY_QP_RESP_SB_EN_SQD_ASYNC_NOTIFY 0x10UL 779 #define CREQ_QUERY_QP_RESP_SB_UNUSED3_MASK 0xe0UL 780 #define CREQ_QUERY_QP_RESP_SB_UNUSED3_SFT 5 781 u8 access; 782 #define \ 783 CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_MASK\ 784 0xffUL 785 #define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC_REMOTE_READ_REMOTE_WRITE_LOCAL_WRITE_SFT\ 786 0 787 #define CREQ_QUERY_QP_RESP_SB_ACCESS_LOCAL_WRITE 0x1UL 788 #define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_WRITE 0x2UL 789 #define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_READ 0x4UL 790 #define CREQ_QUERY_QP_RESP_SB_ACCESS_REMOTE_ATOMIC 0x8UL 791 __le16 pkey; 792 __le32 qkey; 793 __le16 udp_src_port; 794 __le16 reserved16; 795 __le32 dgid[4]; 796 __le32 flow_label; 797 __le16 sgid_index; 798 u8 hop_limit; 799 u8 traffic_class; 800 __le16 dest_mac[3]; 801 __le16 path_mtu_dest_vlan_id; 802 #define CREQ_QUERY_QP_RESP_SB_DEST_VLAN_ID_MASK 0xfffUL 803 #define CREQ_QUERY_QP_RESP_SB_DEST_VLAN_ID_SFT 0 804 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MASK 0xf000UL 805 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_SFT 12 806 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_256 (0x0UL << 12) 807 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_512 (0x1UL << 12) 808 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_1024 (0x2UL << 12) 809 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_2048 (0x3UL << 12) 810 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_4096 (0x4UL << 12) 811 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_8192 (0x5UL << 12) 812 #define CREQ_QUERY_QP_RESP_SB_PATH_MTU_LAST CREQ_QUERY_QP_RESP_SB_PATH_MTU_MTU_8192 813 u8 timeout; 814 u8 retry_cnt; 815 u8 rnr_retry; 816 u8 min_rnr_timer; 817 __le32 rq_psn; 818 __le32 sq_psn; 819 u8 max_rd_atomic; 820 u8 max_dest_rd_atomic; 821 u8 tos_dscp_tos_ecn; 822 #define CREQ_QUERY_QP_RESP_SB_TOS_ECN_MASK 0x3UL 823 #define CREQ_QUERY_QP_RESP_SB_TOS_ECN_SFT 0 824 #define CREQ_QUERY_QP_RESP_SB_TOS_DSCP_MASK 0xfcUL 825 #define CREQ_QUERY_QP_RESP_SB_TOS_DSCP_SFT 2 826 u8 enable_cc; 827 #define CREQ_QUERY_QP_RESP_SB_ENABLE_CC 0x1UL 828 __le32 sq_size; 829 __le32 rq_size; 830 __le16 sq_sge; 831 __le16 rq_sge; 832 __le32 max_inline_data; 833 __le32 dest_qp_id; 834 __le16 port_id; 835 u8 unused_0; 836 u8 stat_collection_id; 837 __le16 src_mac[3]; 838 __le16 vlan_pcp_vlan_dei_vlan_id; 839 #define CREQ_QUERY_QP_RESP_SB_VLAN_ID_MASK 0xfffUL 840 #define CREQ_QUERY_QP_RESP_SB_VLAN_ID_SFT 0 841 #define CREQ_QUERY_QP_RESP_SB_VLAN_DEI 0x1000UL 842 #define CREQ_QUERY_QP_RESP_SB_VLAN_PCP_MASK 0xe000UL 843 #define CREQ_QUERY_QP_RESP_SB_VLAN_PCP_SFT 13 844 }; 845 846 /* cmdq_query_qp_extend (size:192b/24B) */ 847 struct cmdq_query_qp_extend { 848 u8 opcode; 849 #define CMDQ_QUERY_QP_EXTEND_OPCODE_QUERY_QP_EXTEND 0x91UL 850 #define CMDQ_QUERY_QP_EXTEND_OPCODE_LAST CMDQ_QUERY_QP_EXTEND_OPCODE_QUERY_QP_EXTEND 851 u8 cmd_size; 852 __le16 flags; 853 __le16 cookie; 854 u8 resp_size; 855 u8 num_qps; 856 __le64 resp_addr; 857 __le32 function_id; 858 #define CMDQ_QUERY_QP_EXTEND_PF_NUM_MASK 0xffUL 859 #define CMDQ_QUERY_QP_EXTEND_PF_NUM_SFT 0 860 #define CMDQ_QUERY_QP_EXTEND_VF_NUM_MASK 0xffff00UL 861 #define CMDQ_QUERY_QP_EXTEND_VF_NUM_SFT 8 862 #define CMDQ_QUERY_QP_EXTEND_VF_VALID 0x1000000UL 863 __le32 current_index; 864 }; 865 866 /* creq_query_qp_extend_resp (size:128b/16B) */ 867 struct creq_query_qp_extend_resp { 868 u8 type; 869 #define CREQ_QUERY_QP_EXTEND_RESP_TYPE_MASK 0x3fUL 870 #define CREQ_QUERY_QP_EXTEND_RESP_TYPE_SFT 0 871 #define CREQ_QUERY_QP_EXTEND_RESP_TYPE_QP_EVENT 0x38UL 872 #define CREQ_QUERY_QP_EXTEND_RESP_TYPE_LAST CREQ_QUERY_QP_EXTEND_RESP_TYPE_QP_EVENT 873 u8 status; 874 __le16 cookie; 875 __le32 size; 876 u8 v; 877 #define CREQ_QUERY_QP_EXTEND_RESP_V 0x1UL 878 u8 event; 879 #define CREQ_QUERY_QP_EXTEND_RESP_EVENT_QUERY_QP_EXTEND 0x91UL 880 #define CREQ_QUERY_QP_EXTEND_RESP_EVENT_LAST CREQ_QUERY_QP_EXTEND_RESP_EVENT_QUERY_QP_EXTEND 881 __le16 reserved16; 882 __le32 current_index; 883 }; 884 885 /* creq_query_qp_extend_resp_sb (size:384b/48B) */ 886 struct creq_query_qp_extend_resp_sb { 887 u8 opcode; 888 #define CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_QUERY_QP_EXTEND 0x91UL 889 #define CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_LAST \ 890 CREQ_QUERY_QP_EXTEND_RESP_SB_OPCODE_QUERY_QP_EXTEND 891 u8 status; 892 __le16 cookie; 893 __le16 flags; 894 u8 resp_size; 895 u8 reserved8; 896 __le32 xid; 897 u8 state; 898 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_MASK 0xfUL 899 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SFT 0 900 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RESET 0x0UL 901 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_INIT 0x1UL 902 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RTR 0x2UL 903 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_RTS 0x3UL 904 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SQD 0x4UL 905 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_SQE 0x5UL 906 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_ERR 0x6UL 907 #define CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_LAST CREQ_QUERY_QP_EXTEND_RESP_SB_STATE_ERR 908 #define CREQ_QUERY_QP_EXTEND_RESP_SB_UNUSED4_MASK 0xf0UL 909 #define CREQ_QUERY_QP_EXTEND_RESP_SB_UNUSED4_SFT 4 910 u8 reserved_8; 911 __le16 port_id; 912 __le32 qkey; 913 __le16 sgid_index; 914 u8 network_type; 915 #define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV1 0x0UL 916 #define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV4 0x2UL 917 #define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV6 0x3UL 918 #define CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_LAST \ 919 CREQ_QUERY_QP_EXTEND_RESP_SB_NETWORK_TYPE_ROCEV2_IPV6 920 u8 unused_0; 921 __le32 dgid[4]; 922 __le32 dest_qp_id; 923 u8 stat_collection_id; 924 u8 reservred_8; 925 __le16 reserved_16; 926 }; 927 928 /* creq_query_qp_extend_resp_sb_tlv (size:512b/64B) */ 929 struct creq_query_qp_extend_resp_sb_tlv { 930 __le16 cmd_discr; 931 u8 reserved_8b; 932 u8 tlv_flags; 933 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE 0x1UL 934 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE_LAST 0x0UL 935 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST 0x1UL 936 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED 0x2UL 937 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO (0x0UL << 1) 938 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES (0x1UL << 1) 939 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \ 940 CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES 941 __le16 tlv_type; 942 __le16 length; 943 u8 total_size; 944 u8 reserved56[7]; 945 u8 opcode; 946 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_QUERY_QP_EXTEND 0x91UL 947 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_LAST \ 948 CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_OPCODE_QUERY_QP_EXTEND 949 u8 status; 950 __le16 cookie; 951 __le16 flags; 952 u8 resp_size; 953 u8 reserved8; 954 __le32 xid; 955 u8 state; 956 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_MASK 0xfUL 957 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SFT 0 958 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RESET 0x0UL 959 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_INIT 0x1UL 960 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RTR 0x2UL 961 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_RTS 0x3UL 962 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SQD 0x4UL 963 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_SQE 0x5UL 964 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_ERR 0x6UL 965 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_LAST \ 966 CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_STATE_ERR 967 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_UNUSED4_MASK 0xf0UL 968 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_UNUSED4_SFT 4 969 u8 reserved_8; 970 __le16 port_id; 971 __le32 qkey; 972 __le16 sgid_index; 973 u8 network_type; 974 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV1 0x0UL 975 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV4 0x2UL 976 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV6 0x3UL 977 #define CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_LAST \ 978 CREQ_QUERY_QP_EXTEND_RESP_SB_TLV_NETWORK_TYPE_ROCEV2_IPV6 979 u8 unused_0; 980 __le32 dgid[4]; 981 __le32 dest_qp_id; 982 u8 stat_collection_id; 983 u8 reservred_8; 984 __le16 reserved_16; 985 }; 986 987 /* cmdq_create_srq (size:448b/56B) */ 988 struct cmdq_create_srq { 989 u8 opcode; 990 #define CMDQ_CREATE_SRQ_OPCODE_CREATE_SRQ 0x5UL 991 #define CMDQ_CREATE_SRQ_OPCODE_LAST CMDQ_CREATE_SRQ_OPCODE_CREATE_SRQ 992 u8 cmd_size; 993 __le16 flags; 994 #define CMDQ_CREATE_SRQ_FLAGS_STEERING_TAG_VALID 0x1UL 995 __le16 cookie; 996 u8 resp_size; 997 u8 reserved8; 998 __le64 resp_addr; 999 __le64 srq_handle; 1000 __le16 pg_size_lvl; 1001 #define CMDQ_CREATE_SRQ_LVL_MASK 0x3UL 1002 #define CMDQ_CREATE_SRQ_LVL_SFT 0 1003 #define CMDQ_CREATE_SRQ_LVL_LVL_0 0x0UL 1004 #define CMDQ_CREATE_SRQ_LVL_LVL_1 0x1UL 1005 #define CMDQ_CREATE_SRQ_LVL_LVL_2 0x2UL 1006 #define CMDQ_CREATE_SRQ_LVL_LAST CMDQ_CREATE_SRQ_LVL_LVL_2 1007 #define CMDQ_CREATE_SRQ_PG_SIZE_MASK 0x1cUL 1008 #define CMDQ_CREATE_SRQ_PG_SIZE_SFT 2 1009 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_4K (0x0UL << 2) 1010 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_8K (0x1UL << 2) 1011 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_64K (0x2UL << 2) 1012 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_2M (0x3UL << 2) 1013 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_8M (0x4UL << 2) 1014 #define CMDQ_CREATE_SRQ_PG_SIZE_PG_1G (0x5UL << 2) 1015 #define CMDQ_CREATE_SRQ_PG_SIZE_LAST CMDQ_CREATE_SRQ_PG_SIZE_PG_1G 1016 #define CMDQ_CREATE_SRQ_UNUSED11_MASK 0xffe0UL 1017 #define CMDQ_CREATE_SRQ_UNUSED11_SFT 5 1018 __le16 eventq_id; 1019 #define CMDQ_CREATE_SRQ_EVENTQ_ID_MASK 0xfffUL 1020 #define CMDQ_CREATE_SRQ_EVENTQ_ID_SFT 0 1021 #define CMDQ_CREATE_SRQ_UNUSED4_MASK 0xf000UL 1022 #define CMDQ_CREATE_SRQ_UNUSED4_SFT 12 1023 __le16 srq_size; 1024 __le16 srq_fwo; 1025 __le32 dpi; 1026 __le32 pd_id; 1027 __le64 pbl; 1028 __le16 steering_tag; 1029 u8 reserved48[6]; 1030 }; 1031 1032 /* creq_create_srq_resp (size:128b/16B) */ 1033 struct creq_create_srq_resp { 1034 u8 type; 1035 #define CREQ_CREATE_SRQ_RESP_TYPE_MASK 0x3fUL 1036 #define CREQ_CREATE_SRQ_RESP_TYPE_SFT 0 1037 #define CREQ_CREATE_SRQ_RESP_TYPE_QP_EVENT 0x38UL 1038 #define CREQ_CREATE_SRQ_RESP_TYPE_LAST CREQ_CREATE_SRQ_RESP_TYPE_QP_EVENT 1039 u8 status; 1040 __le16 cookie; 1041 __le32 xid; 1042 u8 v; 1043 #define CREQ_CREATE_SRQ_RESP_V 0x1UL 1044 u8 event; 1045 #define CREQ_CREATE_SRQ_RESP_EVENT_CREATE_SRQ 0x5UL 1046 #define CREQ_CREATE_SRQ_RESP_EVENT_LAST CREQ_CREATE_SRQ_RESP_EVENT_CREATE_SRQ 1047 u8 reserved48[6]; 1048 }; 1049 1050 /* cmdq_destroy_srq (size:192b/24B) */ 1051 struct cmdq_destroy_srq { 1052 u8 opcode; 1053 #define CMDQ_DESTROY_SRQ_OPCODE_DESTROY_SRQ 0x6UL 1054 #define CMDQ_DESTROY_SRQ_OPCODE_LAST CMDQ_DESTROY_SRQ_OPCODE_DESTROY_SRQ 1055 u8 cmd_size; 1056 __le16 flags; 1057 __le16 cookie; 1058 u8 resp_size; 1059 u8 reserved8; 1060 __le64 resp_addr; 1061 __le32 srq_cid; 1062 __le32 unused_0; 1063 }; 1064 1065 /* creq_destroy_srq_resp (size:128b/16B) */ 1066 struct creq_destroy_srq_resp { 1067 u8 type; 1068 #define CREQ_DESTROY_SRQ_RESP_TYPE_MASK 0x3fUL 1069 #define CREQ_DESTROY_SRQ_RESP_TYPE_SFT 0 1070 #define CREQ_DESTROY_SRQ_RESP_TYPE_QP_EVENT 0x38UL 1071 #define CREQ_DESTROY_SRQ_RESP_TYPE_LAST CREQ_DESTROY_SRQ_RESP_TYPE_QP_EVENT 1072 u8 status; 1073 __le16 cookie; 1074 __le32 xid; 1075 u8 v; 1076 #define CREQ_DESTROY_SRQ_RESP_V 0x1UL 1077 u8 event; 1078 #define CREQ_DESTROY_SRQ_RESP_EVENT_DESTROY_SRQ 0x6UL 1079 #define CREQ_DESTROY_SRQ_RESP_EVENT_LAST CREQ_DESTROY_SRQ_RESP_EVENT_DESTROY_SRQ 1080 __le16 enable_for_arm[3]; 1081 #define CREQ_DESTROY_SRQ_RESP_UNUSED0_MASK 0xffffUL 1082 #define CREQ_DESTROY_SRQ_RESP_UNUSED0_SFT 0 1083 #define CREQ_DESTROY_SRQ_RESP_ENABLE_FOR_ARM_MASK 0x30000UL 1084 #define CREQ_DESTROY_SRQ_RESP_ENABLE_FOR_ARM_SFT 16 1085 }; 1086 1087 /* cmdq_query_srq (size:192b/24B) */ 1088 struct cmdq_query_srq { 1089 u8 opcode; 1090 #define CMDQ_QUERY_SRQ_OPCODE_QUERY_SRQ 0x8UL 1091 #define CMDQ_QUERY_SRQ_OPCODE_LAST CMDQ_QUERY_SRQ_OPCODE_QUERY_SRQ 1092 u8 cmd_size; 1093 __le16 flags; 1094 __le16 cookie; 1095 u8 resp_size; 1096 u8 reserved8; 1097 __le64 resp_addr; 1098 __le32 srq_cid; 1099 __le32 unused_0; 1100 }; 1101 1102 /* creq_query_srq_resp (size:128b/16B) */ 1103 struct creq_query_srq_resp { 1104 u8 type; 1105 #define CREQ_QUERY_SRQ_RESP_TYPE_MASK 0x3fUL 1106 #define CREQ_QUERY_SRQ_RESP_TYPE_SFT 0 1107 #define CREQ_QUERY_SRQ_RESP_TYPE_QP_EVENT 0x38UL 1108 #define CREQ_QUERY_SRQ_RESP_TYPE_LAST CREQ_QUERY_SRQ_RESP_TYPE_QP_EVENT 1109 u8 status; 1110 __le16 cookie; 1111 __le32 size; 1112 u8 v; 1113 #define CREQ_QUERY_SRQ_RESP_V 0x1UL 1114 u8 event; 1115 #define CREQ_QUERY_SRQ_RESP_EVENT_QUERY_SRQ 0x8UL 1116 #define CREQ_QUERY_SRQ_RESP_EVENT_LAST CREQ_QUERY_SRQ_RESP_EVENT_QUERY_SRQ 1117 u8 reserved48[6]; 1118 }; 1119 1120 /* creq_query_srq_resp_sb (size:256b/32B) */ 1121 struct creq_query_srq_resp_sb { 1122 u8 opcode; 1123 #define CREQ_QUERY_SRQ_RESP_SB_OPCODE_QUERY_SRQ 0x8UL 1124 #define CREQ_QUERY_SRQ_RESP_SB_OPCODE_LAST CREQ_QUERY_SRQ_RESP_SB_OPCODE_QUERY_SRQ 1125 u8 status; 1126 __le16 cookie; 1127 __le16 flags; 1128 u8 resp_size; 1129 u8 reserved8; 1130 __le32 xid; 1131 __le16 srq_limit; 1132 __le16 reserved16; 1133 __le32 data[4]; 1134 }; 1135 1136 /* cmdq_create_cq (size:448b/56B) */ 1137 struct cmdq_create_cq { 1138 u8 opcode; 1139 #define CMDQ_CREATE_CQ_OPCODE_CREATE_CQ 0x9UL 1140 #define CMDQ_CREATE_CQ_OPCODE_LAST CMDQ_CREATE_CQ_OPCODE_CREATE_CQ 1141 u8 cmd_size; 1142 __le16 flags; 1143 #define CMDQ_CREATE_CQ_FLAGS_DISABLE_CQ_OVERFLOW_DETECTION 0x1UL 1144 #define CMDQ_CREATE_CQ_FLAGS_STEERING_TAG_VALID 0x2UL 1145 #define CMDQ_CREATE_CQ_FLAGS_INFINITE_CQ_MODE 0x4UL 1146 #define CMDQ_CREATE_CQ_FLAGS_COALESCING_VALID 0x8UL 1147 __le16 cookie; 1148 u8 resp_size; 1149 u8 reserved8; 1150 __le64 resp_addr; 1151 __le64 cq_handle; 1152 __le32 pg_size_lvl; 1153 #define CMDQ_CREATE_CQ_LVL_MASK 0x3UL 1154 #define CMDQ_CREATE_CQ_LVL_SFT 0 1155 #define CMDQ_CREATE_CQ_LVL_LVL_0 0x0UL 1156 #define CMDQ_CREATE_CQ_LVL_LVL_1 0x1UL 1157 #define CMDQ_CREATE_CQ_LVL_LVL_2 0x2UL 1158 #define CMDQ_CREATE_CQ_LVL_LAST CMDQ_CREATE_CQ_LVL_LVL_2 1159 #define CMDQ_CREATE_CQ_PG_SIZE_MASK 0x1cUL 1160 #define CMDQ_CREATE_CQ_PG_SIZE_SFT 2 1161 #define CMDQ_CREATE_CQ_PG_SIZE_PG_4K (0x0UL << 2) 1162 #define CMDQ_CREATE_CQ_PG_SIZE_PG_8K (0x1UL << 2) 1163 #define CMDQ_CREATE_CQ_PG_SIZE_PG_64K (0x2UL << 2) 1164 #define CMDQ_CREATE_CQ_PG_SIZE_PG_2M (0x3UL << 2) 1165 #define CMDQ_CREATE_CQ_PG_SIZE_PG_8M (0x4UL << 2) 1166 #define CMDQ_CREATE_CQ_PG_SIZE_PG_1G (0x5UL << 2) 1167 #define CMDQ_CREATE_CQ_PG_SIZE_LAST CMDQ_CREATE_CQ_PG_SIZE_PG_1G 1168 #define CMDQ_CREATE_CQ_UNUSED27_MASK 0xffffffe0UL 1169 #define CMDQ_CREATE_CQ_UNUSED27_SFT 5 1170 __le32 cq_fco_cnq_id; 1171 #define CMDQ_CREATE_CQ_CNQ_ID_MASK 0xfffUL 1172 #define CMDQ_CREATE_CQ_CNQ_ID_SFT 0 1173 #define CMDQ_CREATE_CQ_CQ_FCO_MASK 0xfffff000UL 1174 #define CMDQ_CREATE_CQ_CQ_FCO_SFT 12 1175 __le32 dpi; 1176 __le32 cq_size; 1177 __le64 pbl; 1178 __le16 steering_tag; 1179 u8 reserved48[2]; 1180 __le32 coalescing; 1181 #define CMDQ_CREATE_CQ_BUF_MAXTIME_MASK 0x1ffUL 1182 #define CMDQ_CREATE_CQ_BUF_MAXTIME_SFT 0 1183 #define CMDQ_CREATE_CQ_NORMAL_MAXBUF_MASK 0x3e00UL 1184 #define CMDQ_CREATE_CQ_NORMAL_MAXBUF_SFT 9 1185 #define CMDQ_CREATE_CQ_DURING_MAXBUF_MASK 0x7c000UL 1186 #define CMDQ_CREATE_CQ_DURING_MAXBUF_SFT 14 1187 #define CMDQ_CREATE_CQ_ENABLE_RING_IDLE_MODE 0x80000UL 1188 #define CMDQ_CREATE_CQ_UNUSED12_MASK 0xfff00000UL 1189 #define CMDQ_CREATE_CQ_UNUSED12_SFT 20 1190 __le64 reserved64; 1191 }; 1192 1193 /* creq_create_cq_resp (size:128b/16B) */ 1194 struct creq_create_cq_resp { 1195 u8 type; 1196 #define CREQ_CREATE_CQ_RESP_TYPE_MASK 0x3fUL 1197 #define CREQ_CREATE_CQ_RESP_TYPE_SFT 0 1198 #define CREQ_CREATE_CQ_RESP_TYPE_QP_EVENT 0x38UL 1199 #define CREQ_CREATE_CQ_RESP_TYPE_LAST CREQ_CREATE_CQ_RESP_TYPE_QP_EVENT 1200 u8 status; 1201 __le16 cookie; 1202 __le32 xid; 1203 u8 v; 1204 #define CREQ_CREATE_CQ_RESP_V 0x1UL 1205 u8 event; 1206 #define CREQ_CREATE_CQ_RESP_EVENT_CREATE_CQ 0x9UL 1207 #define CREQ_CREATE_CQ_RESP_EVENT_LAST CREQ_CREATE_CQ_RESP_EVENT_CREATE_CQ 1208 u8 reserved48[6]; 1209 }; 1210 1211 /* cmdq_destroy_cq (size:192b/24B) */ 1212 struct cmdq_destroy_cq { 1213 u8 opcode; 1214 #define CMDQ_DESTROY_CQ_OPCODE_DESTROY_CQ 0xaUL 1215 #define CMDQ_DESTROY_CQ_OPCODE_LAST CMDQ_DESTROY_CQ_OPCODE_DESTROY_CQ 1216 u8 cmd_size; 1217 __le16 flags; 1218 __le16 cookie; 1219 u8 resp_size; 1220 u8 reserved8; 1221 __le64 resp_addr; 1222 __le32 cq_cid; 1223 __le32 unused_0; 1224 }; 1225 1226 /* creq_destroy_cq_resp (size:128b/16B) */ 1227 struct creq_destroy_cq_resp { 1228 u8 type; 1229 #define CREQ_DESTROY_CQ_RESP_TYPE_MASK 0x3fUL 1230 #define CREQ_DESTROY_CQ_RESP_TYPE_SFT 0 1231 #define CREQ_DESTROY_CQ_RESP_TYPE_QP_EVENT 0x38UL 1232 #define CREQ_DESTROY_CQ_RESP_TYPE_LAST CREQ_DESTROY_CQ_RESP_TYPE_QP_EVENT 1233 u8 status; 1234 __le16 cookie; 1235 __le32 xid; 1236 u8 v; 1237 #define CREQ_DESTROY_CQ_RESP_V 0x1UL 1238 u8 event; 1239 #define CREQ_DESTROY_CQ_RESP_EVENT_DESTROY_CQ 0xaUL 1240 #define CREQ_DESTROY_CQ_RESP_EVENT_LAST CREQ_DESTROY_CQ_RESP_EVENT_DESTROY_CQ 1241 __le16 cq_arm_lvl; 1242 #define CREQ_DESTROY_CQ_RESP_CQ_ARM_LVL_MASK 0x3UL 1243 #define CREQ_DESTROY_CQ_RESP_CQ_ARM_LVL_SFT 0 1244 __le16 total_cnq_events; 1245 __le16 reserved16; 1246 }; 1247 1248 /* cmdq_resize_cq (size:320b/40B) */ 1249 struct cmdq_resize_cq { 1250 u8 opcode; 1251 #define CMDQ_RESIZE_CQ_OPCODE_RESIZE_CQ 0xcUL 1252 #define CMDQ_RESIZE_CQ_OPCODE_LAST CMDQ_RESIZE_CQ_OPCODE_RESIZE_CQ 1253 u8 cmd_size; 1254 __le16 flags; 1255 __le16 cookie; 1256 u8 resp_size; 1257 u8 reserved8; 1258 __le64 resp_addr; 1259 __le32 cq_cid; 1260 __le32 new_cq_size_pg_size_lvl; 1261 #define CMDQ_RESIZE_CQ_LVL_MASK 0x3UL 1262 #define CMDQ_RESIZE_CQ_LVL_SFT 0 1263 #define CMDQ_RESIZE_CQ_LVL_LVL_0 0x0UL 1264 #define CMDQ_RESIZE_CQ_LVL_LVL_1 0x1UL 1265 #define CMDQ_RESIZE_CQ_LVL_LVL_2 0x2UL 1266 #define CMDQ_RESIZE_CQ_LVL_LAST CMDQ_RESIZE_CQ_LVL_LVL_2 1267 #define CMDQ_RESIZE_CQ_PG_SIZE_MASK 0x1cUL 1268 #define CMDQ_RESIZE_CQ_PG_SIZE_SFT 2 1269 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_4K (0x0UL << 2) 1270 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_8K (0x1UL << 2) 1271 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_64K (0x2UL << 2) 1272 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_2M (0x3UL << 2) 1273 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_8M (0x4UL << 2) 1274 #define CMDQ_RESIZE_CQ_PG_SIZE_PG_1G (0x5UL << 2) 1275 #define CMDQ_RESIZE_CQ_PG_SIZE_LAST CMDQ_RESIZE_CQ_PG_SIZE_PG_1G 1276 #define CMDQ_RESIZE_CQ_NEW_CQ_SIZE_MASK 0x1fffffe0UL 1277 #define CMDQ_RESIZE_CQ_NEW_CQ_SIZE_SFT 5 1278 __le64 new_pbl; 1279 __le32 new_cq_fco; 1280 __le32 unused_0; 1281 }; 1282 1283 /* creq_resize_cq_resp (size:128b/16B) */ 1284 struct creq_resize_cq_resp { 1285 u8 type; 1286 #define CREQ_RESIZE_CQ_RESP_TYPE_MASK 0x3fUL 1287 #define CREQ_RESIZE_CQ_RESP_TYPE_SFT 0 1288 #define CREQ_RESIZE_CQ_RESP_TYPE_QP_EVENT 0x38UL 1289 #define CREQ_RESIZE_CQ_RESP_TYPE_LAST CREQ_RESIZE_CQ_RESP_TYPE_QP_EVENT 1290 u8 status; 1291 __le16 cookie; 1292 __le32 xid; 1293 u8 v; 1294 #define CREQ_RESIZE_CQ_RESP_V 0x1UL 1295 u8 event; 1296 #define CREQ_RESIZE_CQ_RESP_EVENT_RESIZE_CQ 0xcUL 1297 #define CREQ_RESIZE_CQ_RESP_EVENT_LAST CREQ_RESIZE_CQ_RESP_EVENT_RESIZE_CQ 1298 u8 reserved48[6]; 1299 }; 1300 1301 /* cmdq_allocate_mrw (size:256b/32B) */ 1302 struct cmdq_allocate_mrw { 1303 u8 opcode; 1304 #define CMDQ_ALLOCATE_MRW_OPCODE_ALLOCATE_MRW 0xdUL 1305 #define CMDQ_ALLOCATE_MRW_OPCODE_LAST CMDQ_ALLOCATE_MRW_OPCODE_ALLOCATE_MRW 1306 u8 cmd_size; 1307 __le16 flags; 1308 __le16 cookie; 1309 u8 resp_size; 1310 u8 reserved8; 1311 __le64 resp_addr; 1312 __le64 mrw_handle; 1313 u8 mrw_flags; 1314 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MASK 0xfUL 1315 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_SFT 0 1316 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MR 0x0UL 1317 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_PMR 0x1UL 1318 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE1 0x2UL 1319 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2A 0x3UL 1320 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2B 0x4UL 1321 #define CMDQ_ALLOCATE_MRW_MRW_FLAGS_LAST CMDQ_ALLOCATE_MRW_MRW_FLAGS_MW_TYPE2B 1322 #define CMDQ_ALLOCATE_MRW_STEERING_TAG_VALID 0x10UL 1323 #define CMDQ_ALLOCATE_MRW_UNUSED4_MASK 0xe0UL 1324 #define CMDQ_ALLOCATE_MRW_UNUSED4_SFT 5 1325 u8 access; 1326 #define CMDQ_ALLOCATE_MRW_ACCESS_CONSUMER_OWNED_KEY 0x20UL 1327 __le16 steering_tag; 1328 __le32 pd_id; 1329 }; 1330 1331 /* creq_allocate_mrw_resp (size:128b/16B) */ 1332 struct creq_allocate_mrw_resp { 1333 u8 type; 1334 #define CREQ_ALLOCATE_MRW_RESP_TYPE_MASK 0x3fUL 1335 #define CREQ_ALLOCATE_MRW_RESP_TYPE_SFT 0 1336 #define CREQ_ALLOCATE_MRW_RESP_TYPE_QP_EVENT 0x38UL 1337 #define CREQ_ALLOCATE_MRW_RESP_TYPE_LAST CREQ_ALLOCATE_MRW_RESP_TYPE_QP_EVENT 1338 u8 status; 1339 __le16 cookie; 1340 __le32 xid; 1341 u8 v; 1342 #define CREQ_ALLOCATE_MRW_RESP_V 0x1UL 1343 u8 event; 1344 #define CREQ_ALLOCATE_MRW_RESP_EVENT_ALLOCATE_MRW 0xdUL 1345 #define CREQ_ALLOCATE_MRW_RESP_EVENT_LAST CREQ_ALLOCATE_MRW_RESP_EVENT_ALLOCATE_MRW 1346 u8 reserved48[6]; 1347 }; 1348 1349 /* cmdq_deallocate_key (size:192b/24B) */ 1350 struct cmdq_deallocate_key { 1351 u8 opcode; 1352 #define CMDQ_DEALLOCATE_KEY_OPCODE_DEALLOCATE_KEY 0xeUL 1353 #define CMDQ_DEALLOCATE_KEY_OPCODE_LAST CMDQ_DEALLOCATE_KEY_OPCODE_DEALLOCATE_KEY 1354 u8 cmd_size; 1355 __le16 flags; 1356 __le16 cookie; 1357 u8 resp_size; 1358 u8 reserved8; 1359 __le64 resp_addr; 1360 u8 mrw_flags; 1361 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MASK 0xfUL 1362 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_SFT 0 1363 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MR 0x0UL 1364 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_PMR 0x1UL 1365 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE1 0x2UL 1366 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2A 0x3UL 1367 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2B 0x4UL 1368 #define CMDQ_DEALLOCATE_KEY_MRW_FLAGS_LAST CMDQ_DEALLOCATE_KEY_MRW_FLAGS_MW_TYPE2B 1369 #define CMDQ_DEALLOCATE_KEY_UNUSED4_MASK 0xf0UL 1370 #define CMDQ_DEALLOCATE_KEY_UNUSED4_SFT 4 1371 u8 unused24[3]; 1372 __le32 key; 1373 }; 1374 1375 /* creq_deallocate_key_resp (size:128b/16B) */ 1376 struct creq_deallocate_key_resp { 1377 u8 type; 1378 #define CREQ_DEALLOCATE_KEY_RESP_TYPE_MASK 0x3fUL 1379 #define CREQ_DEALLOCATE_KEY_RESP_TYPE_SFT 0 1380 #define CREQ_DEALLOCATE_KEY_RESP_TYPE_QP_EVENT 0x38UL 1381 #define CREQ_DEALLOCATE_KEY_RESP_TYPE_LAST CREQ_DEALLOCATE_KEY_RESP_TYPE_QP_EVENT 1382 u8 status; 1383 __le16 cookie; 1384 __le32 xid; 1385 u8 v; 1386 #define CREQ_DEALLOCATE_KEY_RESP_V 0x1UL 1387 u8 event; 1388 #define CREQ_DEALLOCATE_KEY_RESP_EVENT_DEALLOCATE_KEY 0xeUL 1389 #define CREQ_DEALLOCATE_KEY_RESP_EVENT_LAST CREQ_DEALLOCATE_KEY_RESP_EVENT_DEALLOCATE_KEY 1390 __le16 reserved16; 1391 __le32 bound_window_info; 1392 }; 1393 1394 /* cmdq_register_mr (size:448b/56B) */ 1395 struct cmdq_register_mr { 1396 u8 opcode; 1397 #define CMDQ_REGISTER_MR_OPCODE_REGISTER_MR 0xfUL 1398 #define CMDQ_REGISTER_MR_OPCODE_LAST CMDQ_REGISTER_MR_OPCODE_REGISTER_MR 1399 u8 cmd_size; 1400 __le16 flags; 1401 #define CMDQ_REGISTER_MR_FLAGS_ALLOC_MR 0x1UL 1402 #define CMDQ_REGISTER_MR_FLAGS_STEERING_TAG_VALID 0x2UL 1403 #define CMDQ_REGISTER_MR_FLAGS_ENABLE_RO 0x4UL 1404 __le16 cookie; 1405 u8 resp_size; 1406 u8 reserved8; 1407 __le64 resp_addr; 1408 u8 log2_pg_size_lvl; 1409 #define CMDQ_REGISTER_MR_LVL_MASK 0x3UL 1410 #define CMDQ_REGISTER_MR_LVL_SFT 0 1411 #define CMDQ_REGISTER_MR_LVL_LVL_0 0x0UL 1412 #define CMDQ_REGISTER_MR_LVL_LVL_1 0x1UL 1413 #define CMDQ_REGISTER_MR_LVL_LVL_2 0x2UL 1414 #define CMDQ_REGISTER_MR_LVL_LAST CMDQ_REGISTER_MR_LVL_LVL_2 1415 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_MASK 0x7cUL 1416 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_SFT 2 1417 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_4K (0xcUL << 2) 1418 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_8K (0xdUL << 2) 1419 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_64K (0x10UL << 2) 1420 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_256K (0x12UL << 2) 1421 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1M (0x14UL << 2) 1422 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_2M (0x15UL << 2) 1423 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_4M (0x16UL << 2) 1424 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1G (0x1eUL << 2) 1425 #define CMDQ_REGISTER_MR_LOG2_PG_SIZE_LAST CMDQ_REGISTER_MR_LOG2_PG_SIZE_PG_1G 1426 #define CMDQ_REGISTER_MR_UNUSED1 0x80UL 1427 u8 access; 1428 #define CMDQ_REGISTER_MR_ACCESS_LOCAL_WRITE 0x1UL 1429 #define CMDQ_REGISTER_MR_ACCESS_REMOTE_READ 0x2UL 1430 #define CMDQ_REGISTER_MR_ACCESS_REMOTE_WRITE 0x4UL 1431 #define CMDQ_REGISTER_MR_ACCESS_REMOTE_ATOMIC 0x8UL 1432 #define CMDQ_REGISTER_MR_ACCESS_MW_BIND 0x10UL 1433 #define CMDQ_REGISTER_MR_ACCESS_ZERO_BASED 0x20UL 1434 __le16 log2_pbl_pg_size; 1435 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_MASK 0x1fUL 1436 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_SFT 0 1437 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_4K 0xcUL 1438 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_8K 0xdUL 1439 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_64K 0x10UL 1440 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_256K 0x12UL 1441 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1M 0x14UL 1442 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_2M 0x15UL 1443 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_4M 0x16UL 1444 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1G 0x1eUL 1445 #define CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_LAST CMDQ_REGISTER_MR_LOG2_PBL_PG_SIZE_PG_1G 1446 #define CMDQ_REGISTER_MR_UNUSED11_MASK 0xffe0UL 1447 #define CMDQ_REGISTER_MR_UNUSED11_SFT 5 1448 __le32 key; 1449 __le64 pbl; 1450 __le64 va; 1451 __le64 mr_size; 1452 __le16 steering_tag; 1453 u8 reserved48[6]; 1454 }; 1455 1456 /* creq_register_mr_resp (size:128b/16B) */ 1457 struct creq_register_mr_resp { 1458 u8 type; 1459 #define CREQ_REGISTER_MR_RESP_TYPE_MASK 0x3fUL 1460 #define CREQ_REGISTER_MR_RESP_TYPE_SFT 0 1461 #define CREQ_REGISTER_MR_RESP_TYPE_QP_EVENT 0x38UL 1462 #define CREQ_REGISTER_MR_RESP_TYPE_LAST CREQ_REGISTER_MR_RESP_TYPE_QP_EVENT 1463 u8 status; 1464 __le16 cookie; 1465 __le32 xid; 1466 u8 v; 1467 #define CREQ_REGISTER_MR_RESP_V 0x1UL 1468 u8 event; 1469 #define CREQ_REGISTER_MR_RESP_EVENT_REGISTER_MR 0xfUL 1470 #define CREQ_REGISTER_MR_RESP_EVENT_LAST CREQ_REGISTER_MR_RESP_EVENT_REGISTER_MR 1471 u8 reserved48[6]; 1472 }; 1473 1474 /* cmdq_deregister_mr (size:192b/24B) */ 1475 struct cmdq_deregister_mr { 1476 u8 opcode; 1477 #define CMDQ_DEREGISTER_MR_OPCODE_DEREGISTER_MR 0x10UL 1478 #define CMDQ_DEREGISTER_MR_OPCODE_LAST CMDQ_DEREGISTER_MR_OPCODE_DEREGISTER_MR 1479 u8 cmd_size; 1480 __le16 flags; 1481 __le16 cookie; 1482 u8 resp_size; 1483 u8 reserved8; 1484 __le64 resp_addr; 1485 __le32 lkey; 1486 __le32 unused_0; 1487 }; 1488 1489 /* creq_deregister_mr_resp (size:128b/16B) */ 1490 struct creq_deregister_mr_resp { 1491 u8 type; 1492 #define CREQ_DEREGISTER_MR_RESP_TYPE_MASK 0x3fUL 1493 #define CREQ_DEREGISTER_MR_RESP_TYPE_SFT 0 1494 #define CREQ_DEREGISTER_MR_RESP_TYPE_QP_EVENT 0x38UL 1495 #define CREQ_DEREGISTER_MR_RESP_TYPE_LAST CREQ_DEREGISTER_MR_RESP_TYPE_QP_EVENT 1496 u8 status; 1497 __le16 cookie; 1498 __le32 xid; 1499 u8 v; 1500 #define CREQ_DEREGISTER_MR_RESP_V 0x1UL 1501 u8 event; 1502 #define CREQ_DEREGISTER_MR_RESP_EVENT_DEREGISTER_MR 0x10UL 1503 #define CREQ_DEREGISTER_MR_RESP_EVENT_LAST CREQ_DEREGISTER_MR_RESP_EVENT_DEREGISTER_MR 1504 __le16 reserved16; 1505 __le32 bound_windows; 1506 }; 1507 1508 /* cmdq_add_gid (size:384b/48B) */ 1509 struct cmdq_add_gid { 1510 u8 opcode; 1511 #define CMDQ_ADD_GID_OPCODE_ADD_GID 0x11UL 1512 #define CMDQ_ADD_GID_OPCODE_LAST CMDQ_ADD_GID_OPCODE_ADD_GID 1513 u8 cmd_size; 1514 __le16 flags; 1515 __le16 cookie; 1516 u8 resp_size; 1517 u8 reserved8; 1518 __le64 resp_addr; 1519 __be32 gid[4]; 1520 __be16 src_mac[3]; 1521 __le16 vlan; 1522 #define CMDQ_ADD_GID_VLAN_VLAN_EN_TPID_VLAN_ID_MASK 0xffffUL 1523 #define CMDQ_ADD_GID_VLAN_VLAN_EN_TPID_VLAN_ID_SFT 0 1524 #define CMDQ_ADD_GID_VLAN_VLAN_ID_MASK 0xfffUL 1525 #define CMDQ_ADD_GID_VLAN_VLAN_ID_SFT 0 1526 #define CMDQ_ADD_GID_VLAN_TPID_MASK 0x7000UL 1527 #define CMDQ_ADD_GID_VLAN_TPID_SFT 12 1528 #define CMDQ_ADD_GID_VLAN_TPID_TPID_88A8 (0x0UL << 12) 1529 #define CMDQ_ADD_GID_VLAN_TPID_TPID_8100 (0x1UL << 12) 1530 #define CMDQ_ADD_GID_VLAN_TPID_TPID_9100 (0x2UL << 12) 1531 #define CMDQ_ADD_GID_VLAN_TPID_TPID_9200 (0x3UL << 12) 1532 #define CMDQ_ADD_GID_VLAN_TPID_TPID_9300 (0x4UL << 12) 1533 #define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG1 (0x5UL << 12) 1534 #define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG2 (0x6UL << 12) 1535 #define CMDQ_ADD_GID_VLAN_TPID_TPID_CFG3 (0x7UL << 12) 1536 #define CMDQ_ADD_GID_VLAN_TPID_LAST CMDQ_ADD_GID_VLAN_TPID_TPID_CFG3 1537 #define CMDQ_ADD_GID_VLAN_VLAN_EN 0x8000UL 1538 __le16 ipid; 1539 __le16 stats_ctx; 1540 #define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID_STATS_CTX_ID_MASK 0xffffUL 1541 #define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID_STATS_CTX_ID_SFT 0 1542 #define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_ID_MASK 0x7fffUL 1543 #define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_ID_SFT 0 1544 #define CMDQ_ADD_GID_STATS_CTX_STATS_CTX_VALID 0x8000UL 1545 __le32 unused_0; 1546 }; 1547 1548 /* creq_add_gid_resp (size:128b/16B) */ 1549 struct creq_add_gid_resp { 1550 u8 type; 1551 #define CREQ_ADD_GID_RESP_TYPE_MASK 0x3fUL 1552 #define CREQ_ADD_GID_RESP_TYPE_SFT 0 1553 #define CREQ_ADD_GID_RESP_TYPE_QP_EVENT 0x38UL 1554 #define CREQ_ADD_GID_RESP_TYPE_LAST CREQ_ADD_GID_RESP_TYPE_QP_EVENT 1555 u8 status; 1556 __le16 cookie; 1557 __le32 xid; 1558 u8 v; 1559 #define CREQ_ADD_GID_RESP_V 0x1UL 1560 u8 event; 1561 #define CREQ_ADD_GID_RESP_EVENT_ADD_GID 0x11UL 1562 #define CREQ_ADD_GID_RESP_EVENT_LAST CREQ_ADD_GID_RESP_EVENT_ADD_GID 1563 u8 reserved48[6]; 1564 }; 1565 1566 /* cmdq_delete_gid (size:192b/24B) */ 1567 struct cmdq_delete_gid { 1568 u8 opcode; 1569 #define CMDQ_DELETE_GID_OPCODE_DELETE_GID 0x12UL 1570 #define CMDQ_DELETE_GID_OPCODE_LAST CMDQ_DELETE_GID_OPCODE_DELETE_GID 1571 u8 cmd_size; 1572 __le16 flags; 1573 __le16 cookie; 1574 u8 resp_size; 1575 u8 reserved8; 1576 __le64 resp_addr; 1577 __le16 gid_index; 1578 u8 unused_0[6]; 1579 }; 1580 1581 /* creq_delete_gid_resp (size:128b/16B) */ 1582 struct creq_delete_gid_resp { 1583 u8 type; 1584 #define CREQ_DELETE_GID_RESP_TYPE_MASK 0x3fUL 1585 #define CREQ_DELETE_GID_RESP_TYPE_SFT 0 1586 #define CREQ_DELETE_GID_RESP_TYPE_QP_EVENT 0x38UL 1587 #define CREQ_DELETE_GID_RESP_TYPE_LAST CREQ_DELETE_GID_RESP_TYPE_QP_EVENT 1588 u8 status; 1589 __le16 cookie; 1590 __le32 xid; 1591 u8 v; 1592 #define CREQ_DELETE_GID_RESP_V 0x1UL 1593 u8 event; 1594 #define CREQ_DELETE_GID_RESP_EVENT_DELETE_GID 0x12UL 1595 #define CREQ_DELETE_GID_RESP_EVENT_LAST CREQ_DELETE_GID_RESP_EVENT_DELETE_GID 1596 u8 reserved48[6]; 1597 }; 1598 1599 /* cmdq_modify_gid (size:384b/48B) */ 1600 struct cmdq_modify_gid { 1601 u8 opcode; 1602 #define CMDQ_MODIFY_GID_OPCODE_MODIFY_GID 0x17UL 1603 #define CMDQ_MODIFY_GID_OPCODE_LAST CMDQ_MODIFY_GID_OPCODE_MODIFY_GID 1604 u8 cmd_size; 1605 __le16 flags; 1606 __le16 cookie; 1607 u8 resp_size; 1608 u8 reserved8; 1609 __le64 resp_addr; 1610 __be32 gid[4]; 1611 __be16 src_mac[3]; 1612 __le16 vlan; 1613 #define CMDQ_MODIFY_GID_VLAN_VLAN_ID_MASK 0xfffUL 1614 #define CMDQ_MODIFY_GID_VLAN_VLAN_ID_SFT 0 1615 #define CMDQ_MODIFY_GID_VLAN_TPID_MASK 0x7000UL 1616 #define CMDQ_MODIFY_GID_VLAN_TPID_SFT 12 1617 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_88A8 (0x0UL << 12) 1618 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_8100 (0x1UL << 12) 1619 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9100 (0x2UL << 12) 1620 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9200 (0x3UL << 12) 1621 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_9300 (0x4UL << 12) 1622 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG1 (0x5UL << 12) 1623 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG2 (0x6UL << 12) 1624 #define CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG3 (0x7UL << 12) 1625 #define CMDQ_MODIFY_GID_VLAN_TPID_LAST CMDQ_MODIFY_GID_VLAN_TPID_TPID_CFG3 1626 #define CMDQ_MODIFY_GID_VLAN_VLAN_EN 0x8000UL 1627 __le16 ipid; 1628 __le16 gid_index; 1629 __le16 stats_ctx; 1630 #define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_ID_MASK 0x7fffUL 1631 #define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_ID_SFT 0 1632 #define CMDQ_MODIFY_GID_STATS_CTX_STATS_CTX_VALID 0x8000UL 1633 __le16 unused_0; 1634 }; 1635 1636 /* creq_modify_gid_resp (size:128b/16B) */ 1637 struct creq_modify_gid_resp { 1638 u8 type; 1639 #define CREQ_MODIFY_GID_RESP_TYPE_MASK 0x3fUL 1640 #define CREQ_MODIFY_GID_RESP_TYPE_SFT 0 1641 #define CREQ_MODIFY_GID_RESP_TYPE_QP_EVENT 0x38UL 1642 #define CREQ_MODIFY_GID_RESP_TYPE_LAST CREQ_MODIFY_GID_RESP_TYPE_QP_EVENT 1643 u8 status; 1644 __le16 cookie; 1645 __le32 xid; 1646 u8 v; 1647 #define CREQ_MODIFY_GID_RESP_V 0x1UL 1648 u8 event; 1649 #define CREQ_MODIFY_GID_RESP_EVENT_ADD_GID 0x11UL 1650 #define CREQ_MODIFY_GID_RESP_EVENT_LAST CREQ_MODIFY_GID_RESP_EVENT_ADD_GID 1651 u8 reserved48[6]; 1652 }; 1653 1654 /* cmdq_query_gid (size:192b/24B) */ 1655 struct cmdq_query_gid { 1656 u8 opcode; 1657 #define CMDQ_QUERY_GID_OPCODE_QUERY_GID 0x18UL 1658 #define CMDQ_QUERY_GID_OPCODE_LAST CMDQ_QUERY_GID_OPCODE_QUERY_GID 1659 u8 cmd_size; 1660 __le16 flags; 1661 __le16 cookie; 1662 u8 resp_size; 1663 u8 reserved8; 1664 __le64 resp_addr; 1665 __le16 gid_index; 1666 u8 unused16[6]; 1667 }; 1668 1669 /* creq_query_gid_resp (size:128b/16B) */ 1670 struct creq_query_gid_resp { 1671 u8 type; 1672 #define CREQ_QUERY_GID_RESP_TYPE_MASK 0x3fUL 1673 #define CREQ_QUERY_GID_RESP_TYPE_SFT 0 1674 #define CREQ_QUERY_GID_RESP_TYPE_QP_EVENT 0x38UL 1675 #define CREQ_QUERY_GID_RESP_TYPE_LAST CREQ_QUERY_GID_RESP_TYPE_QP_EVENT 1676 u8 status; 1677 __le16 cookie; 1678 __le32 size; 1679 u8 v; 1680 #define CREQ_QUERY_GID_RESP_V 0x1UL 1681 u8 event; 1682 #define CREQ_QUERY_GID_RESP_EVENT_QUERY_GID 0x18UL 1683 #define CREQ_QUERY_GID_RESP_EVENT_LAST CREQ_QUERY_GID_RESP_EVENT_QUERY_GID 1684 u8 reserved48[6]; 1685 }; 1686 1687 /* creq_query_gid_resp_sb (size:320b/40B) */ 1688 struct creq_query_gid_resp_sb { 1689 u8 opcode; 1690 #define CREQ_QUERY_GID_RESP_SB_OPCODE_QUERY_GID 0x18UL 1691 #define CREQ_QUERY_GID_RESP_SB_OPCODE_LAST CREQ_QUERY_GID_RESP_SB_OPCODE_QUERY_GID 1692 u8 status; 1693 __le16 cookie; 1694 __le16 flags; 1695 u8 resp_size; 1696 u8 reserved8; 1697 __le32 gid[4]; 1698 __le16 src_mac[3]; 1699 __le16 vlan; 1700 #define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN_TPID_VLAN_ID_MASK 0xffffUL 1701 #define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN_TPID_VLAN_ID_SFT 0 1702 #define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_ID_MASK 0xfffUL 1703 #define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_ID_SFT 0 1704 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_MASK 0x7000UL 1705 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_SFT 12 1706 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_88A8 (0x0UL << 12) 1707 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_8100 (0x1UL << 12) 1708 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9100 (0x2UL << 12) 1709 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9200 (0x3UL << 12) 1710 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_9300 (0x4UL << 12) 1711 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG1 (0x5UL << 12) 1712 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG2 (0x6UL << 12) 1713 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG3 (0x7UL << 12) 1714 #define CREQ_QUERY_GID_RESP_SB_VLAN_TPID_LAST CREQ_QUERY_GID_RESP_SB_VLAN_TPID_TPID_CFG3 1715 #define CREQ_QUERY_GID_RESP_SB_VLAN_VLAN_EN 0x8000UL 1716 __le16 ipid; 1717 __le16 gid_index; 1718 __le32 unused_0; 1719 }; 1720 1721 /* cmdq_create_qp1 (size:640b/80B) */ 1722 struct cmdq_create_qp1 { 1723 u8 opcode; 1724 #define CMDQ_CREATE_QP1_OPCODE_CREATE_QP1 0x13UL 1725 #define CMDQ_CREATE_QP1_OPCODE_LAST CMDQ_CREATE_QP1_OPCODE_CREATE_QP1 1726 u8 cmd_size; 1727 __le16 flags; 1728 __le16 cookie; 1729 u8 resp_size; 1730 u8 reserved8; 1731 __le64 resp_addr; 1732 __le64 qp_handle; 1733 __le32 qp_flags; 1734 #define CMDQ_CREATE_QP1_QP_FLAGS_SRQ_USED 0x1UL 1735 #define CMDQ_CREATE_QP1_QP_FLAGS_FORCE_COMPLETION 0x2UL 1736 #define CMDQ_CREATE_QP1_QP_FLAGS_RESERVED_LKEY_ENABLE 0x4UL 1737 #define CMDQ_CREATE_QP1_QP_FLAGS_LAST CMDQ_CREATE_QP1_QP_FLAGS_RESERVED_LKEY_ENABLE 1738 u8 type; 1739 #define CMDQ_CREATE_QP1_TYPE_GSI 0x1UL 1740 #define CMDQ_CREATE_QP1_TYPE_LAST CMDQ_CREATE_QP1_TYPE_GSI 1741 u8 sq_pg_size_sq_lvl; 1742 #define CMDQ_CREATE_QP1_SQ_LVL_MASK 0xfUL 1743 #define CMDQ_CREATE_QP1_SQ_LVL_SFT 0 1744 #define CMDQ_CREATE_QP1_SQ_LVL_LVL_0 0x0UL 1745 #define CMDQ_CREATE_QP1_SQ_LVL_LVL_1 0x1UL 1746 #define CMDQ_CREATE_QP1_SQ_LVL_LVL_2 0x2UL 1747 #define CMDQ_CREATE_QP1_SQ_LVL_LAST CMDQ_CREATE_QP1_SQ_LVL_LVL_2 1748 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_MASK 0xf0UL 1749 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_SFT 4 1750 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_4K (0x0UL << 4) 1751 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_8K (0x1UL << 4) 1752 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_64K (0x2UL << 4) 1753 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_2M (0x3UL << 4) 1754 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_8M (0x4UL << 4) 1755 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_1G (0x5UL << 4) 1756 #define CMDQ_CREATE_QP1_SQ_PG_SIZE_LAST CMDQ_CREATE_QP1_SQ_PG_SIZE_PG_1G 1757 u8 rq_pg_size_rq_lvl; 1758 #define CMDQ_CREATE_QP1_RQ_LVL_MASK 0xfUL 1759 #define CMDQ_CREATE_QP1_RQ_LVL_SFT 0 1760 #define CMDQ_CREATE_QP1_RQ_LVL_LVL_0 0x0UL 1761 #define CMDQ_CREATE_QP1_RQ_LVL_LVL_1 0x1UL 1762 #define CMDQ_CREATE_QP1_RQ_LVL_LVL_2 0x2UL 1763 #define CMDQ_CREATE_QP1_RQ_LVL_LAST CMDQ_CREATE_QP1_RQ_LVL_LVL_2 1764 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_MASK 0xf0UL 1765 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_SFT 4 1766 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_4K (0x0UL << 4) 1767 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_8K (0x1UL << 4) 1768 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_64K (0x2UL << 4) 1769 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_2M (0x3UL << 4) 1770 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_8M (0x4UL << 4) 1771 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_1G (0x5UL << 4) 1772 #define CMDQ_CREATE_QP1_RQ_PG_SIZE_LAST CMDQ_CREATE_QP1_RQ_PG_SIZE_PG_1G 1773 u8 unused_0; 1774 __le32 dpi; 1775 __le32 sq_size; 1776 __le32 rq_size; 1777 __le16 sq_fwo_sq_sge; 1778 #define CMDQ_CREATE_QP1_SQ_SGE_MASK 0xfUL 1779 #define CMDQ_CREATE_QP1_SQ_SGE_SFT 0 1780 #define CMDQ_CREATE_QP1_SQ_FWO_MASK 0xfff0UL 1781 #define CMDQ_CREATE_QP1_SQ_FWO_SFT 4 1782 __le16 rq_fwo_rq_sge; 1783 #define CMDQ_CREATE_QP1_RQ_SGE_MASK 0xfUL 1784 #define CMDQ_CREATE_QP1_RQ_SGE_SFT 0 1785 #define CMDQ_CREATE_QP1_RQ_FWO_MASK 0xfff0UL 1786 #define CMDQ_CREATE_QP1_RQ_FWO_SFT 4 1787 __le32 scq_cid; 1788 __le32 rcq_cid; 1789 __le32 srq_cid; 1790 __le32 pd_id; 1791 __le64 sq_pbl; 1792 __le64 rq_pbl; 1793 }; 1794 1795 /* creq_create_qp1_resp (size:128b/16B) */ 1796 struct creq_create_qp1_resp { 1797 u8 type; 1798 #define CREQ_CREATE_QP1_RESP_TYPE_MASK 0x3fUL 1799 #define CREQ_CREATE_QP1_RESP_TYPE_SFT 0 1800 #define CREQ_CREATE_QP1_RESP_TYPE_QP_EVENT 0x38UL 1801 #define CREQ_CREATE_QP1_RESP_TYPE_LAST CREQ_CREATE_QP1_RESP_TYPE_QP_EVENT 1802 u8 status; 1803 __le16 cookie; 1804 __le32 xid; 1805 u8 v; 1806 #define CREQ_CREATE_QP1_RESP_V 0x1UL 1807 u8 event; 1808 #define CREQ_CREATE_QP1_RESP_EVENT_CREATE_QP1 0x13UL 1809 #define CREQ_CREATE_QP1_RESP_EVENT_LAST CREQ_CREATE_QP1_RESP_EVENT_CREATE_QP1 1810 u8 reserved48[6]; 1811 }; 1812 1813 /* cmdq_destroy_qp1 (size:192b/24B) */ 1814 struct cmdq_destroy_qp1 { 1815 u8 opcode; 1816 #define CMDQ_DESTROY_QP1_OPCODE_DESTROY_QP1 0x14UL 1817 #define CMDQ_DESTROY_QP1_OPCODE_LAST CMDQ_DESTROY_QP1_OPCODE_DESTROY_QP1 1818 u8 cmd_size; 1819 __le16 flags; 1820 __le16 cookie; 1821 u8 resp_size; 1822 u8 reserved8; 1823 __le64 resp_addr; 1824 __le32 qp1_cid; 1825 __le32 unused_0; 1826 }; 1827 1828 /* creq_destroy_qp1_resp (size:128b/16B) */ 1829 struct creq_destroy_qp1_resp { 1830 u8 type; 1831 #define CREQ_DESTROY_QP1_RESP_TYPE_MASK 0x3fUL 1832 #define CREQ_DESTROY_QP1_RESP_TYPE_SFT 0 1833 #define CREQ_DESTROY_QP1_RESP_TYPE_QP_EVENT 0x38UL 1834 #define CREQ_DESTROY_QP1_RESP_TYPE_LAST CREQ_DESTROY_QP1_RESP_TYPE_QP_EVENT 1835 u8 status; 1836 __le16 cookie; 1837 __le32 xid; 1838 u8 v; 1839 #define CREQ_DESTROY_QP1_RESP_V 0x1UL 1840 u8 event; 1841 #define CREQ_DESTROY_QP1_RESP_EVENT_DESTROY_QP1 0x14UL 1842 #define CREQ_DESTROY_QP1_RESP_EVENT_LAST CREQ_DESTROY_QP1_RESP_EVENT_DESTROY_QP1 1843 u8 reserved48[6]; 1844 }; 1845 1846 /* cmdq_create_ah (size:512b/64B) */ 1847 struct cmdq_create_ah { 1848 u8 opcode; 1849 #define CMDQ_CREATE_AH_OPCODE_CREATE_AH 0x15UL 1850 #define CMDQ_CREATE_AH_OPCODE_LAST CMDQ_CREATE_AH_OPCODE_CREATE_AH 1851 u8 cmd_size; 1852 __le16 flags; 1853 __le16 cookie; 1854 u8 resp_size; 1855 u8 reserved8; 1856 __le64 resp_addr; 1857 __le64 ah_handle; 1858 __le32 dgid[4]; 1859 u8 type; 1860 #define CMDQ_CREATE_AH_TYPE_V1 0x0UL 1861 #define CMDQ_CREATE_AH_TYPE_V2IPV4 0x2UL 1862 #define CMDQ_CREATE_AH_TYPE_V2IPV6 0x3UL 1863 #define CMDQ_CREATE_AH_TYPE_LAST CMDQ_CREATE_AH_TYPE_V2IPV6 1864 u8 hop_limit; 1865 __le16 sgid_index; 1866 __le32 dest_vlan_id_flow_label; 1867 #define CMDQ_CREATE_AH_FLOW_LABEL_MASK 0xfffffUL 1868 #define CMDQ_CREATE_AH_FLOW_LABEL_SFT 0 1869 #define CMDQ_CREATE_AH_DEST_VLAN_ID_MASK 0xfff00000UL 1870 #define CMDQ_CREATE_AH_DEST_VLAN_ID_SFT 20 1871 __le32 pd_id; 1872 __le32 unused_0; 1873 __le16 dest_mac[3]; 1874 u8 traffic_class; 1875 u8 enable_cc; 1876 #define CMDQ_CREATE_AH_ENABLE_CC 0x1UL 1877 }; 1878 1879 /* creq_create_ah_resp (size:128b/16B) */ 1880 struct creq_create_ah_resp { 1881 u8 type; 1882 #define CREQ_CREATE_AH_RESP_TYPE_MASK 0x3fUL 1883 #define CREQ_CREATE_AH_RESP_TYPE_SFT 0 1884 #define CREQ_CREATE_AH_RESP_TYPE_QP_EVENT 0x38UL 1885 #define CREQ_CREATE_AH_RESP_TYPE_LAST CREQ_CREATE_AH_RESP_TYPE_QP_EVENT 1886 u8 status; 1887 __le16 cookie; 1888 __le32 xid; 1889 u8 v; 1890 #define CREQ_CREATE_AH_RESP_V 0x1UL 1891 u8 event; 1892 #define CREQ_CREATE_AH_RESP_EVENT_CREATE_AH 0x15UL 1893 #define CREQ_CREATE_AH_RESP_EVENT_LAST CREQ_CREATE_AH_RESP_EVENT_CREATE_AH 1894 u8 reserved48[6]; 1895 }; 1896 1897 /* cmdq_destroy_ah (size:192b/24B) */ 1898 struct cmdq_destroy_ah { 1899 u8 opcode; 1900 #define CMDQ_DESTROY_AH_OPCODE_DESTROY_AH 0x16UL 1901 #define CMDQ_DESTROY_AH_OPCODE_LAST CMDQ_DESTROY_AH_OPCODE_DESTROY_AH 1902 u8 cmd_size; 1903 __le16 flags; 1904 __le16 cookie; 1905 u8 resp_size; 1906 u8 reserved8; 1907 __le64 resp_addr; 1908 __le32 ah_cid; 1909 __le32 unused_0; 1910 }; 1911 1912 /* creq_destroy_ah_resp (size:128b/16B) */ 1913 struct creq_destroy_ah_resp { 1914 u8 type; 1915 #define CREQ_DESTROY_AH_RESP_TYPE_MASK 0x3fUL 1916 #define CREQ_DESTROY_AH_RESP_TYPE_SFT 0 1917 #define CREQ_DESTROY_AH_RESP_TYPE_QP_EVENT 0x38UL 1918 #define CREQ_DESTROY_AH_RESP_TYPE_LAST CREQ_DESTROY_AH_RESP_TYPE_QP_EVENT 1919 u8 status; 1920 __le16 cookie; 1921 __le32 xid; 1922 u8 v; 1923 #define CREQ_DESTROY_AH_RESP_V 0x1UL 1924 u8 event; 1925 #define CREQ_DESTROY_AH_RESP_EVENT_DESTROY_AH 0x16UL 1926 #define CREQ_DESTROY_AH_RESP_EVENT_LAST CREQ_DESTROY_AH_RESP_EVENT_DESTROY_AH 1927 u8 reserved48[6]; 1928 }; 1929 1930 /* cmdq_query_roce_stats (size:192b/24B) */ 1931 struct cmdq_query_roce_stats { 1932 u8 opcode; 1933 #define CMDQ_QUERY_ROCE_STATS_OPCODE_QUERY_ROCE_STATS 0x8eUL 1934 #define CMDQ_QUERY_ROCE_STATS_OPCODE_LAST CMDQ_QUERY_ROCE_STATS_OPCODE_QUERY_ROCE_STATS 1935 u8 cmd_size; 1936 __le16 flags; 1937 #define CMDQ_QUERY_ROCE_STATS_FLAGS_COLLECTION_ID 0x1UL 1938 #define CMDQ_QUERY_ROCE_STATS_FLAGS_FUNCTION_ID 0x2UL 1939 __le16 cookie; 1940 u8 resp_size; 1941 u8 collection_id; 1942 __le64 resp_addr; 1943 __le32 function_id; 1944 #define CMDQ_QUERY_ROCE_STATS_PF_NUM_MASK 0xffUL 1945 #define CMDQ_QUERY_ROCE_STATS_PF_NUM_SFT 0 1946 #define CMDQ_QUERY_ROCE_STATS_VF_NUM_MASK 0xffff00UL 1947 #define CMDQ_QUERY_ROCE_STATS_VF_NUM_SFT 8 1948 #define CMDQ_QUERY_ROCE_STATS_VF_VALID 0x1000000UL 1949 __le32 reserved32; 1950 }; 1951 1952 /* creq_query_roce_stats_resp (size:128b/16B) */ 1953 struct creq_query_roce_stats_resp { 1954 u8 type; 1955 #define CREQ_QUERY_ROCE_STATS_RESP_TYPE_MASK 0x3fUL 1956 #define CREQ_QUERY_ROCE_STATS_RESP_TYPE_SFT 0 1957 #define CREQ_QUERY_ROCE_STATS_RESP_TYPE_QP_EVENT 0x38UL 1958 #define CREQ_QUERY_ROCE_STATS_RESP_TYPE_LAST CREQ_QUERY_ROCE_STATS_RESP_TYPE_QP_EVENT 1959 u8 status; 1960 __le16 cookie; 1961 __le32 size; 1962 u8 v; 1963 #define CREQ_QUERY_ROCE_STATS_RESP_V 0x1UL 1964 u8 event; 1965 #define CREQ_QUERY_ROCE_STATS_RESP_EVENT_QUERY_ROCE_STATS 0x8eUL 1966 #define CREQ_QUERY_ROCE_STATS_RESP_EVENT_LAST \ 1967 CREQ_QUERY_ROCE_STATS_RESP_EVENT_QUERY_ROCE_STATS 1968 u8 reserved48[6]; 1969 }; 1970 1971 /* creq_query_roce_stats_resp_sb (size:2944b/368B) */ 1972 struct creq_query_roce_stats_resp_sb { 1973 u8 opcode; 1974 #define CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_QUERY_ROCE_STATS 0x8eUL 1975 #define CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_LAST \ 1976 CREQ_QUERY_ROCE_STATS_RESP_SB_OPCODE_QUERY_ROCE_STATS 1977 u8 status; 1978 __le16 cookie; 1979 __le16 flags; 1980 u8 resp_size; 1981 u8 rsvd; 1982 __le32 num_counters; 1983 __le32 rsvd1; 1984 __le64 to_retransmits; 1985 __le64 seq_err_naks_rcvd; 1986 __le64 max_retry_exceeded; 1987 __le64 rnr_naks_rcvd; 1988 __le64 missing_resp; 1989 __le64 unrecoverable_err; 1990 __le64 bad_resp_err; 1991 __le64 local_qp_op_err; 1992 __le64 local_protection_err; 1993 __le64 mem_mgmt_op_err; 1994 __le64 remote_invalid_req_err; 1995 __le64 remote_access_err; 1996 __le64 remote_op_err; 1997 __le64 dup_req; 1998 __le64 res_exceed_max; 1999 __le64 res_length_mismatch; 2000 __le64 res_exceeds_wqe; 2001 __le64 res_opcode_err; 2002 __le64 res_rx_invalid_rkey; 2003 __le64 res_rx_domain_err; 2004 __le64 res_rx_no_perm; 2005 __le64 res_rx_range_err; 2006 __le64 res_tx_invalid_rkey; 2007 __le64 res_tx_domain_err; 2008 __le64 res_tx_no_perm; 2009 __le64 res_tx_range_err; 2010 __le64 res_irrq_oflow; 2011 __le64 res_unsup_opcode; 2012 __le64 res_unaligned_atomic; 2013 __le64 res_rem_inv_err; 2014 __le64 res_mem_error; 2015 __le64 res_srq_err; 2016 __le64 res_cmp_err; 2017 __le64 res_invalid_dup_rkey; 2018 __le64 res_wqe_format_err; 2019 __le64 res_cq_load_err; 2020 __le64 res_srq_load_err; 2021 __le64 res_tx_pci_err; 2022 __le64 res_rx_pci_err; 2023 __le64 res_oos_drop_count; 2024 __le64 active_qp_count_p0; 2025 __le64 active_qp_count_p1; 2026 __le64 active_qp_count_p2; 2027 __le64 active_qp_count_p3; 2028 }; 2029 2030 /* cmdq_query_roce_stats_ext (size:192b/24B) */ 2031 struct cmdq_query_roce_stats_ext { 2032 u8 opcode; 2033 #define CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_QUERY_ROCE_STATS 0x92UL 2034 #define CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_LAST \ 2035 CMDQ_QUERY_ROCE_STATS_EXT_OPCODE_QUERY_ROCE_STATS 2036 u8 cmd_size; 2037 __le16 flags; 2038 #define CMDQ_QUERY_ROCE_STATS_EXT_FLAGS_COLLECTION_ID 0x1UL 2039 #define CMDQ_QUERY_ROCE_STATS_EXT_FLAGS_FUNCTION_ID 0x2UL 2040 __le16 cookie; 2041 u8 resp_size; 2042 u8 collection_id; 2043 __le64 resp_addr; 2044 __le32 function_id; 2045 #define CMDQ_QUERY_ROCE_STATS_EXT_PF_NUM_MASK 0xffUL 2046 #define CMDQ_QUERY_ROCE_STATS_EXT_PF_NUM_SFT 0 2047 #define CMDQ_QUERY_ROCE_STATS_EXT_VF_NUM_MASK 0xffff00UL 2048 #define CMDQ_QUERY_ROCE_STATS_EXT_VF_NUM_SFT 8 2049 #define CMDQ_QUERY_ROCE_STATS_EXT_VF_VALID 0x1000000UL 2050 __le32 reserved32; 2051 }; 2052 2053 /* creq_query_roce_stats_ext_resp (size:128b/16B) */ 2054 struct creq_query_roce_stats_ext_resp { 2055 u8 type; 2056 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_MASK 0x3fUL 2057 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_SFT 0 2058 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_QP_EVENT 0x38UL 2059 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_LAST \ 2060 CREQ_QUERY_ROCE_STATS_EXT_RESP_TYPE_QP_EVENT 2061 u8 status; 2062 __le16 cookie; 2063 __le32 size; 2064 u8 v; 2065 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_V 0x1UL 2066 u8 event; 2067 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_QUERY_ROCE_STATS_EXT 0x92UL 2068 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_LAST \ 2069 CREQ_QUERY_ROCE_STATS_EXT_RESP_EVENT_QUERY_ROCE_STATS_EXT 2070 u8 reserved48[6]; 2071 }; 2072 2073 /* creq_query_roce_stats_ext_resp_sb (size:1856b/232B) */ 2074 struct creq_query_roce_stats_ext_resp_sb { 2075 u8 opcode; 2076 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_QUERY_ROCE_STATS_EXT 0x92UL 2077 #define CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_LAST \ 2078 CREQ_QUERY_ROCE_STATS_EXT_RESP_SB_OPCODE_QUERY_ROCE_STATS_EXT 2079 u8 status; 2080 __le16 cookie; 2081 __le16 flags; 2082 u8 resp_size; 2083 u8 rsvd; 2084 __le64 tx_atomic_req_pkts; 2085 __le64 tx_read_req_pkts; 2086 __le64 tx_read_res_pkts; 2087 __le64 tx_write_req_pkts; 2088 __le64 tx_send_req_pkts; 2089 __le64 tx_roce_pkts; 2090 __le64 tx_roce_bytes; 2091 __le64 rx_atomic_req_pkts; 2092 __le64 rx_read_req_pkts; 2093 __le64 rx_read_res_pkts; 2094 __le64 rx_write_req_pkts; 2095 __le64 rx_send_req_pkts; 2096 __le64 rx_roce_pkts; 2097 __le64 rx_roce_bytes; 2098 __le64 rx_roce_good_pkts; 2099 __le64 rx_roce_good_bytes; 2100 __le64 rx_out_of_buffer_pkts; 2101 __le64 rx_out_of_sequence_pkts; 2102 __le64 tx_cnp_pkts; 2103 __le64 rx_cnp_pkts; 2104 __le64 rx_ecn_marked_pkts; 2105 __le64 tx_cnp_bytes; 2106 __le64 rx_cnp_bytes; 2107 __le64 seq_err_naks_rcvd; 2108 __le64 rnr_naks_rcvd; 2109 __le64 missing_resp; 2110 __le64 to_retransmit; 2111 __le64 dup_req; 2112 }; 2113 2114 /* cmdq_roce_mirror_cfg (size:192b/24B) */ 2115 struct cmdq_roce_mirror_cfg { 2116 u8 opcode; 2117 #define CMDQ_ROCE_MIRROR_CFG_OPCODE_ROCE_MIRROR_CFG 0x99UL 2118 #define CMDQ_ROCE_MIRROR_CFG_OPCODE_LAST \ 2119 CMDQ_ROCE_MIRROR_CFG_OPCODE_ROCE_MIRROR_CFG 2120 u8 cmd_size; 2121 __le16 flags; 2122 __le16 cookie; 2123 u8 resp_size; 2124 u8 reserved8; 2125 __le64 resp_addr; 2126 u8 mirror_flags; 2127 #define CMDQ_ROCE_MIRROR_CFG_MIRROR_ENABLE 0x1UL 2128 u8 rsvd[7]; 2129 }; 2130 2131 /* creq_roce_mirror_cfg_resp (size:128b/16B) */ 2132 struct creq_roce_mirror_cfg_resp { 2133 u8 type; 2134 #define CREQ_ROCE_MIRROR_CFG_RESP_TYPE_MASK 0x3fUL 2135 #define CREQ_ROCE_MIRROR_CFG_RESP_TYPE_SFT 0 2136 #define CREQ_ROCE_MIRROR_CFG_RESP_TYPE_QP_EVENT 0x38UL 2137 #define CREQ_ROCE_MIRROR_CFG_RESP_TYPE_LAST \ 2138 CREQ_ROCE_MIRROR_CFG_RESP_TYPE_QP_EVENT 2139 u8 status; 2140 __le16 cookie; 2141 __le32 reserved32; 2142 u8 v; 2143 #define CREQ_ROCE_MIRROR_CFG_RESP_V 0x1UL 2144 u8 event; 2145 #define CREQ_ROCE_MIRROR_CFG_RESP_EVENT_ROCE_MIRROR_CFG 0x99UL 2146 #define CREQ_ROCE_MIRROR_CFG_RESP_EVENT_LAST \ 2147 CREQ_ROCE_MIRROR_CFG_RESP_EVENT_ROCE_MIRROR_CFG 2148 u8 reserved48[6]; 2149 }; 2150 2151 /* cmdq_query_func (size:128b/16B) */ 2152 struct cmdq_query_func { 2153 u8 opcode; 2154 #define CMDQ_QUERY_FUNC_OPCODE_QUERY_FUNC 0x83UL 2155 #define CMDQ_QUERY_FUNC_OPCODE_LAST CMDQ_QUERY_FUNC_OPCODE_QUERY_FUNC 2156 u8 cmd_size; 2157 __le16 flags; 2158 __le16 cookie; 2159 u8 resp_size; 2160 u8 reserved8; 2161 __le64 resp_addr; 2162 }; 2163 2164 /* creq_query_func_resp (size:128b/16B) */ 2165 struct creq_query_func_resp { 2166 u8 type; 2167 #define CREQ_QUERY_FUNC_RESP_TYPE_MASK 0x3fUL 2168 #define CREQ_QUERY_FUNC_RESP_TYPE_SFT 0 2169 #define CREQ_QUERY_FUNC_RESP_TYPE_QP_EVENT 0x38UL 2170 #define CREQ_QUERY_FUNC_RESP_TYPE_LAST CREQ_QUERY_FUNC_RESP_TYPE_QP_EVENT 2171 u8 status; 2172 __le16 cookie; 2173 __le32 size; 2174 u8 v; 2175 #define CREQ_QUERY_FUNC_RESP_V 0x1UL 2176 u8 event; 2177 #define CREQ_QUERY_FUNC_RESP_EVENT_QUERY_FUNC 0x83UL 2178 #define CREQ_QUERY_FUNC_RESP_EVENT_LAST CREQ_QUERY_FUNC_RESP_EVENT_QUERY_FUNC 2179 u8 reserved48[6]; 2180 }; 2181 2182 /* creq_query_func_resp_sb (size:1088b/136B) */ 2183 struct creq_query_func_resp_sb { 2184 u8 opcode; 2185 #define CREQ_QUERY_FUNC_RESP_SB_OPCODE_QUERY_FUNC 0x83UL 2186 #define CREQ_QUERY_FUNC_RESP_SB_OPCODE_LAST CREQ_QUERY_FUNC_RESP_SB_OPCODE_QUERY_FUNC 2187 u8 status; 2188 __le16 cookie; 2189 __le16 flags; 2190 u8 resp_size; 2191 u8 reserved8; 2192 __le64 max_mr_size; 2193 __le32 max_qp; 2194 __le16 max_qp_wr; 2195 __le16 dev_cap_flags; 2196 #define CREQ_QUERY_FUNC_RESP_SB_RESIZE_QP 0x1UL 2197 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_MASK 0xeUL 2198 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_SFT 1 2199 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN0 (0x0UL << 1) 2200 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1 (0x1UL << 1) 2201 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1_EXT (0x2UL << 1) 2202 #define CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_LAST \ 2203 CREQ_QUERY_FUNC_RESP_SB_CC_GENERATION_CC_GEN1_EXT 2204 #define CREQ_QUERY_FUNC_RESP_SB_EXT_STATS 0x10UL 2205 #define CREQ_QUERY_FUNC_RESP_SB_MR_REGISTER_ALLOC 0x20UL 2206 #define CREQ_QUERY_FUNC_RESP_SB_OPTIMIZED_TRANSMIT_ENABLED 0x40UL 2207 #define CREQ_QUERY_FUNC_RESP_SB_CQE_V2 0x80UL 2208 #define CREQ_QUERY_FUNC_RESP_SB_PINGPONG_PUSH_MODE 0x100UL 2209 #define CREQ_QUERY_FUNC_RESP_SB_HW_REQUESTER_RETX_ENABLED 0x200UL 2210 #define CREQ_QUERY_FUNC_RESP_SB_HW_RESPONDER_RETX_ENABLED 0x400UL 2211 __le32 max_cq; 2212 __le32 max_cqe; 2213 __le32 max_pd; 2214 u8 max_sge; 2215 u8 max_srq_sge; 2216 u8 max_qp_rd_atom; 2217 u8 max_qp_init_rd_atom; 2218 __le32 max_mr; 2219 __le32 max_mw; 2220 __le32 max_raw_eth_qp; 2221 __le32 max_ah; 2222 __le32 max_fmr; 2223 __le32 max_srq_wr; 2224 __le32 max_pkeys; 2225 __le32 max_inline_data; 2226 u8 max_map_per_fmr; 2227 u8 l2_db_space_size; 2228 __le16 max_srq; 2229 __le32 max_gid; 2230 __le32 tqm_alloc_reqs[12]; 2231 __le32 max_dpi; 2232 u8 max_sge_var_wqe; 2233 u8 dev_cap_ext_flags; 2234 #define CREQ_QUERY_FUNC_RESP_SB_ATOMIC_OPS_NOT_SUPPORTED 0x1UL 2235 #define CREQ_QUERY_FUNC_RESP_SB_DRV_VERSION_RGTR_SUPPORTED 0x2UL 2236 #define CREQ_QUERY_FUNC_RESP_SB_CREATE_QP_BATCH_SUPPORTED 0x4UL 2237 #define CREQ_QUERY_FUNC_RESP_SB_DESTROY_QP_BATCH_SUPPORTED 0x8UL 2238 #define CREQ_QUERY_FUNC_RESP_SB_ROCE_STATS_EXT_CTX_SUPPORTED 0x10UL 2239 #define CREQ_QUERY_FUNC_RESP_SB_CREATE_SRQ_SGE_SUPPORTED 0x20UL 2240 #define CREQ_QUERY_FUNC_RESP_SB_FIXED_SIZE_WQE_DISABLED 0x40UL 2241 #define CREQ_QUERY_FUNC_RESP_SB_DCN_SUPPORTED 0x80UL 2242 __le16 max_inline_data_var_wqe; 2243 __le32 start_qid; 2244 u8 max_msn_table_size; 2245 u8 reserved8_1; 2246 __le16 dev_cap_ext_flags_2; 2247 #define CREQ_QUERY_FUNC_RESP_SB_OPTIMIZE_MODIFY_QP_SUPPORTED 0x1UL 2248 #define CREQ_QUERY_FUNC_RESP_SB_CHANGE_UDP_SRC_PORT_WQE_SUPPORTED 0x2UL 2249 #define CREQ_QUERY_FUNC_RESP_SB_CQ_COALESCING_SUPPORTED 0x4UL 2250 #define CREQ_QUERY_FUNC_RESP_SB_MEMORY_REGION_RO_SUPPORTED 0x8UL 2251 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_MASK 0x30UL 2252 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_SFT 4 2253 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_HOST_PSN_TABLE (0x0UL << 4) 2254 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_HOST_MSN_TABLE (0x1UL << 4) 2255 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_IQM_MSN_TABLE (0x2UL << 4) 2256 #define CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_LAST \ 2257 CREQ_QUERY_FUNC_RESP_SB_REQ_RETRANSMISSION_SUPPORT_IQM_MSN_TABLE 2258 #define CREQ_QUERY_FUNC_RESP_SB_MAX_SRQ_EXTENDED 0x40UL 2259 #define CREQ_QUERY_FUNC_RESP_SB_MIN_RNR_RTR_RTS_OPT_SUPPORTED 0x1000UL 2260 __le16 max_xp_qp_size; 2261 __le16 create_qp_batch_size; 2262 __le16 destroy_qp_batch_size; 2263 __le16 max_srq_ext; 2264 __le64 reserved64; 2265 }; 2266 2267 /* cmdq_set_func_resources (size:448b/56B) */ 2268 struct cmdq_set_func_resources { 2269 u8 opcode; 2270 #define CMDQ_SET_FUNC_RESOURCES_OPCODE_SET_FUNC_RESOURCES 0x84UL 2271 #define CMDQ_SET_FUNC_RESOURCES_OPCODE_LAST\ 2272 CMDQ_SET_FUNC_RESOURCES_OPCODE_SET_FUNC_RESOURCES 2273 u8 cmd_size; 2274 __le16 flags; 2275 #define CMDQ_SET_FUNC_RESOURCES_FLAGS_MRAV_RESERVATION_SPLIT 0x1UL 2276 __le16 cookie; 2277 u8 resp_size; 2278 u8 reserved8; 2279 __le64 resp_addr; 2280 __le32 number_of_qp; 2281 __le32 number_of_mrw; 2282 __le32 number_of_srq; 2283 __le32 number_of_cq; 2284 __le32 max_qp_per_vf; 2285 __le32 max_mrw_per_vf; 2286 __le32 max_srq_per_vf; 2287 __le32 max_cq_per_vf; 2288 __le32 max_gid_per_vf; 2289 __le32 stat_ctx_id; 2290 }; 2291 2292 /* creq_set_func_resources_resp (size:128b/16B) */ 2293 struct creq_set_func_resources_resp { 2294 u8 type; 2295 #define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_MASK 0x3fUL 2296 #define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_SFT 0 2297 #define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_QP_EVENT 0x38UL 2298 #define CREQ_SET_FUNC_RESOURCES_RESP_TYPE_LAST CREQ_SET_FUNC_RESOURCES_RESP_TYPE_QP_EVENT 2299 u8 status; 2300 __le16 cookie; 2301 __le32 reserved32; 2302 u8 v; 2303 #define CREQ_SET_FUNC_RESOURCES_RESP_V 0x1UL 2304 u8 event; 2305 #define CREQ_SET_FUNC_RESOURCES_RESP_EVENT_SET_FUNC_RESOURCES 0x84UL 2306 #define CREQ_SET_FUNC_RESOURCES_RESP_EVENT_LAST \ 2307 CREQ_SET_FUNC_RESOURCES_RESP_EVENT_SET_FUNC_RESOURCES 2308 u8 reserved48[6]; 2309 }; 2310 2311 /* cmdq_read_context (size:192b/24B) */ 2312 struct cmdq_read_context { 2313 u8 opcode; 2314 #define CMDQ_READ_CONTEXT_OPCODE_READ_CONTEXT 0x85UL 2315 #define CMDQ_READ_CONTEXT_OPCODE_LAST CMDQ_READ_CONTEXT_OPCODE_READ_CONTEXT 2316 u8 cmd_size; 2317 __le16 flags; 2318 __le16 cookie; 2319 u8 resp_size; 2320 u8 reserved8; 2321 __le64 resp_addr; 2322 __le32 xid; 2323 u8 type; 2324 #define CMDQ_READ_CONTEXT_TYPE_QPC 0x0UL 2325 #define CMDQ_READ_CONTEXT_TYPE_CQ 0x1UL 2326 #define CMDQ_READ_CONTEXT_TYPE_MRW 0x2UL 2327 #define CMDQ_READ_CONTEXT_TYPE_SRQ 0x3UL 2328 #define CMDQ_READ_CONTEXT_TYPE_LAST CMDQ_READ_CONTEXT_TYPE_SRQ 2329 u8 unused_0[3]; 2330 }; 2331 2332 /* creq_read_context (size:128b/16B) */ 2333 struct creq_read_context { 2334 u8 type; 2335 #define CREQ_READ_CONTEXT_TYPE_MASK 0x3fUL 2336 #define CREQ_READ_CONTEXT_TYPE_SFT 0 2337 #define CREQ_READ_CONTEXT_TYPE_QP_EVENT 0x38UL 2338 #define CREQ_READ_CONTEXT_TYPE_LAST CREQ_READ_CONTEXT_TYPE_QP_EVENT 2339 u8 status; 2340 __le16 cookie; 2341 __le32 reserved32; 2342 u8 v; 2343 #define CREQ_READ_CONTEXT_V 0x1UL 2344 u8 event; 2345 #define CREQ_READ_CONTEXT_EVENT_READ_CONTEXT 0x85UL 2346 #define CREQ_READ_CONTEXT_EVENT_LAST CREQ_READ_CONTEXT_EVENT_READ_CONTEXT 2347 __le16 reserved16; 2348 __le32 reserved_32; 2349 }; 2350 2351 /* cmdq_map_tc_to_cos (size:192b/24B) */ 2352 struct cmdq_map_tc_to_cos { 2353 u8 opcode; 2354 #define CMDQ_MAP_TC_TO_COS_OPCODE_MAP_TC_TO_COS 0x8aUL 2355 #define CMDQ_MAP_TC_TO_COS_OPCODE_LAST CMDQ_MAP_TC_TO_COS_OPCODE_MAP_TC_TO_COS 2356 u8 cmd_size; 2357 __le16 flags; 2358 __le16 cookie; 2359 u8 resp_size; 2360 u8 reserved8; 2361 __le64 resp_addr; 2362 __le16 cos0; 2363 #define CMDQ_MAP_TC_TO_COS_COS0_NO_CHANGE 0xffffUL 2364 #define CMDQ_MAP_TC_TO_COS_COS0_LAST CMDQ_MAP_TC_TO_COS_COS0_NO_CHANGE 2365 __le16 cos1; 2366 #define CMDQ_MAP_TC_TO_COS_COS1_DISABLE 0x8000UL 2367 #define CMDQ_MAP_TC_TO_COS_COS1_NO_CHANGE 0xffffUL 2368 #define CMDQ_MAP_TC_TO_COS_COS1_LAST CMDQ_MAP_TC_TO_COS_COS1_NO_CHANGE 2369 __le32 unused_0; 2370 }; 2371 2372 /* creq_map_tc_to_cos_resp (size:128b/16B) */ 2373 struct creq_map_tc_to_cos_resp { 2374 u8 type; 2375 #define CREQ_MAP_TC_TO_COS_RESP_TYPE_MASK 0x3fUL 2376 #define CREQ_MAP_TC_TO_COS_RESP_TYPE_SFT 0 2377 #define CREQ_MAP_TC_TO_COS_RESP_TYPE_QP_EVENT 0x38UL 2378 #define CREQ_MAP_TC_TO_COS_RESP_TYPE_LAST CREQ_MAP_TC_TO_COS_RESP_TYPE_QP_EVENT 2379 u8 status; 2380 __le16 cookie; 2381 __le32 reserved32; 2382 u8 v; 2383 #define CREQ_MAP_TC_TO_COS_RESP_V 0x1UL 2384 u8 event; 2385 #define CREQ_MAP_TC_TO_COS_RESP_EVENT_MAP_TC_TO_COS 0x8aUL 2386 #define CREQ_MAP_TC_TO_COS_RESP_EVENT_LAST CREQ_MAP_TC_TO_COS_RESP_EVENT_MAP_TC_TO_COS 2387 u8 reserved48[6]; 2388 }; 2389 2390 /* cmdq_query_roce_cc (size:128b/16B) */ 2391 struct cmdq_query_roce_cc { 2392 u8 opcode; 2393 #define CMDQ_QUERY_ROCE_CC_OPCODE_QUERY_ROCE_CC 0x8dUL 2394 #define CMDQ_QUERY_ROCE_CC_OPCODE_LAST CMDQ_QUERY_ROCE_CC_OPCODE_QUERY_ROCE_CC 2395 u8 cmd_size; 2396 __le16 flags; 2397 __le16 cookie; 2398 u8 resp_size; 2399 u8 reserved8; 2400 __le64 resp_addr; 2401 }; 2402 2403 /* creq_query_roce_cc_resp (size:128b/16B) */ 2404 struct creq_query_roce_cc_resp { 2405 u8 type; 2406 #define CREQ_QUERY_ROCE_CC_RESP_TYPE_MASK 0x3fUL 2407 #define CREQ_QUERY_ROCE_CC_RESP_TYPE_SFT 0 2408 #define CREQ_QUERY_ROCE_CC_RESP_TYPE_QP_EVENT 0x38UL 2409 #define CREQ_QUERY_ROCE_CC_RESP_TYPE_LAST CREQ_QUERY_ROCE_CC_RESP_TYPE_QP_EVENT 2410 u8 status; 2411 __le16 cookie; 2412 __le32 size; 2413 u8 v; 2414 #define CREQ_QUERY_ROCE_CC_RESP_V 0x1UL 2415 u8 event; 2416 #define CREQ_QUERY_ROCE_CC_RESP_EVENT_QUERY_ROCE_CC 0x8dUL 2417 #define CREQ_QUERY_ROCE_CC_RESP_EVENT_LAST CREQ_QUERY_ROCE_CC_RESP_EVENT_QUERY_ROCE_CC 2418 u8 reserved48[6]; 2419 }; 2420 2421 /* creq_query_roce_cc_resp_sb (size:256b/32B) */ 2422 struct creq_query_roce_cc_resp_sb { 2423 u8 opcode; 2424 #define CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_QUERY_ROCE_CC 0x8dUL 2425 #define CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_LAST \ 2426 CREQ_QUERY_ROCE_CC_RESP_SB_OPCODE_QUERY_ROCE_CC 2427 u8 status; 2428 __le16 cookie; 2429 __le16 flags; 2430 u8 resp_size; 2431 u8 reserved8; 2432 u8 enable_cc; 2433 #define CREQ_QUERY_ROCE_CC_RESP_SB_ENABLE_CC 0x1UL 2434 #define CREQ_QUERY_ROCE_CC_RESP_SB_UNUSED7_MASK 0xfeUL 2435 #define CREQ_QUERY_ROCE_CC_RESP_SB_UNUSED7_SFT 1 2436 u8 tos_dscp_tos_ecn; 2437 #define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_ECN_MASK 0x3UL 2438 #define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_ECN_SFT 0 2439 #define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_DSCP_MASK 0xfcUL 2440 #define CREQ_QUERY_ROCE_CC_RESP_SB_TOS_DSCP_SFT 2 2441 u8 g; 2442 u8 num_phases_per_state; 2443 __le16 init_cr; 2444 __le16 init_tr; 2445 u8 alt_vlan_pcp; 2446 #define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_VLAN_PCP_MASK 0x7UL 2447 #define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_VLAN_PCP_SFT 0 2448 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD1_MASK 0xf8UL 2449 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD1_SFT 3 2450 u8 alt_tos_dscp; 2451 #define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_TOS_DSCP_MASK 0x3fUL 2452 #define CREQ_QUERY_ROCE_CC_RESP_SB_ALT_TOS_DSCP_SFT 0 2453 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD4_MASK 0xc0UL 2454 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD4_SFT 6 2455 u8 cc_mode; 2456 #define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_DCTCP 0x0UL 2457 #define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_PROBABILISTIC 0x1UL 2458 #define CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_LAST \ 2459 CREQ_QUERY_ROCE_CC_RESP_SB_CC_MODE_PROBABILISTIC 2460 u8 tx_queue; 2461 __le16 rtt; 2462 #define CREQ_QUERY_ROCE_CC_RESP_SB_RTT_MASK 0x3fffUL 2463 #define CREQ_QUERY_ROCE_CC_RESP_SB_RTT_SFT 0 2464 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD5_MASK 0xc000UL 2465 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD5_SFT 14 2466 __le16 tcp_cp; 2467 #define CREQ_QUERY_ROCE_CC_RESP_SB_TCP_CP_MASK 0x3ffUL 2468 #define CREQ_QUERY_ROCE_CC_RESP_SB_TCP_CP_SFT 0 2469 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD6_MASK 0xfc00UL 2470 #define CREQ_QUERY_ROCE_CC_RESP_SB_RSVD6_SFT 10 2471 __le16 inactivity_th; 2472 u8 pkts_per_phase; 2473 u8 time_per_phase; 2474 __le32 reserved32; 2475 }; 2476 2477 /* creq_query_roce_cc_resp_sb_tlv (size:384b/48B) */ 2478 struct creq_query_roce_cc_resp_sb_tlv { 2479 __le16 cmd_discr; 2480 u8 reserved_8b; 2481 u8 tlv_flags; 2482 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE 0x1UL 2483 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE_LAST 0x0UL 2484 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST 0x1UL 2485 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED 0x2UL 2486 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO (0x0UL << 1) 2487 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES (0x1UL << 1) 2488 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \ 2489 CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES 2490 __le16 tlv_type; 2491 __le16 length; 2492 u8 total_size; 2493 u8 reserved56[7]; 2494 u8 opcode; 2495 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_QUERY_ROCE_CC 0x8dUL 2496 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_LAST \ 2497 CREQ_QUERY_ROCE_CC_RESP_SB_TLV_OPCODE_QUERY_ROCE_CC 2498 u8 status; 2499 __le16 cookie; 2500 __le16 flags; 2501 u8 resp_size; 2502 u8 reserved8; 2503 u8 enable_cc; 2504 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ENABLE_CC 0x1UL 2505 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_UNUSED7_MASK 0xfeUL 2506 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_UNUSED7_SFT 1 2507 u8 tos_dscp_tos_ecn; 2508 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_ECN_MASK 0x3UL 2509 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_ECN_SFT 0 2510 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_DSCP_MASK 0xfcUL 2511 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TOS_DSCP_SFT 2 2512 u8 g; 2513 u8 num_phases_per_state; 2514 __le16 init_cr; 2515 __le16 init_tr; 2516 u8 alt_vlan_pcp; 2517 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_VLAN_PCP_MASK 0x7UL 2518 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_VLAN_PCP_SFT 0 2519 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD1_MASK 0xf8UL 2520 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD1_SFT 3 2521 u8 alt_tos_dscp; 2522 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_TOS_DSCP_MASK 0x3fUL 2523 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_ALT_TOS_DSCP_SFT 0 2524 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD4_MASK 0xc0UL 2525 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD4_SFT 6 2526 u8 cc_mode; 2527 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_DCTCP 0x0UL 2528 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_PROBABILISTIC 0x1UL 2529 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_LAST\ 2530 CREQ_QUERY_ROCE_CC_RESP_SB_TLV_CC_MODE_PROBABILISTIC 2531 u8 tx_queue; 2532 __le16 rtt; 2533 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RTT_MASK 0x3fffUL 2534 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RTT_SFT 0 2535 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD5_MASK 0xc000UL 2536 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD5_SFT 14 2537 __le16 tcp_cp; 2538 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TCP_CP_MASK 0x3ffUL 2539 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_TCP_CP_SFT 0 2540 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD6_MASK 0xfc00UL 2541 #define CREQ_QUERY_ROCE_CC_RESP_SB_TLV_RSVD6_SFT 10 2542 __le16 inactivity_th; 2543 u8 pkts_per_phase; 2544 u8 time_per_phase; 2545 __le32 reserved32; 2546 }; 2547 2548 /* creq_query_roce_cc_gen1_resp_sb_tlv (size:704b/88B) */ 2549 struct creq_query_roce_cc_gen1_resp_sb_tlv { 2550 __le16 cmd_discr; 2551 u8 reserved_8b; 2552 u8 tlv_flags; 2553 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE 0x1UL 2554 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE_LAST 0x0UL 2555 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_MORE_NOT_LAST 0x1UL 2556 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED 0x2UL 2557 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_NO (0x0UL << 1) 2558 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES (0x1UL << 1) 2559 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_LAST \ 2560 CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_TLV_FLAGS_REQUIRED_YES 2561 __le16 tlv_type; 2562 __le16 length; 2563 __le64 reserved64; 2564 __le16 inactivity_th_hi; 2565 __le16 min_time_between_cnps; 2566 __le16 init_cp; 2567 u8 tr_update_mode; 2568 u8 tr_update_cycles; 2569 u8 fr_num_rtts; 2570 u8 ai_rate_increase; 2571 __le16 reduction_relax_rtts_th; 2572 __le16 additional_relax_cr_th; 2573 __le16 cr_min_th; 2574 u8 bw_avg_weight; 2575 u8 actual_cr_factor; 2576 __le16 max_cp_cr_th; 2577 u8 cp_bias_en; 2578 u8 cp_bias; 2579 u8 cnp_ecn; 2580 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_NOT_ECT 0x0UL 2581 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_1 0x1UL 2582 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_0 0x2UL 2583 #define CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_LAST \ 2584 CREQ_QUERY_ROCE_CC_GEN1_RESP_SB_TLV_CNP_ECN_ECT_0 2585 u8 rtt_jitter_en; 2586 __le16 link_bytes_per_usec; 2587 __le16 reset_cc_cr_th; 2588 u8 cr_width; 2589 u8 quota_period_min; 2590 u8 quota_period_max; 2591 u8 quota_period_abs_max; 2592 __le16 tr_lower_bound; 2593 u8 cr_prob_factor; 2594 u8 tr_prob_factor; 2595 __le16 fairness_cr_th; 2596 u8 red_div; 2597 u8 cnp_ratio_th; 2598 __le16 exp_ai_rtts; 2599 u8 exp_ai_cr_cp_ratio; 2600 u8 use_rate_table; 2601 __le16 cp_exp_update_th; 2602 __le16 high_exp_ai_rtts_th1; 2603 __le16 high_exp_ai_rtts_th2; 2604 __le16 actual_cr_cong_free_rtts_th; 2605 __le16 severe_cong_cr_th1; 2606 __le16 severe_cong_cr_th2; 2607 __le32 link64B_per_rtt; 2608 u8 cc_ack_bytes; 2609 u8 reduce_init_en; 2610 __le16 reduce_init_cong_free_rtts_th; 2611 u8 random_no_red_en; 2612 u8 actual_cr_shift_correction_en; 2613 u8 quota_period_adjust_en; 2614 u8 reserved[5]; 2615 }; 2616 2617 /* cmdq_modify_roce_cc (size:448b/56B) */ 2618 struct cmdq_modify_roce_cc { 2619 u8 opcode; 2620 #define CMDQ_MODIFY_ROCE_CC_OPCODE_MODIFY_ROCE_CC 0x8cUL 2621 #define CMDQ_MODIFY_ROCE_CC_OPCODE_LAST CMDQ_MODIFY_ROCE_CC_OPCODE_MODIFY_ROCE_CC 2622 u8 cmd_size; 2623 __le16 flags; 2624 __le16 cookie; 2625 u8 resp_size; 2626 u8 reserved8; 2627 __le64 resp_addr; 2628 __le32 modify_mask; 2629 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ENABLE_CC 0x1UL 2630 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_G 0x2UL 2631 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_NUMPHASEPERSTATE 0x4UL 2632 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INIT_CR 0x8UL 2633 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INIT_TR 0x10UL 2634 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TOS_ECN 0x20UL 2635 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TOS_DSCP 0x40UL 2636 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ALT_VLAN_PCP 0x80UL 2637 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_ALT_TOS_DSCP 0x100UL 2638 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_RTT 0x200UL 2639 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_CC_MODE 0x400UL 2640 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TCP_CP 0x800UL 2641 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TX_QUEUE 0x1000UL 2642 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_INACTIVITY_CP 0x2000UL 2643 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_TIME_PER_PHASE 0x4000UL 2644 #define CMDQ_MODIFY_ROCE_CC_MODIFY_MASK_PKTS_PER_PHASE 0x8000UL 2645 u8 enable_cc; 2646 #define CMDQ_MODIFY_ROCE_CC_ENABLE_CC 0x1UL 2647 #define CMDQ_MODIFY_ROCE_CC_RSVD1_MASK 0xfeUL 2648 #define CMDQ_MODIFY_ROCE_CC_RSVD1_SFT 1 2649 u8 g; 2650 u8 num_phases_per_state; 2651 u8 pkts_per_phase; 2652 __le16 init_cr; 2653 __le16 init_tr; 2654 u8 tos_dscp_tos_ecn; 2655 #define CMDQ_MODIFY_ROCE_CC_TOS_ECN_MASK 0x3UL 2656 #define CMDQ_MODIFY_ROCE_CC_TOS_ECN_SFT 0 2657 #define CMDQ_MODIFY_ROCE_CC_TOS_DSCP_MASK 0xfcUL 2658 #define CMDQ_MODIFY_ROCE_CC_TOS_DSCP_SFT 2 2659 u8 alt_vlan_pcp; 2660 #define CMDQ_MODIFY_ROCE_CC_ALT_VLAN_PCP_MASK 0x7UL 2661 #define CMDQ_MODIFY_ROCE_CC_ALT_VLAN_PCP_SFT 0 2662 #define CMDQ_MODIFY_ROCE_CC_RSVD3_MASK 0xf8UL 2663 #define CMDQ_MODIFY_ROCE_CC_RSVD3_SFT 3 2664 __le16 alt_tos_dscp; 2665 #define CMDQ_MODIFY_ROCE_CC_ALT_TOS_DSCP_MASK 0x3fUL 2666 #define CMDQ_MODIFY_ROCE_CC_ALT_TOS_DSCP_SFT 0 2667 #define CMDQ_MODIFY_ROCE_CC_RSVD4_MASK 0xffc0UL 2668 #define CMDQ_MODIFY_ROCE_CC_RSVD4_SFT 6 2669 __le16 rtt; 2670 #define CMDQ_MODIFY_ROCE_CC_RTT_MASK 0x3fffUL 2671 #define CMDQ_MODIFY_ROCE_CC_RTT_SFT 0 2672 #define CMDQ_MODIFY_ROCE_CC_RSVD5_MASK 0xc000UL 2673 #define CMDQ_MODIFY_ROCE_CC_RSVD5_SFT 14 2674 __le16 tcp_cp; 2675 #define CMDQ_MODIFY_ROCE_CC_TCP_CP_MASK 0x3ffUL 2676 #define CMDQ_MODIFY_ROCE_CC_TCP_CP_SFT 0 2677 #define CMDQ_MODIFY_ROCE_CC_RSVD6_MASK 0xfc00UL 2678 #define CMDQ_MODIFY_ROCE_CC_RSVD6_SFT 10 2679 u8 cc_mode; 2680 #define CMDQ_MODIFY_ROCE_CC_CC_MODE_DCTCP_CC_MODE 0x0UL 2681 #define CMDQ_MODIFY_ROCE_CC_CC_MODE_PROBABILISTIC_CC_MODE 0x1UL 2682 #define CMDQ_MODIFY_ROCE_CC_CC_MODE_LAST CMDQ_MODIFY_ROCE_CC_CC_MODE_PROBABILISTIC_CC_MODE 2683 u8 tx_queue; 2684 __le16 inactivity_th; 2685 u8 time_per_phase; 2686 u8 reserved8_1; 2687 __le16 reserved16; 2688 __le32 reserved32; 2689 __le64 reserved64; 2690 }; 2691 2692 /* cmdq_modify_roce_cc_tlv (size:640b/80B) */ 2693 struct cmdq_modify_roce_cc_tlv { 2694 __le16 cmd_discr; 2695 u8 reserved_8b; 2696 u8 tlv_flags; 2697 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE 0x1UL 2698 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE_LAST 0x0UL 2699 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_MORE_NOT_LAST 0x1UL 2700 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED 0x2UL 2701 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_NO (0x0UL << 1) 2702 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_YES (0x1UL << 1) 2703 #define CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_LAST \ 2704 CMDQ_MODIFY_ROCE_CC_TLV_TLV_FLAGS_REQUIRED_YES 2705 __le16 tlv_type; 2706 __le16 length; 2707 u8 total_size; 2708 u8 reserved56[7]; 2709 u8 opcode; 2710 #define CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_MODIFY_ROCE_CC 0x8cUL 2711 #define CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_LAST CMDQ_MODIFY_ROCE_CC_TLV_OPCODE_MODIFY_ROCE_CC 2712 u8 cmd_size; 2713 __le16 flags; 2714 __le16 cookie; 2715 u8 resp_size; 2716 u8 reserved8; 2717 __le64 resp_addr; 2718 __le32 modify_mask; 2719 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ENABLE_CC 0x1UL 2720 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_G 0x2UL 2721 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_NUMPHASEPERSTATE 0x4UL 2722 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INIT_CR 0x8UL 2723 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INIT_TR 0x10UL 2724 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TOS_ECN 0x20UL 2725 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TOS_DSCP 0x40UL 2726 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ALT_VLAN_PCP 0x80UL 2727 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_ALT_TOS_DSCP 0x100UL 2728 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_RTT 0x200UL 2729 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_CC_MODE 0x400UL 2730 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TCP_CP 0x800UL 2731 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TX_QUEUE 0x1000UL 2732 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_INACTIVITY_CP 0x2000UL 2733 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_TIME_PER_PHASE 0x4000UL 2734 #define CMDQ_MODIFY_ROCE_CC_TLV_MODIFY_MASK_PKTS_PER_PHASE 0x8000UL 2735 u8 enable_cc; 2736 #define CMDQ_MODIFY_ROCE_CC_TLV_ENABLE_CC 0x1UL 2737 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD1_MASK 0xfeUL 2738 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD1_SFT 1 2739 u8 g; 2740 u8 num_phases_per_state; 2741 u8 pkts_per_phase; 2742 __le16 init_cr; 2743 __le16 init_tr; 2744 u8 tos_dscp_tos_ecn; 2745 #define CMDQ_MODIFY_ROCE_CC_TLV_TOS_ECN_MASK 0x3UL 2746 #define CMDQ_MODIFY_ROCE_CC_TLV_TOS_ECN_SFT 0 2747 #define CMDQ_MODIFY_ROCE_CC_TLV_TOS_DSCP_MASK 0xfcUL 2748 #define CMDQ_MODIFY_ROCE_CC_TLV_TOS_DSCP_SFT 2 2749 u8 alt_vlan_pcp; 2750 #define CMDQ_MODIFY_ROCE_CC_TLV_ALT_VLAN_PCP_MASK 0x7UL 2751 #define CMDQ_MODIFY_ROCE_CC_TLV_ALT_VLAN_PCP_SFT 0 2752 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD3_MASK 0xf8UL 2753 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD3_SFT 3 2754 __le16 alt_tos_dscp; 2755 #define CMDQ_MODIFY_ROCE_CC_TLV_ALT_TOS_DSCP_MASK 0x3fUL 2756 #define CMDQ_MODIFY_ROCE_CC_TLV_ALT_TOS_DSCP_SFT 0 2757 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD4_MASK 0xffc0UL 2758 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD4_SFT 6 2759 __le16 rtt; 2760 #define CMDQ_MODIFY_ROCE_CC_TLV_RTT_MASK 0x3fffUL 2761 #define CMDQ_MODIFY_ROCE_CC_TLV_RTT_SFT 0 2762 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD5_MASK 0xc000UL 2763 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD5_SFT 14 2764 __le16 tcp_cp; 2765 #define CMDQ_MODIFY_ROCE_CC_TLV_TCP_CP_MASK 0x3ffUL 2766 #define CMDQ_MODIFY_ROCE_CC_TLV_TCP_CP_SFT 0 2767 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD6_MASK 0xfc00UL 2768 #define CMDQ_MODIFY_ROCE_CC_TLV_RSVD6_SFT 10 2769 u8 cc_mode; 2770 #define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_DCTCP_CC_MODE 0x0UL 2771 #define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_PROBABILISTIC_CC_MODE 0x1UL 2772 #define CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_LAST\ 2773 CMDQ_MODIFY_ROCE_CC_TLV_CC_MODE_PROBABILISTIC_CC_MODE 2774 u8 tx_queue; 2775 __le16 inactivity_th; 2776 u8 time_per_phase; 2777 u8 reserved8_1; 2778 __le16 reserved16; 2779 __le32 reserved32; 2780 __le64 reserved64; 2781 __le64 reservedtlvpad; 2782 }; 2783 2784 /* cmdq_modify_roce_cc_gen1_tlv (size:768b/96B) */ 2785 struct cmdq_modify_roce_cc_gen1_tlv { 2786 __le16 cmd_discr; 2787 u8 reserved_8b; 2788 u8 tlv_flags; 2789 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE 0x1UL 2790 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE_LAST 0x0UL 2791 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_MORE_NOT_LAST 0x1UL 2792 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED 0x2UL 2793 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_NO (0x0UL << 1) 2794 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_YES (0x1UL << 1) 2795 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_LAST\ 2796 CMDQ_MODIFY_ROCE_CC_GEN1_TLV_TLV_FLAGS_REQUIRED_YES 2797 __le16 tlv_type; 2798 __le16 length; 2799 __le64 reserved64; 2800 __le64 modify_mask; 2801 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_MIN_TIME_BETWEEN_CNPS 0x1UL 2802 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_INIT_CP 0x2UL 2803 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_UPDATE_MODE 0x4UL 2804 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_UPDATE_CYCLES 0x8UL 2805 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_FR_NUM_RTTS 0x10UL 2806 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_AI_RATE_INCREASE 0x20UL 2807 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCTION_RELAX_RTTS_TH 0x40UL 2808 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ADDITIONAL_RELAX_CR_TH 0x80UL 2809 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_MIN_TH 0x100UL 2810 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_BW_AVG_WEIGHT 0x200UL 2811 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_FACTOR 0x400UL 2812 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_MAX_CP_CR_TH 0x800UL 2813 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_BIAS_EN 0x1000UL 2814 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_BIAS 0x2000UL 2815 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CNP_ECN 0x4000UL 2816 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RTT_JITTER_EN 0x8000UL 2817 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_LINK_BYTES_PER_USEC 0x10000UL 2818 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RESET_CC_CR_TH 0x20000UL 2819 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_WIDTH 0x40000UL 2820 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_MIN 0x80000UL 2821 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_MAX 0x100000UL 2822 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_ABS_MAX 0x200000UL 2823 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_LOWER_BOUND 0x400000UL 2824 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CR_PROB_FACTOR 0x800000UL 2825 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_TR_PROB_FACTOR 0x1000000UL 2826 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_FAIRNESS_CR_TH 0x2000000UL 2827 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RED_DIV 0x4000000UL 2828 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CNP_RATIO_TH 0x8000000UL 2829 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_EXP_AI_RTTS 0x10000000UL 2830 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_EXP_AI_CR_CP_RATIO 0x20000000UL 2831 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CP_EXP_UPDATE_TH 0x40000000UL 2832 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_HIGH_EXP_AI_RTTS_TH1 0x80000000UL 2833 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_HIGH_EXP_AI_RTTS_TH2 0x100000000ULL 2834 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_USE_RATE_TABLE 0x200000000ULL 2835 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_LINK64B_PER_RTT 0x400000000ULL 2836 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_CONG_FREE_RTTS_TH 0x800000000ULL 2837 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_SEVERE_CONG_CR_TH1 0x1000000000ULL 2838 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_SEVERE_CONG_CR_TH2 0x2000000000ULL 2839 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_CC_ACK_BYTES 0x4000000000ULL 2840 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCE_INIT_EN 0x8000000000ULL 2841 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_REDUCE_INIT_CONG_FREE_RTTS_TH \ 2842 0x10000000000ULL 2843 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_RANDOM_NO_RED_EN 0x20000000000ULL 2844 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_ACTUAL_CR_SHIFT_CORRECTION_EN \ 2845 0x40000000000ULL 2846 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_MODIFY_MASK_QUOTA_PERIOD_ADJUST_EN 0x80000000000ULL 2847 __le16 inactivity_th_hi; 2848 __le16 min_time_between_cnps; 2849 __le16 init_cp; 2850 u8 tr_update_mode; 2851 u8 tr_update_cycles; 2852 u8 fr_num_rtts; 2853 u8 ai_rate_increase; 2854 __le16 reduction_relax_rtts_th; 2855 __le16 additional_relax_cr_th; 2856 __le16 cr_min_th; 2857 u8 bw_avg_weight; 2858 u8 actual_cr_factor; 2859 __le16 max_cp_cr_th; 2860 u8 cp_bias_en; 2861 u8 cp_bias; 2862 u8 cnp_ecn; 2863 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_NOT_ECT 0x0UL 2864 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_1 0x1UL 2865 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_0 0x2UL 2866 #define CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_LAST CMDQ_MODIFY_ROCE_CC_GEN1_TLV_CNP_ECN_ECT_0 2867 u8 rtt_jitter_en; 2868 __le16 link_bytes_per_usec; 2869 __le16 reset_cc_cr_th; 2870 u8 cr_width; 2871 u8 quota_period_min; 2872 u8 quota_period_max; 2873 u8 quota_period_abs_max; 2874 __le16 tr_lower_bound; 2875 u8 cr_prob_factor; 2876 u8 tr_prob_factor; 2877 __le16 fairness_cr_th; 2878 u8 red_div; 2879 u8 cnp_ratio_th; 2880 __le16 exp_ai_rtts; 2881 u8 exp_ai_cr_cp_ratio; 2882 u8 use_rate_table; 2883 __le16 cp_exp_update_th; 2884 __le16 high_exp_ai_rtts_th1; 2885 __le16 high_exp_ai_rtts_th2; 2886 __le16 actual_cr_cong_free_rtts_th; 2887 __le16 severe_cong_cr_th1; 2888 __le16 severe_cong_cr_th2; 2889 __le32 link64B_per_rtt; 2890 u8 cc_ack_bytes; 2891 u8 reduce_init_en; 2892 __le16 reduce_init_cong_free_rtts_th; 2893 u8 random_no_red_en; 2894 u8 actual_cr_shift_correction_en; 2895 u8 quota_period_adjust_en; 2896 u8 reserved[5]; 2897 }; 2898 2899 /* creq_modify_roce_cc_resp (size:128b/16B) */ 2900 struct creq_modify_roce_cc_resp { 2901 u8 type; 2902 #define CREQ_MODIFY_ROCE_CC_RESP_TYPE_MASK 0x3fUL 2903 #define CREQ_MODIFY_ROCE_CC_RESP_TYPE_SFT 0 2904 #define CREQ_MODIFY_ROCE_CC_RESP_TYPE_QP_EVENT 0x38UL 2905 #define CREQ_MODIFY_ROCE_CC_RESP_TYPE_LAST CREQ_MODIFY_ROCE_CC_RESP_TYPE_QP_EVENT 2906 u8 status; 2907 __le16 cookie; 2908 __le32 reserved32; 2909 u8 v; 2910 #define CREQ_MODIFY_ROCE_CC_RESP_V 0x1UL 2911 u8 event; 2912 #define CREQ_MODIFY_ROCE_CC_RESP_EVENT_MODIFY_ROCE_CC 0x8cUL 2913 #define CREQ_MODIFY_ROCE_CC_RESP_EVENT_LAST CREQ_MODIFY_ROCE_CC_RESP_EVENT_MODIFY_ROCE_CC 2914 u8 reserved48[6]; 2915 }; 2916 2917 /* cmdq_set_link_aggr_mode_cc (size:320b/40B) */ 2918 struct cmdq_set_link_aggr_mode_cc { 2919 u8 opcode; 2920 #define CMDQ_SET_LINK_AGGR_MODE_OPCODE_SET_LINK_AGGR_MODE 0x8fUL 2921 #define CMDQ_SET_LINK_AGGR_MODE_OPCODE_LAST \ 2922 CMDQ_SET_LINK_AGGR_MODE_OPCODE_SET_LINK_AGGR_MODE 2923 u8 cmd_size; 2924 __le16 flags; 2925 __le16 cookie; 2926 u8 resp_size; 2927 u8 reserved8; 2928 __le64 resp_addr; 2929 __le32 modify_mask; 2930 #define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_AGGR_EN 0x1UL 2931 #define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_ACTIVE_PORT_MAP 0x2UL 2932 #define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_MEMBER_PORT_MAP 0x4UL 2933 #define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_AGGR_MODE 0x8UL 2934 #define CMDQ_SET_LINK_AGGR_MODE_MODIFY_MASK_STAT_CTX_ID 0x10UL 2935 u8 aggr_enable; 2936 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_ENABLE 0x1UL 2937 #define CMDQ_SET_LINK_AGGR_MODE_RSVD1_MASK 0xfeUL 2938 #define CMDQ_SET_LINK_AGGR_MODE_RSVD1_SFT 1 2939 u8 active_port_map; 2940 #define CMDQ_SET_LINK_AGGR_MODE_ACTIVE_PORT_MAP_MASK 0xfUL 2941 #define CMDQ_SET_LINK_AGGR_MODE_ACTIVE_PORT_MAP_SFT 0 2942 #define CMDQ_SET_LINK_AGGR_MODE_RSVD2_MASK 0xf0UL 2943 #define CMDQ_SET_LINK_AGGR_MODE_RSVD2_SFT 4 2944 u8 member_port_map; 2945 u8 link_aggr_mode; 2946 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_ACTIVE_ACTIVE 0x1UL 2947 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_ACTIVE_BACKUP 0x2UL 2948 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_BALANCE_XOR 0x3UL 2949 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_802_3_AD 0x4UL 2950 #define CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_LAST CMDQ_SET_LINK_AGGR_MODE_AGGR_MODE_802_3_AD 2951 __le16 stat_ctx_id[4]; 2952 __le64 rsvd1; 2953 }; 2954 2955 /* creq_set_link_aggr_mode_resources_resp (size:128b/16B) */ 2956 struct creq_set_link_aggr_mode_resources_resp { 2957 u8 type; 2958 #define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_MASK 0x3fUL 2959 #define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_SFT 0 2960 #define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_QP_EVENT 0x38UL 2961 #define CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_LAST CREQ_SET_LINK_AGGR_MODE_RESP_TYPE_QP_EVENT 2962 u8 status; 2963 __le16 cookie; 2964 __le32 reserved32; 2965 u8 v; 2966 #define CREQ_SET_LINK_AGGR_MODE_RESP_V 0x1UL 2967 u8 event; 2968 #define CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_SET_LINK_AGGR_MODE 0x8fUL 2969 #define CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_LAST\ 2970 CREQ_SET_LINK_AGGR_MODE_RESP_EVENT_SET_LINK_AGGR_MODE 2971 u8 reserved48[6]; 2972 }; 2973 2974 /* creq_func_event (size:128b/16B) */ 2975 struct creq_func_event { 2976 u8 type; 2977 #define CREQ_FUNC_EVENT_TYPE_MASK 0x3fUL 2978 #define CREQ_FUNC_EVENT_TYPE_SFT 0 2979 #define CREQ_FUNC_EVENT_TYPE_FUNC_EVENT 0x3aUL 2980 #define CREQ_FUNC_EVENT_TYPE_LAST CREQ_FUNC_EVENT_TYPE_FUNC_EVENT 2981 u8 reserved56[7]; 2982 u8 v; 2983 #define CREQ_FUNC_EVENT_V 0x1UL 2984 u8 event; 2985 #define CREQ_FUNC_EVENT_EVENT_TX_WQE_ERROR 0x1UL 2986 #define CREQ_FUNC_EVENT_EVENT_TX_DATA_ERROR 0x2UL 2987 #define CREQ_FUNC_EVENT_EVENT_RX_WQE_ERROR 0x3UL 2988 #define CREQ_FUNC_EVENT_EVENT_RX_DATA_ERROR 0x4UL 2989 #define CREQ_FUNC_EVENT_EVENT_CQ_ERROR 0x5UL 2990 #define CREQ_FUNC_EVENT_EVENT_TQM_ERROR 0x6UL 2991 #define CREQ_FUNC_EVENT_EVENT_CFCQ_ERROR 0x7UL 2992 #define CREQ_FUNC_EVENT_EVENT_CFCS_ERROR 0x8UL 2993 #define CREQ_FUNC_EVENT_EVENT_CFCC_ERROR 0x9UL 2994 #define CREQ_FUNC_EVENT_EVENT_CFCM_ERROR 0xaUL 2995 #define CREQ_FUNC_EVENT_EVENT_TIM_ERROR 0xbUL 2996 #define CREQ_FUNC_EVENT_EVENT_VF_COMM_REQUEST 0x80UL 2997 #define CREQ_FUNC_EVENT_EVENT_RESOURCE_EXHAUSTED 0x81UL 2998 #define CREQ_FUNC_EVENT_EVENT_LAST CREQ_FUNC_EVENT_EVENT_RESOURCE_EXHAUSTED 2999 u8 reserved48[6]; 3000 }; 3001 3002 /* creq_qp_event (size:128b/16B) */ 3003 struct creq_qp_event { 3004 u8 type; 3005 #define CREQ_QP_EVENT_TYPE_MASK 0x3fUL 3006 #define CREQ_QP_EVENT_TYPE_SFT 0 3007 #define CREQ_QP_EVENT_TYPE_QP_EVENT 0x38UL 3008 #define CREQ_QP_EVENT_TYPE_LAST CREQ_QP_EVENT_TYPE_QP_EVENT 3009 u8 status; 3010 #define CREQ_QP_EVENT_STATUS_SUCCESS 0x0UL 3011 #define CREQ_QP_EVENT_STATUS_FAIL 0x1UL 3012 #define CREQ_QP_EVENT_STATUS_RESOURCES 0x2UL 3013 #define CREQ_QP_EVENT_STATUS_INVALID_CMD 0x3UL 3014 #define CREQ_QP_EVENT_STATUS_NOT_IMPLEMENTED 0x4UL 3015 #define CREQ_QP_EVENT_STATUS_INVALID_PARAMETER 0x5UL 3016 #define CREQ_QP_EVENT_STATUS_HARDWARE_ERROR 0x6UL 3017 #define CREQ_QP_EVENT_STATUS_INTERNAL_ERROR 0x7UL 3018 #define CREQ_QP_EVENT_STATUS_LAST CREQ_QP_EVENT_STATUS_INTERNAL_ERROR 3019 __le16 cookie; 3020 __le32 reserved32; 3021 u8 v; 3022 #define CREQ_QP_EVENT_V 0x1UL 3023 u8 event; 3024 #define CREQ_QP_EVENT_EVENT_CREATE_QP 0x1UL 3025 #define CREQ_QP_EVENT_EVENT_DESTROY_QP 0x2UL 3026 #define CREQ_QP_EVENT_EVENT_MODIFY_QP 0x3UL 3027 #define CREQ_QP_EVENT_EVENT_QUERY_QP 0x4UL 3028 #define CREQ_QP_EVENT_EVENT_CREATE_SRQ 0x5UL 3029 #define CREQ_QP_EVENT_EVENT_DESTROY_SRQ 0x6UL 3030 #define CREQ_QP_EVENT_EVENT_QUERY_SRQ 0x8UL 3031 #define CREQ_QP_EVENT_EVENT_CREATE_CQ 0x9UL 3032 #define CREQ_QP_EVENT_EVENT_DESTROY_CQ 0xaUL 3033 #define CREQ_QP_EVENT_EVENT_RESIZE_CQ 0xcUL 3034 #define CREQ_QP_EVENT_EVENT_ALLOCATE_MRW 0xdUL 3035 #define CREQ_QP_EVENT_EVENT_DEALLOCATE_KEY 0xeUL 3036 #define CREQ_QP_EVENT_EVENT_REGISTER_MR 0xfUL 3037 #define CREQ_QP_EVENT_EVENT_DEREGISTER_MR 0x10UL 3038 #define CREQ_QP_EVENT_EVENT_ADD_GID 0x11UL 3039 #define CREQ_QP_EVENT_EVENT_DELETE_GID 0x12UL 3040 #define CREQ_QP_EVENT_EVENT_MODIFY_GID 0x17UL 3041 #define CREQ_QP_EVENT_EVENT_QUERY_GID 0x18UL 3042 #define CREQ_QP_EVENT_EVENT_CREATE_QP1 0x13UL 3043 #define CREQ_QP_EVENT_EVENT_DESTROY_QP1 0x14UL 3044 #define CREQ_QP_EVENT_EVENT_CREATE_AH 0x15UL 3045 #define CREQ_QP_EVENT_EVENT_DESTROY_AH 0x16UL 3046 #define CREQ_QP_EVENT_EVENT_INITIALIZE_FW 0x80UL 3047 #define CREQ_QP_EVENT_EVENT_DEINITIALIZE_FW 0x81UL 3048 #define CREQ_QP_EVENT_EVENT_STOP_FUNC 0x82UL 3049 #define CREQ_QP_EVENT_EVENT_QUERY_FUNC 0x83UL 3050 #define CREQ_QP_EVENT_EVENT_SET_FUNC_RESOURCES 0x84UL 3051 #define CREQ_QP_EVENT_EVENT_READ_CONTEXT 0x85UL 3052 #define CREQ_QP_EVENT_EVENT_MAP_TC_TO_COS 0x8aUL 3053 #define CREQ_QP_EVENT_EVENT_QUERY_VERSION 0x8bUL 3054 #define CREQ_QP_EVENT_EVENT_MODIFY_CC 0x8cUL 3055 #define CREQ_QP_EVENT_EVENT_QUERY_CC 0x8dUL 3056 #define CREQ_QP_EVENT_EVENT_QUERY_ROCE_STATS 0x8eUL 3057 #define CREQ_QP_EVENT_EVENT_SET_LINK_AGGR_MODE 0x8fUL 3058 #define CREQ_QP_EVENT_EVENT_QUERY_QP_EXTEND 0x91UL 3059 #define CREQ_QP_EVENT_EVENT_QP_ERROR_NOTIFICATION 0xc0UL 3060 #define CREQ_QP_EVENT_EVENT_CQ_ERROR_NOTIFICATION 0xc1UL 3061 #define CREQ_QP_EVENT_EVENT_LAST CREQ_QP_EVENT_EVENT_CQ_ERROR_NOTIFICATION 3062 u8 reserved48[6]; 3063 }; 3064 3065 /* creq_qp_error_notification (size:128b/16B) */ 3066 struct creq_qp_error_notification { 3067 u8 type; 3068 #define CREQ_QP_ERROR_NOTIFICATION_TYPE_MASK 0x3fUL 3069 #define CREQ_QP_ERROR_NOTIFICATION_TYPE_SFT 0 3070 #define CREQ_QP_ERROR_NOTIFICATION_TYPE_QP_EVENT 0x38UL 3071 #define CREQ_QP_ERROR_NOTIFICATION_TYPE_LAST CREQ_QP_ERROR_NOTIFICATION_TYPE_QP_EVENT 3072 u8 status; 3073 u8 req_slow_path_state; 3074 u8 req_err_state_reason; 3075 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_NO_ERROR 0X0UL 3076 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_OPCODE_ERROR 0X1UL 3077 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TIMEOUT_RETRY_LIMIT 0X2UL 3078 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RNR_TIMEOUT_RETRY_LIMIT 0X3UL 3079 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_1 0X4UL 3080 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_2 0X5UL 3081 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_3 0X6UL 3082 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_NAK_ARRIVAL_4 0X7UL 3083 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RX_MEMORY_ERROR 0X8UL 3084 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TX_MEMORY_ERROR 0X9UL 3085 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_READ_RESP_LENGTH 0XAUL 3086 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_READ_RESP 0XBUL 3087 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_BIND 0XCUL 3088 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_FAST_REG 0XDUL 3089 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ILLEGAL_INVALIDATE 0XEUL 3090 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_CMP_ERROR 0XFUL 3091 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RETRAN_LOCAL_ERROR 0X10UL 3092 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_WQE_FORMAT_ERROR 0X11UL 3093 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_ORRQ_FORMAT_ERROR 0X12UL 3094 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_AVID_ERROR 0X13UL 3095 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_AV_DOMAIN_ERROR 0X14UL 3096 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_CQ_LOAD_ERROR 0X15UL 3097 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_SERV_TYPE_ERROR 0X16UL 3098 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_INVALID_OP_ERROR 0X17UL 3099 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_TX_PCI_ERROR 0X18UL 3100 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RX_PCI_ERROR 0X19UL 3101 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_PROD_WQE_MSMTCH_ERROR 0X1AUL 3102 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_PSN_RANGE_CHECK_ERROR 0X1BUL 3103 #define CREQ_QP_ERROR_NOTIFICATION_REQ_ERR_STATE_REASON_REQ_RETX_SETUP_ERROR 0X1CUL 3104 __le32 xid; 3105 u8 v; 3106 #define CREQ_QP_ERROR_NOTIFICATION_V 0x1UL 3107 u8 event; 3108 #define CREQ_QP_ERROR_NOTIFICATION_EVENT_QP_ERROR_NOTIFICATION 0xc0UL 3109 #define CREQ_QP_ERROR_NOTIFICATION_EVENT_LAST \ 3110 CREQ_QP_ERROR_NOTIFICATION_EVENT_QP_ERROR_NOTIFICATION 3111 u8 res_slow_path_state; 3112 u8 res_err_state_reason; 3113 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_NO_ERROR 0x0UL 3114 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_EXCEED_MAX 0x1UL 3115 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PAYLOAD_LENGTH_MISMATCH 0x2UL 3116 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_EXCEEDS_WQE 0x3UL 3117 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_OPCODE_ERROR 0x4UL 3118 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PSN_SEQ_ERROR_RETRY_LIMIT 0x5UL 3119 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_INVALID_R_KEY 0x6UL 3120 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_DOMAIN_ERROR 0x7UL 3121 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_NO_PERMISSION 0x8UL 3122 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_RANGE_ERROR 0x9UL 3123 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_INVALID_R_KEY 0xaUL 3124 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_DOMAIN_ERROR 0xbUL 3125 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_NO_PERMISSION 0xcUL 3126 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_RANGE_ERROR 0xdUL 3127 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_IRRQ_OFLOW 0xeUL 3128 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_UNSUPPORTED_OPCODE 0xfUL 3129 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_UNALIGN_ATOMIC 0x10UL 3130 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_REM_INVALIDATE 0x11UL 3131 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_MEMORY_ERROR 0x12UL 3132 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_SRQ_ERROR 0x13UL 3133 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_CMP_ERROR 0x14UL 3134 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_INVALID_DUP_RKEY 0x15UL 3135 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_WQE_FORMAT_ERROR 0x16UL 3136 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_IRRQ_FORMAT_ERROR 0x17UL 3137 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_CQ_LOAD_ERROR 0x18UL 3138 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_SRQ_LOAD_ERROR 0x19UL 3139 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_TX_PCI_ERROR 0x1bUL 3140 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_RX_PCI_ERROR 0x1cUL 3141 #define CREQ_QP_ERROR_NOTIFICATION_RES_ERR_STATE_REASON_RES_PSN_NOT_FOUND 0x1dUL 3142 __le16 sq_cons_idx; 3143 __le16 rq_cons_idx; 3144 }; 3145 3146 /* creq_cq_error_notification (size:128b/16B) */ 3147 struct creq_cq_error_notification { 3148 u8 type; 3149 #define CREQ_CQ_ERROR_NOTIFICATION_TYPE_MASK 0x3fUL 3150 #define CREQ_CQ_ERROR_NOTIFICATION_TYPE_SFT 0 3151 #define CREQ_CQ_ERROR_NOTIFICATION_TYPE_CQ_EVENT 0x38UL 3152 #define CREQ_CQ_ERROR_NOTIFICATION_TYPE_LAST CREQ_CQ_ERROR_NOTIFICATION_TYPE_CQ_EVENT 3153 u8 status; 3154 u8 cq_err_reason; 3155 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_INVALID_ERROR 0x1UL 3156 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_OVERFLOW_ERROR 0x2UL 3157 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_REQ_CQ_LOAD_ERROR 0x3UL 3158 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_INVALID_ERROR 0x4UL 3159 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_OVERFLOW_ERROR 0x5UL 3160 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_LOAD_ERROR 0x6UL 3161 #define CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_LAST \ 3162 CREQ_CQ_ERROR_NOTIFICATION_CQ_ERR_REASON_RES_CQ_LOAD_ERROR 3163 u8 reserved8; 3164 __le32 xid; 3165 u8 v; 3166 #define CREQ_CQ_ERROR_NOTIFICATION_V 0x1UL 3167 u8 event; 3168 #define CREQ_CQ_ERROR_NOTIFICATION_EVENT_CQ_ERROR_NOTIFICATION 0xc1UL 3169 #define CREQ_CQ_ERROR_NOTIFICATION_EVENT_LAST \ 3170 CREQ_CQ_ERROR_NOTIFICATION_EVENT_CQ_ERROR_NOTIFICATION 3171 u8 reserved48[6]; 3172 }; 3173 3174 /* sq_base (size:64b/8B) */ 3175 struct sq_base { 3176 u8 wqe_type; 3177 #define SQ_BASE_WQE_TYPE_SEND 0x0UL 3178 #define SQ_BASE_WQE_TYPE_SEND_W_IMMEAD 0x1UL 3179 #define SQ_BASE_WQE_TYPE_SEND_W_INVALID 0x2UL 3180 #define SQ_BASE_WQE_TYPE_WRITE_WQE 0x4UL 3181 #define SQ_BASE_WQE_TYPE_WRITE_W_IMMEAD 0x5UL 3182 #define SQ_BASE_WQE_TYPE_READ_WQE 0x6UL 3183 #define SQ_BASE_WQE_TYPE_ATOMIC_CS 0x8UL 3184 #define SQ_BASE_WQE_TYPE_ATOMIC_FA 0xbUL 3185 #define SQ_BASE_WQE_TYPE_LOCAL_INVALID 0xcUL 3186 #define SQ_BASE_WQE_TYPE_FR_PMR 0xdUL 3187 #define SQ_BASE_WQE_TYPE_BIND 0xeUL 3188 #define SQ_BASE_WQE_TYPE_FR_PPMR 0xfUL 3189 #define SQ_BASE_WQE_TYPE_LAST SQ_BASE_WQE_TYPE_FR_PPMR 3190 u8 unused_0[7]; 3191 }; 3192 3193 /* sq_sge (size:128b/16B) */ 3194 struct sq_sge { 3195 __le64 va_or_pa; 3196 __le32 l_key; 3197 __le32 size; 3198 }; 3199 3200 /* sq_psn_search (size:64b/8B) */ 3201 struct sq_psn_search { 3202 __le32 opcode_start_psn; 3203 #define SQ_PSN_SEARCH_START_PSN_MASK 0xffffffUL 3204 #define SQ_PSN_SEARCH_START_PSN_SFT 0 3205 #define SQ_PSN_SEARCH_OPCODE_MASK 0xff000000UL 3206 #define SQ_PSN_SEARCH_OPCODE_SFT 24 3207 __le32 flags_next_psn; 3208 #define SQ_PSN_SEARCH_NEXT_PSN_MASK 0xffffffUL 3209 #define SQ_PSN_SEARCH_NEXT_PSN_SFT 0 3210 #define SQ_PSN_SEARCH_FLAGS_MASK 0xff000000UL 3211 #define SQ_PSN_SEARCH_FLAGS_SFT 24 3212 }; 3213 3214 /* sq_psn_search_ext (size:128b/16B) */ 3215 struct sq_psn_search_ext { 3216 __le32 opcode_start_psn; 3217 #define SQ_PSN_SEARCH_EXT_START_PSN_MASK 0xffffffUL 3218 #define SQ_PSN_SEARCH_EXT_START_PSN_SFT 0 3219 #define SQ_PSN_SEARCH_EXT_OPCODE_MASK 0xff000000UL 3220 #define SQ_PSN_SEARCH_EXT_OPCODE_SFT 24 3221 __le32 flags_next_psn; 3222 #define SQ_PSN_SEARCH_EXT_NEXT_PSN_MASK 0xffffffUL 3223 #define SQ_PSN_SEARCH_EXT_NEXT_PSN_SFT 0 3224 #define SQ_PSN_SEARCH_EXT_FLAGS_MASK 0xff000000UL 3225 #define SQ_PSN_SEARCH_EXT_FLAGS_SFT 24 3226 __le16 start_slot_idx; 3227 __le16 reserved16; 3228 __le32 reserved32; 3229 }; 3230 3231 /* sq_msn_search (size:64b/8B) */ 3232 struct sq_msn_search { 3233 __le64 start_idx_next_psn_start_psn; 3234 #define SQ_MSN_SEARCH_START_PSN_MASK 0xffffffUL 3235 #define SQ_MSN_SEARCH_START_PSN_SFT 0 3236 #define SQ_MSN_SEARCH_NEXT_PSN_MASK 0xffffff000000ULL 3237 #define SQ_MSN_SEARCH_NEXT_PSN_SFT 24 3238 #define SQ_MSN_SEARCH_START_IDX_MASK 0xffff000000000000ULL 3239 #define SQ_MSN_SEARCH_START_IDX_SFT 48 3240 }; 3241 3242 /* sq_send (size:1024b/128B) */ 3243 struct sq_send { 3244 u8 wqe_type; 3245 #define SQ_SEND_WQE_TYPE_SEND 0x0UL 3246 #define SQ_SEND_WQE_TYPE_SEND_W_IMMEAD 0x1UL 3247 #define SQ_SEND_WQE_TYPE_SEND_W_INVALID 0x2UL 3248 #define SQ_SEND_WQE_TYPE_LAST SQ_SEND_WQE_TYPE_SEND_W_INVALID 3249 u8 flags; 3250 #define SQ_SEND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3251 #define SQ_SEND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3252 #define SQ_SEND_FLAGS_SIGNAL_COMP 0x1UL 3253 #define SQ_SEND_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3254 #define SQ_SEND_FLAGS_UC_FENCE 0x4UL 3255 #define SQ_SEND_FLAGS_SE 0x8UL 3256 #define SQ_SEND_FLAGS_INLINE 0x10UL 3257 #define SQ_SEND_FLAGS_WQE_TS_EN 0x20UL 3258 #define SQ_SEND_FLAGS_DEBUG_TRACE 0x40UL 3259 u8 wqe_size; 3260 u8 reserved8_1; 3261 __le32 inv_key_or_imm_data; 3262 __le32 length; 3263 __le32 q_key; 3264 __le32 dst_qp; 3265 #define SQ_SEND_DST_QP_MASK 0xffffffUL 3266 #define SQ_SEND_DST_QP_SFT 0 3267 __le32 avid; 3268 #define SQ_SEND_AVID_MASK 0xfffffUL 3269 #define SQ_SEND_AVID_SFT 0 3270 __le32 reserved32; 3271 __le32 timestamp; 3272 #define SQ_SEND_TIMESTAMP_MASK 0xffffffUL 3273 #define SQ_SEND_TIMESTAMP_SFT 0 3274 __le32 data[24]; 3275 }; 3276 3277 /* sq_send_hdr (size:256b/32B) */ 3278 struct sq_send_hdr { 3279 u8 wqe_type; 3280 #define SQ_SEND_HDR_WQE_TYPE_SEND 0x0UL 3281 #define SQ_SEND_HDR_WQE_TYPE_SEND_W_IMMEAD 0x1UL 3282 #define SQ_SEND_HDR_WQE_TYPE_SEND_W_INVALID 0x2UL 3283 #define SQ_SEND_HDR_WQE_TYPE_LAST SQ_SEND_HDR_WQE_TYPE_SEND_W_INVALID 3284 u8 flags; 3285 #define SQ_SEND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3286 #define SQ_SEND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3287 #define SQ_SEND_HDR_FLAGS_SIGNAL_COMP 0x1UL 3288 #define SQ_SEND_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3289 #define SQ_SEND_HDR_FLAGS_UC_FENCE 0x4UL 3290 #define SQ_SEND_HDR_FLAGS_SE 0x8UL 3291 #define SQ_SEND_HDR_FLAGS_INLINE 0x10UL 3292 #define SQ_SEND_HDR_FLAGS_WQE_TS_EN 0x20UL 3293 #define SQ_SEND_HDR_FLAGS_DEBUG_TRACE 0x40UL 3294 u8 wqe_size; 3295 u8 reserved8_1; 3296 __le32 inv_key_or_imm_data; 3297 __le32 length; 3298 __le32 q_key; 3299 __le32 dst_qp; 3300 #define SQ_SEND_HDR_DST_QP_MASK 0xffffffUL 3301 #define SQ_SEND_HDR_DST_QP_SFT 0 3302 __le32 avid; 3303 #define SQ_SEND_HDR_AVID_MASK 0xfffffUL 3304 #define SQ_SEND_HDR_AVID_SFT 0 3305 __le32 reserved32; 3306 __le32 timestamp; 3307 #define SQ_SEND_HDR_TIMESTAMP_MASK 0xffffffUL 3308 #define SQ_SEND_HDR_TIMESTAMP_SFT 0 3309 }; 3310 3311 /* sq_send_raweth_qp1 (size:1024b/128B) */ 3312 struct sq_send_raweth_qp1 { 3313 u8 wqe_type; 3314 #define SQ_SEND_RAWETH_QP1_WQE_TYPE_SEND 0x0UL 3315 #define SQ_SEND_RAWETH_QP1_WQE_TYPE_LAST SQ_SEND_RAWETH_QP1_WQE_TYPE_SEND 3316 u8 flags; 3317 #define SQ_SEND_RAWETH_QP1_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK \ 3318 0xffUL 3319 #define SQ_SEND_RAWETH_QP1_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT \ 3320 0 3321 #define SQ_SEND_RAWETH_QP1_FLAGS_SIGNAL_COMP 0x1UL 3322 #define SQ_SEND_RAWETH_QP1_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3323 #define SQ_SEND_RAWETH_QP1_FLAGS_UC_FENCE 0x4UL 3324 #define SQ_SEND_RAWETH_QP1_FLAGS_SE 0x8UL 3325 #define SQ_SEND_RAWETH_QP1_FLAGS_INLINE 0x10UL 3326 #define SQ_SEND_RAWETH_QP1_FLAGS_WQE_TS_EN 0x20UL 3327 #define SQ_SEND_RAWETH_QP1_FLAGS_DEBUG_TRACE 0x40UL 3328 u8 wqe_size; 3329 u8 reserved8; 3330 __le16 lflags; 3331 #define SQ_SEND_RAWETH_QP1_LFLAGS_TCP_UDP_CHKSUM 0x1UL 3332 #define SQ_SEND_RAWETH_QP1_LFLAGS_IP_CHKSUM 0x2UL 3333 #define SQ_SEND_RAWETH_QP1_LFLAGS_NOCRC 0x4UL 3334 #define SQ_SEND_RAWETH_QP1_LFLAGS_STAMP 0x8UL 3335 #define SQ_SEND_RAWETH_QP1_LFLAGS_T_IP_CHKSUM 0x10UL 3336 #define SQ_SEND_RAWETH_QP1_LFLAGS_ROCE_CRC 0x100UL 3337 #define SQ_SEND_RAWETH_QP1_LFLAGS_FCOE_CRC 0x200UL 3338 __le16 cfa_action; 3339 __le32 length; 3340 __le32 reserved32_1; 3341 __le32 cfa_meta; 3342 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_VID_MASK 0xfffUL 3343 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_VID_SFT 0 3344 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_DE 0x1000UL 3345 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_PRI_MASK 0xe000UL 3346 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_PRI_SFT 13 3347 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_MASK 0x70000UL 3348 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_SFT 16 3349 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID88A8 (0x0UL << 16) 3350 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID8100 (0x1UL << 16) 3351 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9100 (0x2UL << 16) 3352 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9200 (0x3UL << 16) 3353 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPID9300 (0x4UL << 16) 3354 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPIDCFG (0x5UL << 16) 3355 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_LAST\ 3356 SQ_SEND_RAWETH_QP1_CFA_META_VLAN_TPID_TPIDCFG 3357 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_RESERVED_MASK 0xff80000UL 3358 #define SQ_SEND_RAWETH_QP1_CFA_META_VLAN_RESERVED_SFT 19 3359 #define SQ_SEND_RAWETH_QP1_CFA_META_KEY_MASK 0xf0000000UL 3360 #define SQ_SEND_RAWETH_QP1_CFA_META_KEY_SFT 28 3361 #define SQ_SEND_RAWETH_QP1_CFA_META_KEY_NONE (0x0UL << 28) 3362 #define SQ_SEND_RAWETH_QP1_CFA_META_KEY_VLAN_TAG (0x1UL << 28) 3363 #define SQ_SEND_RAWETH_QP1_CFA_META_KEY_LAST SQ_SEND_RAWETH_QP1_CFA_META_KEY_VLAN_TAG 3364 __le32 reserved32_2; 3365 __le32 reserved32_3; 3366 __le32 timestamp; 3367 #define SQ_SEND_RAWETH_QP1_TIMESTAMP_MASK 0xffffffUL 3368 #define SQ_SEND_RAWETH_QP1_TIMESTAMP_SFT 0 3369 __le32 data[24]; 3370 }; 3371 3372 /* sq_send_raweth_qp1_hdr (size:256b/32B) */ 3373 struct sq_send_raweth_qp1_hdr { 3374 u8 wqe_type; 3375 #define SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_SEND 0x0UL 3376 #define SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_LAST SQ_SEND_RAWETH_QP1_HDR_WQE_TYPE_SEND 3377 u8 flags; 3378 #define \ 3379 SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3380 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\ 3381 0 3382 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_SIGNAL_COMP 0x1UL 3383 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3384 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_UC_FENCE 0x4UL 3385 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_SE 0x8UL 3386 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_INLINE 0x10UL 3387 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_WQE_TS_EN 0x20UL 3388 #define SQ_SEND_RAWETH_QP1_HDR_FLAGS_DEBUG_TRACE 0x40UL 3389 u8 wqe_size; 3390 u8 reserved8; 3391 __le16 lflags; 3392 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_TCP_UDP_CHKSUM 0x1UL 3393 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_IP_CHKSUM 0x2UL 3394 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_NOCRC 0x4UL 3395 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_STAMP 0x8UL 3396 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_T_IP_CHKSUM 0x10UL 3397 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_ROCE_CRC 0x100UL 3398 #define SQ_SEND_RAWETH_QP1_HDR_LFLAGS_FCOE_CRC 0x200UL 3399 __le16 cfa_action; 3400 __le32 length; 3401 __le32 reserved32_1; 3402 __le32 cfa_meta; 3403 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_VID_MASK 0xfffUL 3404 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_VID_SFT 0 3405 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_DE 0x1000UL 3406 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_PRI_MASK 0xe000UL 3407 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_PRI_SFT 13 3408 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_MASK 0x70000UL 3409 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_SFT 16 3410 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID88A8 (0x0UL << 16) 3411 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID8100 (0x1UL << 16) 3412 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9100 (0x2UL << 16) 3413 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9200 (0x3UL << 16) 3414 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPID9300 (0x4UL << 16) 3415 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPIDCFG (0x5UL << 16) 3416 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_LAST\ 3417 SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_TPID_TPIDCFG 3418 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_RESERVED_MASK 0xff80000UL 3419 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_VLAN_RESERVED_SFT 19 3420 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_MASK 0xf0000000UL 3421 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_SFT 28 3422 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_NONE (0x0UL << 28) 3423 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_VLAN_TAG (0x1UL << 28) 3424 #define SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_LAST\ 3425 SQ_SEND_RAWETH_QP1_HDR_CFA_META_KEY_VLAN_TAG 3426 __le32 reserved32_2; 3427 __le32 reserved32_3; 3428 __le32 timestamp; 3429 #define SQ_SEND_RAWETH_QP1_HDR_TIMESTAMP_MASK 0xffffffUL 3430 #define SQ_SEND_RAWETH_QP1_HDR_TIMESTAMP_SFT 0 3431 }; 3432 3433 /* sq_rdma (size:1024b/128B) */ 3434 struct sq_rdma { 3435 u8 wqe_type; 3436 #define SQ_RDMA_WQE_TYPE_WRITE_WQE 0x4UL 3437 #define SQ_RDMA_WQE_TYPE_WRITE_W_IMMEAD 0x5UL 3438 #define SQ_RDMA_WQE_TYPE_READ_WQE 0x6UL 3439 #define SQ_RDMA_WQE_TYPE_LAST SQ_RDMA_WQE_TYPE_READ_WQE 3440 u8 flags; 3441 #define SQ_RDMA_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3442 #define SQ_RDMA_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3443 #define SQ_RDMA_FLAGS_SIGNAL_COMP 0x1UL 3444 #define SQ_RDMA_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3445 #define SQ_RDMA_FLAGS_UC_FENCE 0x4UL 3446 #define SQ_RDMA_FLAGS_SE 0x8UL 3447 #define SQ_RDMA_FLAGS_INLINE 0x10UL 3448 #define SQ_RDMA_FLAGS_WQE_TS_EN 0x20UL 3449 #define SQ_RDMA_FLAGS_DEBUG_TRACE 0x40UL 3450 u8 wqe_size; 3451 u8 reserved8; 3452 __le32 imm_data; 3453 __le32 length; 3454 __le32 reserved32_1; 3455 __le64 remote_va; 3456 __le32 remote_key; 3457 __le32 timestamp; 3458 #define SQ_RDMA_TIMESTAMP_MASK 0xffffffUL 3459 #define SQ_RDMA_TIMESTAMP_SFT 0 3460 __le32 data[24]; 3461 }; 3462 3463 /* sq_rdma_hdr (size:256b/32B) */ 3464 struct sq_rdma_hdr { 3465 u8 wqe_type; 3466 #define SQ_RDMA_HDR_WQE_TYPE_WRITE_WQE 0x4UL 3467 #define SQ_RDMA_HDR_WQE_TYPE_WRITE_W_IMMEAD 0x5UL 3468 #define SQ_RDMA_HDR_WQE_TYPE_READ_WQE 0x6UL 3469 #define SQ_RDMA_HDR_WQE_TYPE_LAST SQ_RDMA_HDR_WQE_TYPE_READ_WQE 3470 u8 flags; 3471 #define SQ_RDMA_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3472 #define SQ_RDMA_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3473 #define SQ_RDMA_HDR_FLAGS_SIGNAL_COMP 0x1UL 3474 #define SQ_RDMA_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3475 #define SQ_RDMA_HDR_FLAGS_UC_FENCE 0x4UL 3476 #define SQ_RDMA_HDR_FLAGS_SE 0x8UL 3477 #define SQ_RDMA_HDR_FLAGS_INLINE 0x10UL 3478 #define SQ_RDMA_HDR_FLAGS_WQE_TS_EN 0x20UL 3479 #define SQ_RDMA_HDR_FLAGS_DEBUG_TRACE 0x40UL 3480 u8 wqe_size; 3481 u8 reserved8; 3482 __le32 imm_data; 3483 __le32 length; 3484 __le32 reserved32_1; 3485 __le64 remote_va; 3486 __le32 remote_key; 3487 __le32 timestamp; 3488 #define SQ_RDMA_HDR_TIMESTAMP_MASK 0xffffffUL 3489 #define SQ_RDMA_HDR_TIMESTAMP_SFT 0 3490 }; 3491 3492 /* sq_atomic (size:1024b/128B) */ 3493 struct sq_atomic { 3494 u8 wqe_type; 3495 #define SQ_ATOMIC_WQE_TYPE_ATOMIC_CS 0x8UL 3496 #define SQ_ATOMIC_WQE_TYPE_ATOMIC_FA 0xbUL 3497 #define SQ_ATOMIC_WQE_TYPE_LAST SQ_ATOMIC_WQE_TYPE_ATOMIC_FA 3498 u8 flags; 3499 #define SQ_ATOMIC_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3500 #define SQ_ATOMIC_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3501 #define SQ_ATOMIC_FLAGS_SIGNAL_COMP 0x1UL 3502 #define SQ_ATOMIC_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3503 #define SQ_ATOMIC_FLAGS_UC_FENCE 0x4UL 3504 #define SQ_ATOMIC_FLAGS_SE 0x8UL 3505 #define SQ_ATOMIC_FLAGS_INLINE 0x10UL 3506 #define SQ_ATOMIC_FLAGS_WQE_TS_EN 0x20UL 3507 #define SQ_ATOMIC_FLAGS_DEBUG_TRACE 0x40UL 3508 __le16 reserved16; 3509 __le32 remote_key; 3510 __le64 remote_va; 3511 __le64 swap_data; 3512 __le64 cmp_data; 3513 __le32 data[24]; 3514 }; 3515 3516 /* sq_atomic_hdr (size:256b/32B) */ 3517 struct sq_atomic_hdr { 3518 u8 wqe_type; 3519 #define SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_CS 0x8UL 3520 #define SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_FA 0xbUL 3521 #define SQ_ATOMIC_HDR_WQE_TYPE_LAST SQ_ATOMIC_HDR_WQE_TYPE_ATOMIC_FA 3522 u8 flags; 3523 #define SQ_ATOMIC_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3524 #define SQ_ATOMIC_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3525 #define SQ_ATOMIC_HDR_FLAGS_SIGNAL_COMP 0x1UL 3526 #define SQ_ATOMIC_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3527 #define SQ_ATOMIC_HDR_FLAGS_UC_FENCE 0x4UL 3528 #define SQ_ATOMIC_HDR_FLAGS_SE 0x8UL 3529 #define SQ_ATOMIC_HDR_FLAGS_INLINE 0x10UL 3530 #define SQ_ATOMIC_HDR_FLAGS_WQE_TS_EN 0x20UL 3531 #define SQ_ATOMIC_HDR_FLAGS_DEBUG_TRACE 0x40UL 3532 __le16 reserved16; 3533 __le32 remote_key; 3534 __le64 remote_va; 3535 __le64 swap_data; 3536 __le64 cmp_data; 3537 }; 3538 3539 /* sq_localinvalidate (size:1024b/128B) */ 3540 struct sq_localinvalidate { 3541 u8 wqe_type; 3542 #define SQ_LOCALINVALIDATE_WQE_TYPE_LOCAL_INVALID 0xcUL 3543 #define SQ_LOCALINVALIDATE_WQE_TYPE_LAST SQ_LOCALINVALIDATE_WQE_TYPE_LOCAL_INVALID 3544 u8 flags; 3545 #define SQ_LOCALINVALIDATE_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK\ 3546 0xffUL 3547 #define SQ_LOCALINVALIDATE_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\ 3548 0 3549 #define SQ_LOCALINVALIDATE_FLAGS_SIGNAL_COMP 0x1UL 3550 #define SQ_LOCALINVALIDATE_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3551 #define SQ_LOCALINVALIDATE_FLAGS_UC_FENCE 0x4UL 3552 #define SQ_LOCALINVALIDATE_FLAGS_SE 0x8UL 3553 #define SQ_LOCALINVALIDATE_FLAGS_INLINE 0x10UL 3554 #define SQ_LOCALINVALIDATE_FLAGS_WQE_TS_EN 0x20UL 3555 #define SQ_LOCALINVALIDATE_FLAGS_DEBUG_TRACE 0x40UL 3556 __le16 reserved16; 3557 __le32 inv_l_key; 3558 __le64 reserved64; 3559 u8 reserved128[16]; 3560 __le32 data[24]; 3561 }; 3562 3563 /* sq_localinvalidate_hdr (size:256b/32B) */ 3564 struct sq_localinvalidate_hdr { 3565 u8 wqe_type; 3566 #define SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LOCAL_INVALID 0xcUL 3567 #define SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LAST SQ_LOCALINVALIDATE_HDR_WQE_TYPE_LOCAL_INVALID 3568 u8 flags; 3569 #define \ 3570 SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3571 #define SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT\ 3572 0 3573 #define SQ_LOCALINVALIDATE_HDR_FLAGS_SIGNAL_COMP 0x1UL 3574 #define SQ_LOCALINVALIDATE_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3575 #define SQ_LOCALINVALIDATE_HDR_FLAGS_UC_FENCE 0x4UL 3576 #define SQ_LOCALINVALIDATE_HDR_FLAGS_SE 0x8UL 3577 #define SQ_LOCALINVALIDATE_HDR_FLAGS_INLINE 0x10UL 3578 #define SQ_LOCALINVALIDATE_HDR_FLAGS_WQE_TS_EN 0x20UL 3579 #define SQ_LOCALINVALIDATE_HDR_FLAGS_DEBUG_TRACE 0x40UL 3580 __le16 reserved16; 3581 __le32 inv_l_key; 3582 __le64 reserved64; 3583 u8 reserved128[16]; 3584 }; 3585 3586 /* sq_fr_pmr (size:1024b/128B) */ 3587 struct sq_fr_pmr { 3588 u8 wqe_type; 3589 #define SQ_FR_PMR_WQE_TYPE_FR_PMR 0xdUL 3590 #define SQ_FR_PMR_WQE_TYPE_LAST SQ_FR_PMR_WQE_TYPE_FR_PMR 3591 u8 flags; 3592 #define SQ_FR_PMR_FLAGS_SIGNAL_COMP 0x1UL 3593 #define SQ_FR_PMR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3594 #define SQ_FR_PMR_FLAGS_UC_FENCE 0x4UL 3595 #define SQ_FR_PMR_FLAGS_SE 0x8UL 3596 #define SQ_FR_PMR_FLAGS_INLINE 0x10UL 3597 #define SQ_FR_PMR_FLAGS_WQE_TS_EN 0x20UL 3598 #define SQ_FR_PMR_FLAGS_DEBUG_TRACE 0x40UL 3599 u8 access_cntl; 3600 #define SQ_FR_PMR_ACCESS_CNTL_LOCAL_WRITE 0x1UL 3601 #define SQ_FR_PMR_ACCESS_CNTL_REMOTE_READ 0x2UL 3602 #define SQ_FR_PMR_ACCESS_CNTL_REMOTE_WRITE 0x4UL 3603 #define SQ_FR_PMR_ACCESS_CNTL_REMOTE_ATOMIC 0x8UL 3604 #define SQ_FR_PMR_ACCESS_CNTL_WINDOW_BIND 0x10UL 3605 u8 zero_based_page_size_log; 3606 #define SQ_FR_PMR_PAGE_SIZE_LOG_MASK 0x1fUL 3607 #define SQ_FR_PMR_PAGE_SIZE_LOG_SFT 0 3608 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4K 0x0UL 3609 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8K 0x1UL 3610 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16K 0x2UL 3611 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32K 0x3UL 3612 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64K 0x4UL 3613 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128K 0x5UL 3614 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256K 0x6UL 3615 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512K 0x7UL 3616 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1M 0x8UL 3617 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2M 0x9UL 3618 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4M 0xaUL 3619 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8M 0xbUL 3620 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16M 0xcUL 3621 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32M 0xdUL 3622 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64M 0xeUL 3623 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128M 0xfUL 3624 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256M 0x10UL 3625 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512M 0x11UL 3626 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1G 0x12UL 3627 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2G 0x13UL 3628 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4G 0x14UL 3629 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8G 0x15UL 3630 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_16G 0x16UL 3631 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_32G 0x17UL 3632 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_64G 0x18UL 3633 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_128G 0x19UL 3634 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_256G 0x1aUL 3635 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_512G 0x1bUL 3636 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_1T 0x1cUL 3637 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_2T 0x1dUL 3638 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_4T 0x1eUL 3639 #define SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8T 0x1fUL 3640 #define SQ_FR_PMR_PAGE_SIZE_LOG_LAST SQ_FR_PMR_PAGE_SIZE_LOG_PGSZ_8T 3641 #define SQ_FR_PMR_ZERO_BASED 0x20UL 3642 __le32 l_key; 3643 u8 length[5]; 3644 u8 reserved8_1; 3645 u8 reserved8_2; 3646 u8 numlevels_pbl_page_size_log; 3647 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_MASK 0x1fUL 3648 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_SFT 0 3649 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4K 0x0UL 3650 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8K 0x1UL 3651 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16K 0x2UL 3652 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32K 0x3UL 3653 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64K 0x4UL 3654 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128K 0x5UL 3655 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256K 0x6UL 3656 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512K 0x7UL 3657 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1M 0x8UL 3658 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2M 0x9UL 3659 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4M 0xaUL 3660 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8M 0xbUL 3661 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16M 0xcUL 3662 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32M 0xdUL 3663 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64M 0xeUL 3664 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128M 0xfUL 3665 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256M 0x10UL 3666 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512M 0x11UL 3667 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1G 0x12UL 3668 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2G 0x13UL 3669 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4G 0x14UL 3670 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8G 0x15UL 3671 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_16G 0x16UL 3672 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_32G 0x17UL 3673 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_64G 0x18UL 3674 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_128G 0x19UL 3675 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_256G 0x1aUL 3676 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_512G 0x1bUL 3677 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_1T 0x1cUL 3678 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_2T 0x1dUL 3679 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_4T 0x1eUL 3680 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8T 0x1fUL 3681 #define SQ_FR_PMR_PBL_PAGE_SIZE_LOG_LAST SQ_FR_PMR_PBL_PAGE_SIZE_LOG_PGSZ_8T 3682 #define SQ_FR_PMR_NUMLEVELS_MASK 0xc0UL 3683 #define SQ_FR_PMR_NUMLEVELS_SFT 6 3684 #define SQ_FR_PMR_NUMLEVELS_PHYSICAL (0x0UL << 6) 3685 #define SQ_FR_PMR_NUMLEVELS_LAYER1 (0x1UL << 6) 3686 #define SQ_FR_PMR_NUMLEVELS_LAYER2 (0x2UL << 6) 3687 #define SQ_FR_PMR_NUMLEVELS_LAST SQ_FR_PMR_NUMLEVELS_LAYER2 3688 __le64 pblptr; 3689 __le64 va; 3690 __le32 data[24]; 3691 }; 3692 3693 /* sq_fr_pmr_hdr (size:256b/32B) */ 3694 struct sq_fr_pmr_hdr { 3695 u8 wqe_type; 3696 #define SQ_FR_PMR_HDR_WQE_TYPE_FR_PMR 0xdUL 3697 #define SQ_FR_PMR_HDR_WQE_TYPE_LAST SQ_FR_PMR_HDR_WQE_TYPE_FR_PMR 3698 u8 flags; 3699 #define SQ_FR_PMR_HDR_FLAGS_SIGNAL_COMP 0x1UL 3700 #define SQ_FR_PMR_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3701 #define SQ_FR_PMR_HDR_FLAGS_UC_FENCE 0x4UL 3702 #define SQ_FR_PMR_HDR_FLAGS_SE 0x8UL 3703 #define SQ_FR_PMR_HDR_FLAGS_INLINE 0x10UL 3704 #define SQ_FR_PMR_HDR_FLAGS_WQE_TS_EN 0x20UL 3705 #define SQ_FR_PMR_HDR_FLAGS_DEBUG_TRACE 0x40UL 3706 u8 access_cntl; 3707 #define SQ_FR_PMR_HDR_ACCESS_CNTL_LOCAL_WRITE 0x1UL 3708 #define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_READ 0x2UL 3709 #define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_WRITE 0x4UL 3710 #define SQ_FR_PMR_HDR_ACCESS_CNTL_REMOTE_ATOMIC 0x8UL 3711 #define SQ_FR_PMR_HDR_ACCESS_CNTL_WINDOW_BIND 0x10UL 3712 u8 zero_based_page_size_log; 3713 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_MASK 0x1fUL 3714 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_SFT 0 3715 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4K 0x0UL 3716 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8K 0x1UL 3717 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16K 0x2UL 3718 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32K 0x3UL 3719 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64K 0x4UL 3720 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128K 0x5UL 3721 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256K 0x6UL 3722 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512K 0x7UL 3723 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1M 0x8UL 3724 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2M 0x9UL 3725 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4M 0xaUL 3726 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8M 0xbUL 3727 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16M 0xcUL 3728 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32M 0xdUL 3729 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64M 0xeUL 3730 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128M 0xfUL 3731 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256M 0x10UL 3732 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512M 0x11UL 3733 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1G 0x12UL 3734 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2G 0x13UL 3735 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4G 0x14UL 3736 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8G 0x15UL 3737 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_16G 0x16UL 3738 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_32G 0x17UL 3739 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_64G 0x18UL 3740 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_128G 0x19UL 3741 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_256G 0x1aUL 3742 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_512G 0x1bUL 3743 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_1T 0x1cUL 3744 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_2T 0x1dUL 3745 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_4T 0x1eUL 3746 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8T 0x1fUL 3747 #define SQ_FR_PMR_HDR_PAGE_SIZE_LOG_LAST SQ_FR_PMR_HDR_PAGE_SIZE_LOG_PGSZ_8T 3748 #define SQ_FR_PMR_HDR_ZERO_BASED 0x20UL 3749 __le32 l_key; 3750 u8 length[5]; 3751 u8 reserved8_1; 3752 u8 reserved8_2; 3753 u8 numlevels_pbl_page_size_log; 3754 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_MASK 0x1fUL 3755 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_SFT 0 3756 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4K 0x0UL 3757 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8K 0x1UL 3758 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16K 0x2UL 3759 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32K 0x3UL 3760 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64K 0x4UL 3761 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128K 0x5UL 3762 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256K 0x6UL 3763 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512K 0x7UL 3764 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1M 0x8UL 3765 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2M 0x9UL 3766 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4M 0xaUL 3767 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8M 0xbUL 3768 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16M 0xcUL 3769 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32M 0xdUL 3770 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64M 0xeUL 3771 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128M 0xfUL 3772 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256M 0x10UL 3773 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512M 0x11UL 3774 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1G 0x12UL 3775 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2G 0x13UL 3776 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4G 0x14UL 3777 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8G 0x15UL 3778 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_16G 0x16UL 3779 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_32G 0x17UL 3780 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_64G 0x18UL 3781 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_128G 0x19UL 3782 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_256G 0x1aUL 3783 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_512G 0x1bUL 3784 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_1T 0x1cUL 3785 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_2T 0x1dUL 3786 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_4T 0x1eUL 3787 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8T 0x1fUL 3788 #define SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_LAST SQ_FR_PMR_HDR_PBL_PAGE_SIZE_LOG_PGSZ_8T 3789 #define SQ_FR_PMR_HDR_NUMLEVELS_MASK 0xc0UL 3790 #define SQ_FR_PMR_HDR_NUMLEVELS_SFT 6 3791 #define SQ_FR_PMR_HDR_NUMLEVELS_PHYSICAL (0x0UL << 6) 3792 #define SQ_FR_PMR_HDR_NUMLEVELS_LAYER1 (0x1UL << 6) 3793 #define SQ_FR_PMR_HDR_NUMLEVELS_LAYER2 (0x2UL << 6) 3794 #define SQ_FR_PMR_HDR_NUMLEVELS_LAST SQ_FR_PMR_HDR_NUMLEVELS_LAYER2 3795 __le64 pblptr; 3796 __le64 va; 3797 }; 3798 3799 /* sq_bind (size:1024b/128B) */ 3800 struct sq_bind { 3801 u8 wqe_type; 3802 #define SQ_BIND_WQE_TYPE_BIND 0xeUL 3803 #define SQ_BIND_WQE_TYPE_LAST SQ_BIND_WQE_TYPE_BIND 3804 u8 flags; 3805 #define SQ_BIND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3806 #define SQ_BIND_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3807 #define SQ_BIND_FLAGS_SIGNAL_COMP 0x1UL 3808 #define SQ_BIND_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3809 #define SQ_BIND_FLAGS_UC_FENCE 0x4UL 3810 #define SQ_BIND_FLAGS_SE 0x8UL 3811 #define SQ_BIND_FLAGS_INLINE 0x10UL 3812 #define SQ_BIND_FLAGS_WQE_TS_EN 0x20UL 3813 #define SQ_BIND_FLAGS_DEBUG_TRACE 0x40UL 3814 u8 access_cntl; 3815 #define \ 3816 SQ_BIND_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_MASK\ 3817 0xffUL 3818 #define \ 3819 SQ_BIND_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_SFT 0 3820 #define SQ_BIND_ACCESS_CNTL_LOCAL_WRITE 0x1UL 3821 #define SQ_BIND_ACCESS_CNTL_REMOTE_READ 0x2UL 3822 #define SQ_BIND_ACCESS_CNTL_REMOTE_WRITE 0x4UL 3823 #define SQ_BIND_ACCESS_CNTL_REMOTE_ATOMIC 0x8UL 3824 #define SQ_BIND_ACCESS_CNTL_WINDOW_BIND 0x10UL 3825 u8 reserved8_1; 3826 u8 mw_type_zero_based; 3827 #define SQ_BIND_ZERO_BASED 0x1UL 3828 #define SQ_BIND_MW_TYPE 0x2UL 3829 #define SQ_BIND_MW_TYPE_TYPE1 (0x0UL << 1) 3830 #define SQ_BIND_MW_TYPE_TYPE2 (0x1UL << 1) 3831 #define SQ_BIND_MW_TYPE_LAST SQ_BIND_MW_TYPE_TYPE2 3832 u8 reserved8_2; 3833 __le16 reserved16; 3834 __le32 parent_l_key; 3835 __le32 l_key; 3836 __le64 va; 3837 u8 length[5]; 3838 u8 reserved24[3]; 3839 __le32 data[24]; 3840 }; 3841 3842 /* sq_bind_hdr (size:256b/32B) */ 3843 struct sq_bind_hdr { 3844 u8 wqe_type; 3845 #define SQ_BIND_HDR_WQE_TYPE_BIND 0xeUL 3846 #define SQ_BIND_HDR_WQE_TYPE_LAST SQ_BIND_HDR_WQE_TYPE_BIND 3847 u8 flags; 3848 #define SQ_BIND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_MASK 0xffUL 3849 #define SQ_BIND_HDR_FLAGS_INLINE_SE_UC_FENCE_RD_OR_ATOMIC_FENCE_SIGNAL_COMP_SFT 0 3850 #define SQ_BIND_HDR_FLAGS_SIGNAL_COMP 0x1UL 3851 #define SQ_BIND_HDR_FLAGS_RD_OR_ATOMIC_FENCE 0x2UL 3852 #define SQ_BIND_HDR_FLAGS_UC_FENCE 0x4UL 3853 #define SQ_BIND_HDR_FLAGS_SE 0x8UL 3854 #define SQ_BIND_HDR_FLAGS_INLINE 0x10UL 3855 #define SQ_BIND_HDR_FLAGS_WQE_TS_EN 0x20UL 3856 #define SQ_BIND_HDR_FLAGS_DEBUG_TRACE 0x40UL 3857 u8 access_cntl; 3858 #define \ 3859 SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_MASK\ 3860 0xffUL 3861 #define \ 3862 SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND_REMOTE_ATOMIC_REMOTE_WRITE_REMOTE_READ_LOCAL_WRITE_SFT \ 3863 0 3864 #define SQ_BIND_HDR_ACCESS_CNTL_LOCAL_WRITE 0x1UL 3865 #define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_READ 0x2UL 3866 #define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_WRITE 0x4UL 3867 #define SQ_BIND_HDR_ACCESS_CNTL_REMOTE_ATOMIC 0x8UL 3868 #define SQ_BIND_HDR_ACCESS_CNTL_WINDOW_BIND 0x10UL 3869 u8 reserved8_1; 3870 u8 mw_type_zero_based; 3871 #define SQ_BIND_HDR_ZERO_BASED 0x1UL 3872 #define SQ_BIND_HDR_MW_TYPE 0x2UL 3873 #define SQ_BIND_HDR_MW_TYPE_TYPE1 (0x0UL << 1) 3874 #define SQ_BIND_HDR_MW_TYPE_TYPE2 (0x1UL << 1) 3875 #define SQ_BIND_HDR_MW_TYPE_LAST SQ_BIND_HDR_MW_TYPE_TYPE2 3876 u8 reserved8_2; 3877 __le16 reserved16; 3878 __le32 parent_l_key; 3879 __le32 l_key; 3880 __le64 va; 3881 u8 length[5]; 3882 u8 reserved24[3]; 3883 }; 3884 3885 /* rq_wqe (size:1024b/128B) */ 3886 struct rq_wqe { 3887 u8 wqe_type; 3888 #define RQ_WQE_WQE_TYPE_RCV 0x80UL 3889 #define RQ_WQE_WQE_TYPE_LAST RQ_WQE_WQE_TYPE_RCV 3890 u8 flags; 3891 u8 wqe_size; 3892 u8 reserved8; 3893 __le32 reserved32; 3894 __le32 wr_id[2]; 3895 #define RQ_WQE_WR_ID_MASK 0xfffffUL 3896 #define RQ_WQE_WR_ID_SFT 0 3897 u8 reserved128[16]; 3898 __le32 data[24]; 3899 }; 3900 3901 /* rq_wqe_hdr (size:256b/32B) */ 3902 struct rq_wqe_hdr { 3903 u8 wqe_type; 3904 #define RQ_WQE_HDR_WQE_TYPE_RCV 0x80UL 3905 #define RQ_WQE_HDR_WQE_TYPE_LAST RQ_WQE_HDR_WQE_TYPE_RCV 3906 u8 flags; 3907 u8 wqe_size; 3908 u8 reserved8; 3909 __le32 reserved32; 3910 __le32 wr_id[2]; 3911 #define RQ_WQE_HDR_WR_ID_MASK 0xfffffUL 3912 #define RQ_WQE_HDR_WR_ID_SFT 0 3913 u8 reserved128[16]; 3914 }; 3915 3916 /* cq_base (size:256b/32B) */ 3917 struct cq_base { 3918 __le64 reserved64_1; 3919 __le64 reserved64_2; 3920 __le64 reserved64_3; 3921 u8 cqe_type_toggle; 3922 #define CQ_BASE_TOGGLE 0x1UL 3923 #define CQ_BASE_CQE_TYPE_MASK 0x1eUL 3924 #define CQ_BASE_CQE_TYPE_SFT 1 3925 #define CQ_BASE_CQE_TYPE_REQ (0x0UL << 1) 3926 #define CQ_BASE_CQE_TYPE_RES_RC (0x1UL << 1) 3927 #define CQ_BASE_CQE_TYPE_RES_UD (0x2UL << 1) 3928 #define CQ_BASE_CQE_TYPE_RES_RAWETH_QP1 (0x3UL << 1) 3929 #define CQ_BASE_CQE_TYPE_RES_UD_CFA (0x4UL << 1) 3930 #define CQ_BASE_CQE_TYPE_REQ_V3 (0x8UL << 1) 3931 #define CQ_BASE_CQE_TYPE_RES_RC_V3 (0x9UL << 1) 3932 #define CQ_BASE_CQE_TYPE_RES_UD_V3 (0xaUL << 1) 3933 #define CQ_BASE_CQE_TYPE_RES_RAWETH_QP1_V3 (0xbUL << 1) 3934 #define CQ_BASE_CQE_TYPE_RES_UD_CFA_V3 (0xcUL << 1) 3935 #define CQ_BASE_CQE_TYPE_NO_OP (0xdUL << 1) 3936 #define CQ_BASE_CQE_TYPE_TERMINAL (0xeUL << 1) 3937 #define CQ_BASE_CQE_TYPE_CUT_OFF (0xfUL << 1) 3938 #define CQ_BASE_CQE_TYPE_LAST CQ_BASE_CQE_TYPE_CUT_OFF 3939 u8 status; 3940 #define CQ_BASE_STATUS_OK 0x0UL 3941 #define CQ_BASE_STATUS_BAD_RESPONSE_ERR 0x1UL 3942 #define CQ_BASE_STATUS_LOCAL_LENGTH_ERR 0x2UL 3943 #define CQ_BASE_STATUS_HW_LOCAL_LENGTH_ERR 0x3UL 3944 #define CQ_BASE_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 3945 #define CQ_BASE_STATUS_LOCAL_PROTECTION_ERR 0x5UL 3946 #define CQ_BASE_STATUS_LOCAL_ACCESS_ERROR 0x6UL 3947 #define CQ_BASE_STATUS_MEMORY_MGT_OPERATION_ERR 0x7UL 3948 #define CQ_BASE_STATUS_REMOTE_INVALID_REQUEST_ERR 0x8UL 3949 #define CQ_BASE_STATUS_REMOTE_ACCESS_ERR 0x9UL 3950 #define CQ_BASE_STATUS_REMOTE_OPERATION_ERR 0xaUL 3951 #define CQ_BASE_STATUS_RNR_NAK_RETRY_CNT_ERR 0xbUL 3952 #define CQ_BASE_STATUS_TRANSPORT_RETRY_CNT_ERR 0xcUL 3953 #define CQ_BASE_STATUS_WORK_REQUEST_FLUSHED_ERR 0xdUL 3954 #define CQ_BASE_STATUS_HW_FLUSH_ERR 0xeUL 3955 #define CQ_BASE_STATUS_OVERFLOW_ERR 0xfUL 3956 #define CQ_BASE_STATUS_LAST CQ_BASE_STATUS_OVERFLOW_ERR 3957 __le16 reserved16; 3958 __le32 opaque; 3959 }; 3960 3961 /* cq_req (size:256b/32B) */ 3962 struct cq_req { 3963 __le64 qp_handle; 3964 __le16 sq_cons_idx; 3965 __le16 reserved16_1; 3966 __le32 reserved32_2; 3967 __le64 reserved64; 3968 u8 cqe_type_toggle; 3969 #define CQ_REQ_TOGGLE 0x1UL 3970 #define CQ_REQ_CQE_TYPE_MASK 0x1eUL 3971 #define CQ_REQ_CQE_TYPE_SFT 1 3972 #define CQ_REQ_CQE_TYPE_REQ (0x0UL << 1) 3973 #define CQ_REQ_CQE_TYPE_LAST CQ_REQ_CQE_TYPE_REQ 3974 #define CQ_REQ_PUSH 0x20UL 3975 u8 status; 3976 #define CQ_REQ_STATUS_OK 0x0UL 3977 #define CQ_REQ_STATUS_BAD_RESPONSE_ERR 0x1UL 3978 #define CQ_REQ_STATUS_LOCAL_LENGTH_ERR 0x2UL 3979 #define CQ_REQ_STATUS_LOCAL_QP_OPERATION_ERR 0x3UL 3980 #define CQ_REQ_STATUS_LOCAL_PROTECTION_ERR 0x4UL 3981 #define CQ_REQ_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 3982 #define CQ_REQ_STATUS_REMOTE_INVALID_REQUEST_ERR 0x6UL 3983 #define CQ_REQ_STATUS_REMOTE_ACCESS_ERR 0x7UL 3984 #define CQ_REQ_STATUS_REMOTE_OPERATION_ERR 0x8UL 3985 #define CQ_REQ_STATUS_RNR_NAK_RETRY_CNT_ERR 0x9UL 3986 #define CQ_REQ_STATUS_TRANSPORT_RETRY_CNT_ERR 0xaUL 3987 #define CQ_REQ_STATUS_WORK_REQUEST_FLUSHED_ERR 0xbUL 3988 #define CQ_REQ_STATUS_LAST CQ_REQ_STATUS_WORK_REQUEST_FLUSHED_ERR 3989 __le16 reserved16_2; 3990 __le32 reserved32_1; 3991 }; 3992 3993 /* cq_res_rc (size:256b/32B) */ 3994 struct cq_res_rc { 3995 __le32 length; 3996 __le32 imm_data_or_inv_r_key; 3997 __le64 qp_handle; 3998 __le64 mr_handle; 3999 u8 cqe_type_toggle; 4000 #define CQ_RES_RC_TOGGLE 0x1UL 4001 #define CQ_RES_RC_CQE_TYPE_MASK 0x1eUL 4002 #define CQ_RES_RC_CQE_TYPE_SFT 1 4003 #define CQ_RES_RC_CQE_TYPE_RES_RC (0x1UL << 1) 4004 #define CQ_RES_RC_CQE_TYPE_LAST CQ_RES_RC_CQE_TYPE_RES_RC 4005 u8 status; 4006 #define CQ_RES_RC_STATUS_OK 0x0UL 4007 #define CQ_RES_RC_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4008 #define CQ_RES_RC_STATUS_LOCAL_LENGTH_ERR 0x2UL 4009 #define CQ_RES_RC_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4010 #define CQ_RES_RC_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4011 #define CQ_RES_RC_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4012 #define CQ_RES_RC_STATUS_REMOTE_INVALID_REQUEST_ERR 0x6UL 4013 #define CQ_RES_RC_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4014 #define CQ_RES_RC_STATUS_HW_FLUSH_ERR 0x8UL 4015 #define CQ_RES_RC_STATUS_LAST CQ_RES_RC_STATUS_HW_FLUSH_ERR 4016 __le16 flags; 4017 #define CQ_RES_RC_FLAGS_SRQ 0x1UL 4018 #define CQ_RES_RC_FLAGS_SRQ_RQ 0x0UL 4019 #define CQ_RES_RC_FLAGS_SRQ_SRQ 0x1UL 4020 #define CQ_RES_RC_FLAGS_SRQ_LAST CQ_RES_RC_FLAGS_SRQ_SRQ 4021 #define CQ_RES_RC_FLAGS_IMM 0x2UL 4022 #define CQ_RES_RC_FLAGS_INV 0x4UL 4023 #define CQ_RES_RC_FLAGS_RDMA 0x8UL 4024 #define CQ_RES_RC_FLAGS_RDMA_SEND (0x0UL << 3) 4025 #define CQ_RES_RC_FLAGS_RDMA_RDMA_WRITE (0x1UL << 3) 4026 #define CQ_RES_RC_FLAGS_RDMA_LAST CQ_RES_RC_FLAGS_RDMA_RDMA_WRITE 4027 __le32 srq_or_rq_wr_id; 4028 #define CQ_RES_RC_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4029 #define CQ_RES_RC_SRQ_OR_RQ_WR_ID_SFT 0 4030 }; 4031 4032 /* cq_res_ud (size:256b/32B) */ 4033 struct cq_res_ud { 4034 __le16 length; 4035 #define CQ_RES_UD_LENGTH_MASK 0x3fffUL 4036 #define CQ_RES_UD_LENGTH_SFT 0 4037 __le16 cfa_metadata; 4038 #define CQ_RES_UD_CFA_METADATA_VID_MASK 0xfffUL 4039 #define CQ_RES_UD_CFA_METADATA_VID_SFT 0 4040 #define CQ_RES_UD_CFA_METADATA_DE 0x1000UL 4041 #define CQ_RES_UD_CFA_METADATA_PRI_MASK 0xe000UL 4042 #define CQ_RES_UD_CFA_METADATA_PRI_SFT 13 4043 __le32 imm_data; 4044 __le64 qp_handle; 4045 __le16 src_mac[3]; 4046 __le16 src_qp_low; 4047 u8 cqe_type_toggle; 4048 #define CQ_RES_UD_TOGGLE 0x1UL 4049 #define CQ_RES_UD_CQE_TYPE_MASK 0x1eUL 4050 #define CQ_RES_UD_CQE_TYPE_SFT 1 4051 #define CQ_RES_UD_CQE_TYPE_RES_UD (0x2UL << 1) 4052 #define CQ_RES_UD_CQE_TYPE_LAST CQ_RES_UD_CQE_TYPE_RES_UD 4053 u8 status; 4054 #define CQ_RES_UD_STATUS_OK 0x0UL 4055 #define CQ_RES_UD_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4056 #define CQ_RES_UD_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4057 #define CQ_RES_UD_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4058 #define CQ_RES_UD_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4059 #define CQ_RES_UD_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4060 #define CQ_RES_UD_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4061 #define CQ_RES_UD_STATUS_HW_FLUSH_ERR 0x8UL 4062 #define CQ_RES_UD_STATUS_LAST CQ_RES_UD_STATUS_HW_FLUSH_ERR 4063 __le16 flags; 4064 #define CQ_RES_UD_FLAGS_SRQ 0x1UL 4065 #define CQ_RES_UD_FLAGS_SRQ_RQ 0x0UL 4066 #define CQ_RES_UD_FLAGS_SRQ_SRQ 0x1UL 4067 #define CQ_RES_UD_FLAGS_SRQ_LAST CQ_RES_UD_FLAGS_SRQ_SRQ 4068 #define CQ_RES_UD_FLAGS_IMM 0x2UL 4069 #define CQ_RES_UD_FLAGS_UNUSED_MASK 0xcUL 4070 #define CQ_RES_UD_FLAGS_UNUSED_SFT 2 4071 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_MASK 0x30UL 4072 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_SFT 4 4073 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_V1 (0x0UL << 4) 4074 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV4 (0x2UL << 4) 4075 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV6 (0x3UL << 4) 4076 #define CQ_RES_UD_FLAGS_ROCE_IP_VER_LAST CQ_RES_UD_FLAGS_ROCE_IP_VER_V2IPV6 4077 #define CQ_RES_UD_FLAGS_META_FORMAT_MASK 0x3c0UL 4078 #define CQ_RES_UD_FLAGS_META_FORMAT_SFT 6 4079 #define CQ_RES_UD_FLAGS_META_FORMAT_NONE (0x0UL << 6) 4080 #define CQ_RES_UD_FLAGS_META_FORMAT_VLAN (0x1UL << 6) 4081 #define CQ_RES_UD_FLAGS_META_FORMAT_TUNNEL_ID (0x2UL << 6) 4082 #define CQ_RES_UD_FLAGS_META_FORMAT_CHDR_DATA (0x3UL << 6) 4083 #define CQ_RES_UD_FLAGS_META_FORMAT_HDR_OFFSET (0x4UL << 6) 4084 #define CQ_RES_UD_FLAGS_META_FORMAT_LAST CQ_RES_UD_FLAGS_META_FORMAT_HDR_OFFSET 4085 #define CQ_RES_UD_FLAGS_EXT_META_FORMAT_MASK 0xc00UL 4086 #define CQ_RES_UD_FLAGS_EXT_META_FORMAT_SFT 10 4087 __le32 src_qp_high_srq_or_rq_wr_id; 4088 #define CQ_RES_UD_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4089 #define CQ_RES_UD_SRQ_OR_RQ_WR_ID_SFT 0 4090 #define CQ_RES_UD_SRC_QP_HIGH_MASK 0xff000000UL 4091 #define CQ_RES_UD_SRC_QP_HIGH_SFT 24 4092 }; 4093 4094 /* cq_res_ud_v2 (size:256b/32B) */ 4095 struct cq_res_ud_v2 { 4096 __le16 length; 4097 #define CQ_RES_UD_V2_LENGTH_MASK 0x3fffUL 4098 #define CQ_RES_UD_V2_LENGTH_SFT 0 4099 __le16 cfa_metadata0; 4100 #define CQ_RES_UD_V2_CFA_METADATA0_VID_MASK 0xfffUL 4101 #define CQ_RES_UD_V2_CFA_METADATA0_VID_SFT 0 4102 #define CQ_RES_UD_V2_CFA_METADATA0_DE 0x1000UL 4103 #define CQ_RES_UD_V2_CFA_METADATA0_PRI_MASK 0xe000UL 4104 #define CQ_RES_UD_V2_CFA_METADATA0_PRI_SFT 13 4105 __le32 imm_data; 4106 __le64 qp_handle; 4107 __le16 src_mac[3]; 4108 __le16 src_qp_low; 4109 u8 cqe_type_toggle; 4110 #define CQ_RES_UD_V2_TOGGLE 0x1UL 4111 #define CQ_RES_UD_V2_CQE_TYPE_MASK 0x1eUL 4112 #define CQ_RES_UD_V2_CQE_TYPE_SFT 1 4113 #define CQ_RES_UD_V2_CQE_TYPE_RES_UD (0x2UL << 1) 4114 #define CQ_RES_UD_V2_CQE_TYPE_LAST CQ_RES_UD_V2_CQE_TYPE_RES_UD 4115 u8 status; 4116 #define CQ_RES_UD_V2_STATUS_OK 0x0UL 4117 #define CQ_RES_UD_V2_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4118 #define CQ_RES_UD_V2_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4119 #define CQ_RES_UD_V2_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4120 #define CQ_RES_UD_V2_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4121 #define CQ_RES_UD_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4122 #define CQ_RES_UD_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4123 #define CQ_RES_UD_V2_STATUS_HW_FLUSH_ERR 0x8UL 4124 #define CQ_RES_UD_V2_STATUS_LAST CQ_RES_UD_V2_STATUS_HW_FLUSH_ERR 4125 __le16 flags; 4126 #define CQ_RES_UD_V2_FLAGS_SRQ 0x1UL 4127 #define CQ_RES_UD_V2_FLAGS_SRQ_RQ 0x0UL 4128 #define CQ_RES_UD_V2_FLAGS_SRQ_SRQ 0x1UL 4129 #define CQ_RES_UD_V2_FLAGS_SRQ_LAST CQ_RES_UD_V2_FLAGS_SRQ_SRQ 4130 #define CQ_RES_UD_V2_FLAGS_IMM 0x2UL 4131 #define CQ_RES_UD_V2_FLAGS_UNUSED_MASK 0xcUL 4132 #define CQ_RES_UD_V2_FLAGS_UNUSED_SFT 2 4133 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_MASK 0x30UL 4134 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_SFT 4 4135 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V1 (0x0UL << 4) 4136 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV4 (0x2UL << 4) 4137 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV6 (0x3UL << 4) 4138 #define CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_LAST CQ_RES_UD_V2_FLAGS_ROCE_IP_VER_V2IPV6 4139 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_MASK 0x3c0UL 4140 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_SFT 6 4141 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_NONE (0x0UL << 6) 4142 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_ACT_REC_PTR (0x1UL << 6) 4143 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_TUNNEL_ID (0x2UL << 6) 4144 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_CHDR_DATA (0x3UL << 6) 4145 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_HDR_OFFSET (0x4UL << 6) 4146 #define CQ_RES_UD_V2_FLAGS_META_FORMAT_LAST CQ_RES_UD_V2_FLAGS_META_FORMAT_HDR_OFFSET 4147 __le32 src_qp_high_srq_or_rq_wr_id; 4148 #define CQ_RES_UD_V2_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4149 #define CQ_RES_UD_V2_SRQ_OR_RQ_WR_ID_SFT 0 4150 #define CQ_RES_UD_V2_CFA_METADATA1_MASK 0xf00000UL 4151 #define CQ_RES_UD_V2_CFA_METADATA1_SFT 20 4152 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_MASK 0x700000UL 4153 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_SFT 20 4154 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID88A8 (0x0UL << 20) 4155 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID8100 (0x1UL << 20) 4156 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9100 (0x2UL << 20) 4157 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9200 (0x3UL << 20) 4158 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPID9300 (0x4UL << 20) 4159 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPIDCFG (0x5UL << 20) 4160 #define CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_LAST CQ_RES_UD_V2_CFA_METADATA1_TPID_SEL_TPIDCFG 4161 #define CQ_RES_UD_V2_CFA_METADATA1_VALID 0x800000UL 4162 #define CQ_RES_UD_V2_SRC_QP_HIGH_MASK 0xff000000UL 4163 #define CQ_RES_UD_V2_SRC_QP_HIGH_SFT 24 4164 }; 4165 4166 /* cq_res_ud_cfa (size:256b/32B) */ 4167 struct cq_res_ud_cfa { 4168 __le16 length; 4169 #define CQ_RES_UD_CFA_LENGTH_MASK 0x3fffUL 4170 #define CQ_RES_UD_CFA_LENGTH_SFT 0 4171 __le16 cfa_code; 4172 __le32 imm_data; 4173 __le32 qid; 4174 #define CQ_RES_UD_CFA_QID_MASK 0xfffffUL 4175 #define CQ_RES_UD_CFA_QID_SFT 0 4176 __le32 cfa_metadata; 4177 #define CQ_RES_UD_CFA_CFA_METADATA_VID_MASK 0xfffUL 4178 #define CQ_RES_UD_CFA_CFA_METADATA_VID_SFT 0 4179 #define CQ_RES_UD_CFA_CFA_METADATA_DE 0x1000UL 4180 #define CQ_RES_UD_CFA_CFA_METADATA_PRI_MASK 0xe000UL 4181 #define CQ_RES_UD_CFA_CFA_METADATA_PRI_SFT 13 4182 #define CQ_RES_UD_CFA_CFA_METADATA_TPID_MASK 0xffff0000UL 4183 #define CQ_RES_UD_CFA_CFA_METADATA_TPID_SFT 16 4184 __le16 src_mac[3]; 4185 __le16 src_qp_low; 4186 u8 cqe_type_toggle; 4187 #define CQ_RES_UD_CFA_TOGGLE 0x1UL 4188 #define CQ_RES_UD_CFA_CQE_TYPE_MASK 0x1eUL 4189 #define CQ_RES_UD_CFA_CQE_TYPE_SFT 1 4190 #define CQ_RES_UD_CFA_CQE_TYPE_RES_UD_CFA (0x4UL << 1) 4191 #define CQ_RES_UD_CFA_CQE_TYPE_LAST CQ_RES_UD_CFA_CQE_TYPE_RES_UD_CFA 4192 u8 status; 4193 #define CQ_RES_UD_CFA_STATUS_OK 0x0UL 4194 #define CQ_RES_UD_CFA_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4195 #define CQ_RES_UD_CFA_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4196 #define CQ_RES_UD_CFA_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4197 #define CQ_RES_UD_CFA_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4198 #define CQ_RES_UD_CFA_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4199 #define CQ_RES_UD_CFA_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4200 #define CQ_RES_UD_CFA_STATUS_HW_FLUSH_ERR 0x8UL 4201 #define CQ_RES_UD_CFA_STATUS_LAST CQ_RES_UD_CFA_STATUS_HW_FLUSH_ERR 4202 __le16 flags; 4203 #define CQ_RES_UD_CFA_FLAGS_SRQ 0x1UL 4204 #define CQ_RES_UD_CFA_FLAGS_SRQ_RQ 0x0UL 4205 #define CQ_RES_UD_CFA_FLAGS_SRQ_SRQ 0x1UL 4206 #define CQ_RES_UD_CFA_FLAGS_SRQ_LAST CQ_RES_UD_CFA_FLAGS_SRQ_SRQ 4207 #define CQ_RES_UD_CFA_FLAGS_IMM 0x2UL 4208 #define CQ_RES_UD_CFA_FLAGS_UNUSED_MASK 0xcUL 4209 #define CQ_RES_UD_CFA_FLAGS_UNUSED_SFT 2 4210 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_MASK 0x30UL 4211 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_SFT 4 4212 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V1 (0x0UL << 4) 4213 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV4 (0x2UL << 4) 4214 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV6 (0x3UL << 4) 4215 #define CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_LAST CQ_RES_UD_CFA_FLAGS_ROCE_IP_VER_V2IPV6 4216 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_MASK 0x3c0UL 4217 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_SFT 6 4218 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_NONE (0x0UL << 6) 4219 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_VLAN (0x1UL << 6) 4220 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_TUNNEL_ID (0x2UL << 6) 4221 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_CHDR_DATA (0x3UL << 6) 4222 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_HDR_OFFSET (0x4UL << 6) 4223 #define CQ_RES_UD_CFA_FLAGS_META_FORMAT_LAST CQ_RES_UD_CFA_FLAGS_META_FORMAT_HDR_OFFSET 4224 #define CQ_RES_UD_CFA_FLAGS_EXT_META_FORMAT_MASK 0xc00UL 4225 #define CQ_RES_UD_CFA_FLAGS_EXT_META_FORMAT_SFT 10 4226 __le32 src_qp_high_srq_or_rq_wr_id; 4227 #define CQ_RES_UD_CFA_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4228 #define CQ_RES_UD_CFA_SRQ_OR_RQ_WR_ID_SFT 0 4229 #define CQ_RES_UD_CFA_SRC_QP_HIGH_MASK 0xff000000UL 4230 #define CQ_RES_UD_CFA_SRC_QP_HIGH_SFT 24 4231 }; 4232 4233 /* cq_res_ud_cfa_v2 (size:256b/32B) */ 4234 struct cq_res_ud_cfa_v2 { 4235 __le16 length; 4236 #define CQ_RES_UD_CFA_V2_LENGTH_MASK 0x3fffUL 4237 #define CQ_RES_UD_CFA_V2_LENGTH_SFT 0 4238 __le16 cfa_metadata0; 4239 #define CQ_RES_UD_CFA_V2_CFA_METADATA0_VID_MASK 0xfffUL 4240 #define CQ_RES_UD_CFA_V2_CFA_METADATA0_VID_SFT 0 4241 #define CQ_RES_UD_CFA_V2_CFA_METADATA0_DE 0x1000UL 4242 #define CQ_RES_UD_CFA_V2_CFA_METADATA0_PRI_MASK 0xe000UL 4243 #define CQ_RES_UD_CFA_V2_CFA_METADATA0_PRI_SFT 13 4244 __le32 imm_data; 4245 __le32 qid; 4246 #define CQ_RES_UD_CFA_V2_QID_MASK 0xfffffUL 4247 #define CQ_RES_UD_CFA_V2_QID_SFT 0 4248 __le32 cfa_metadata2; 4249 __le16 src_mac[3]; 4250 __le16 src_qp_low; 4251 u8 cqe_type_toggle; 4252 #define CQ_RES_UD_CFA_V2_TOGGLE 0x1UL 4253 #define CQ_RES_UD_CFA_V2_CQE_TYPE_MASK 0x1eUL 4254 #define CQ_RES_UD_CFA_V2_CQE_TYPE_SFT 1 4255 #define CQ_RES_UD_CFA_V2_CQE_TYPE_RES_UD_CFA (0x4UL << 1) 4256 #define CQ_RES_UD_CFA_V2_CQE_TYPE_LAST CQ_RES_UD_CFA_V2_CQE_TYPE_RES_UD_CFA 4257 u8 status; 4258 #define CQ_RES_UD_CFA_V2_STATUS_OK 0x0UL 4259 #define CQ_RES_UD_CFA_V2_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4260 #define CQ_RES_UD_CFA_V2_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4261 #define CQ_RES_UD_CFA_V2_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4262 #define CQ_RES_UD_CFA_V2_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4263 #define CQ_RES_UD_CFA_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4264 #define CQ_RES_UD_CFA_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4265 #define CQ_RES_UD_CFA_V2_STATUS_HW_FLUSH_ERR 0x8UL 4266 #define CQ_RES_UD_CFA_V2_STATUS_LAST CQ_RES_UD_CFA_V2_STATUS_HW_FLUSH_ERR 4267 __le16 flags; 4268 #define CQ_RES_UD_CFA_V2_FLAGS_SRQ 0x1UL 4269 #define CQ_RES_UD_CFA_V2_FLAGS_SRQ_RQ 0x0UL 4270 #define CQ_RES_UD_CFA_V2_FLAGS_SRQ_SRQ 0x1UL 4271 #define CQ_RES_UD_CFA_V2_FLAGS_SRQ_LAST CQ_RES_UD_CFA_V2_FLAGS_SRQ_SRQ 4272 #define CQ_RES_UD_CFA_V2_FLAGS_IMM 0x2UL 4273 #define CQ_RES_UD_CFA_V2_FLAGS_UNUSED_MASK 0xcUL 4274 #define CQ_RES_UD_CFA_V2_FLAGS_UNUSED_SFT 2 4275 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_MASK 0x30UL 4276 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_SFT 4 4277 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V1 (0x0UL << 4) 4278 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV4 (0x2UL << 4) 4279 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV6 (0x3UL << 4) 4280 #define CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_LAST CQ_RES_UD_CFA_V2_FLAGS_ROCE_IP_VER_V2IPV6 4281 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_MASK 0x3c0UL 4282 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_SFT 6 4283 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_NONE (0x0UL << 6) 4284 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_ACT_REC_PTR (0x1UL << 6) 4285 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_TUNNEL_ID (0x2UL << 6) 4286 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_CHDR_DATA (0x3UL << 6) 4287 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_HDR_OFFSET (0x4UL << 6) 4288 #define CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_LAST \ 4289 CQ_RES_UD_CFA_V2_FLAGS_META_FORMAT_HDR_OFFSET 4290 __le32 src_qp_high_srq_or_rq_wr_id; 4291 #define CQ_RES_UD_CFA_V2_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4292 #define CQ_RES_UD_CFA_V2_SRQ_OR_RQ_WR_ID_SFT 0 4293 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_MASK 0xf00000UL 4294 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_SFT 20 4295 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_MASK 0x700000UL 4296 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_SFT 20 4297 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID88A8 (0x0UL << 20) 4298 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID8100 (0x1UL << 20) 4299 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9100 (0x2UL << 20) 4300 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9200 (0x3UL << 20) 4301 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPID9300 (0x4UL << 20) 4302 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPIDCFG (0x5UL << 20) 4303 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_LAST \ 4304 CQ_RES_UD_CFA_V2_CFA_METADATA1_TPID_SEL_TPIDCFG 4305 #define CQ_RES_UD_CFA_V2_CFA_METADATA1_VALID 0x800000UL 4306 #define CQ_RES_UD_CFA_V2_SRC_QP_HIGH_MASK 0xff000000UL 4307 #define CQ_RES_UD_CFA_V2_SRC_QP_HIGH_SFT 24 4308 }; 4309 4310 /* cq_res_raweth_qp1 (size:256b/32B) */ 4311 struct cq_res_raweth_qp1 { 4312 __le16 length; 4313 #define CQ_RES_RAWETH_QP1_LENGTH_MASK 0x3fffUL 4314 #define CQ_RES_RAWETH_QP1_LENGTH_SFT 0 4315 __le16 raweth_qp1_flags; 4316 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_MASK 0x3ffUL 4317 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_SFT 0 4318 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ERROR 0x1UL 4319 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_MASK 0x3c0UL 4320 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_SFT 6 4321 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_NOT_KNOWN (0x0UL << 6) 4322 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_IP (0x1UL << 6) 4323 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_TCP (0x2UL << 6) 4324 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_UDP (0x3UL << 6) 4325 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_FCOE (0x4UL << 6) 4326 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_ROCE (0x5UL << 6) 4327 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_ICMP (0x7UL << 6) 4328 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_WO_TIMESTAMP (0x8UL << 6) 4329 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP (0x9UL << 6) 4330 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_LAST \ 4331 CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP 4332 __le16 raweth_qp1_errors; 4333 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_IP_CS_ERROR 0x10UL 4334 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_L4_CS_ERROR 0x20UL 4335 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_IP_CS_ERROR 0x40UL 4336 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_L4_CS_ERROR 0x80UL 4337 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_CRC_ERROR 0x100UL 4338 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_MASK 0xe00UL 4339 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_SFT 9 4340 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_NO_ERROR (0x0UL << 9) 4341 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1UL << 9) 4342 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2UL << 9) 4343 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3UL << 9) 4344 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4UL << 9) 4345 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5UL << 9) 4346 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6UL << 9) 4347 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_LAST \ 4348 CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL 4349 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_MASK 0xf000UL 4350 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_SFT 12 4351 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_NO_ERROR (0x0UL << 12) 4352 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1UL << 12) 4353 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2UL << 12) 4354 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3UL << 12) 4355 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4UL << 12) 4356 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5UL << 12) 4357 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6UL << 12) 4358 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL (0x7UL << 12) 4359 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN (0x8UL << 12) 4360 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_LAST \ 4361 CQ_RES_RAWETH_QP1_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN 4362 __le16 raweth_qp1_cfa_code; 4363 __le64 qp_handle; 4364 __le32 raweth_qp1_flags2; 4365 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_IP_CS_CALC 0x1UL 4366 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_L4_CS_CALC 0x2UL 4367 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_T_IP_CS_CALC 0x4UL 4368 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_T_L4_CS_CALC 0x8UL 4369 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_MASK 0xf0UL 4370 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_SFT 4 4371 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_NONE (0x0UL << 4) 4372 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_VLAN (0x1UL << 4) 4373 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_TUNNEL_ID (0x2UL << 4) 4374 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_CHDR_DATA (0x3UL << 4) 4375 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET (0x4UL << 4) 4376 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_LAST \ 4377 CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET 4378 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_IP_TYPE 0x100UL 4379 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_CALC 0x200UL 4380 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_EXT_META_FORMAT_MASK 0xc00UL 4381 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_EXT_META_FORMAT_SFT 10 4382 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_MASK 0xffff0000UL 4383 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_SFT 16 4384 __le32 raweth_qp1_metadata; 4385 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_DE_VID_MASK 0xffffUL 4386 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_DE_VID_SFT 0 4387 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_VID_MASK 0xfffUL 4388 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_VID_SFT 0 4389 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_DE 0x1000UL 4390 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_MASK 0xe000UL 4391 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_PRI_SFT 13 4392 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_TPID_MASK 0xffff0000UL 4393 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_METADATA_TPID_SFT 16 4394 u8 cqe_type_toggle; 4395 #define CQ_RES_RAWETH_QP1_TOGGLE 0x1UL 4396 #define CQ_RES_RAWETH_QP1_CQE_TYPE_MASK 0x1eUL 4397 #define CQ_RES_RAWETH_QP1_CQE_TYPE_SFT 1 4398 #define CQ_RES_RAWETH_QP1_CQE_TYPE_RES_RAWETH_QP1 (0x3UL << 1) 4399 #define CQ_RES_RAWETH_QP1_CQE_TYPE_LAST CQ_RES_RAWETH_QP1_CQE_TYPE_RES_RAWETH_QP1 4400 u8 status; 4401 #define CQ_RES_RAWETH_QP1_STATUS_OK 0x0UL 4402 #define CQ_RES_RAWETH_QP1_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4403 #define CQ_RES_RAWETH_QP1_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4404 #define CQ_RES_RAWETH_QP1_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4405 #define CQ_RES_RAWETH_QP1_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4406 #define CQ_RES_RAWETH_QP1_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4407 #define CQ_RES_RAWETH_QP1_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4408 #define CQ_RES_RAWETH_QP1_STATUS_HW_FLUSH_ERR 0x8UL 4409 #define CQ_RES_RAWETH_QP1_STATUS_LAST CQ_RES_RAWETH_QP1_STATUS_HW_FLUSH_ERR 4410 __le16 flags; 4411 #define CQ_RES_RAWETH_QP1_FLAGS_SRQ 0x1UL 4412 #define CQ_RES_RAWETH_QP1_FLAGS_SRQ_RQ 0x0UL 4413 #define CQ_RES_RAWETH_QP1_FLAGS_SRQ_SRQ 0x1UL 4414 #define CQ_RES_RAWETH_QP1_FLAGS_SRQ_LAST CQ_RES_RAWETH_QP1_FLAGS_SRQ_SRQ 4415 __le32 raweth_qp1_payload_offset_srq_or_rq_wr_id; 4416 #define CQ_RES_RAWETH_QP1_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4417 #define CQ_RES_RAWETH_QP1_SRQ_OR_RQ_WR_ID_SFT 0 4418 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_PAYLOAD_OFFSET_MASK 0xff000000UL 4419 #define CQ_RES_RAWETH_QP1_RAWETH_QP1_PAYLOAD_OFFSET_SFT 24 4420 }; 4421 4422 /* cq_res_raweth_qp1_v2 (size:256b/32B) */ 4423 struct cq_res_raweth_qp1_v2 { 4424 __le16 length; 4425 #define CQ_RES_RAWETH_QP1_V2_LENGTH_MASK 0x3fffUL 4426 #define CQ_RES_RAWETH_QP1_V2_LENGTH_SFT 0 4427 __le16 raweth_qp1_flags; 4428 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_MASK 0x3ffUL 4429 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_SFT 0 4430 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ERROR 0x1UL 4431 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_MASK 0x3c0UL 4432 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_SFT 6 4433 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_NOT_KNOWN (0x0UL << 6) 4434 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_IP (0x1UL << 6) 4435 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_TCP (0x2UL << 6) 4436 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_UDP (0x3UL << 6) 4437 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_FCOE (0x4UL << 6) 4438 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_ROCE (0x5UL << 6) 4439 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_ICMP (0x7UL << 6) 4440 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_WO_TIMESTAMP (0x8UL << 6) 4441 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP (0x9UL << 6) 4442 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_LAST \ 4443 CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS_ITYPE_PTP_W_TIMESTAMP 4444 __le16 raweth_qp1_errors; 4445 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_IP_CS_ERROR 0x10UL 4446 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_L4_CS_ERROR 0x20UL 4447 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_IP_CS_ERROR 0x40UL 4448 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_L4_CS_ERROR 0x80UL 4449 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_CRC_ERROR 0x100UL 4450 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_MASK 0xe00UL 4451 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_SFT 9 4452 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_NO_ERROR (0x0UL << 9) 4453 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_VERSION (0x1UL << 9) 4454 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_HDR_LEN (0x2UL << 9) 4455 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_TUNNEL_TOTAL_ERROR (0x3UL << 9) 4456 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_IP_TOTAL_ERROR (0x4UL << 9) 4457 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_UDP_TOTAL_ERROR (0x5UL << 9) 4458 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL (0x6UL << 9) 4459 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_LAST \ 4460 CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_T_PKT_ERROR_T_L3_BAD_TTL 4461 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_MASK 0xf000UL 4462 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_SFT 12 4463 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_NO_ERROR (0x0UL << 12) 4464 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_VERSION (0x1UL << 12) 4465 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_HDR_LEN (0x2UL << 12) 4466 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L3_BAD_TTL (0x3UL << 12) 4467 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_IP_TOTAL_ERROR (0x4UL << 12) 4468 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_UDP_TOTAL_ERROR (0x5UL << 12) 4469 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN (0x6UL << 12) 4470 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_HDR_LEN_TOO_SMALL \ 4471 (0x7UL << 12) 4472 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN \ 4473 (0x8UL << 12) 4474 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_LAST \ 4475 CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_ERRORS_PKT_ERROR_L4_BAD_OPT_LEN 4476 __le16 cfa_metadata0; 4477 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_VID_MASK 0xfffUL 4478 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_VID_SFT 0 4479 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_DE 0x1000UL 4480 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_PRI_MASK 0xe000UL 4481 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA0_PRI_SFT 13 4482 __le64 qp_handle; 4483 __le32 raweth_qp1_flags2; 4484 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_ALL_OK_MODE 0x8UL 4485 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_MASK 0xf0UL 4486 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_SFT 4 4487 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_NONE (0x0UL << 4) 4488 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_ACT_REC_PTR (0x1UL << 4) 4489 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_TUNNEL_ID (0x2UL << 4) 4490 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_CHDR_DATA (0x3UL << 4) 4491 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET (0x4UL << 4) 4492 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_LAST \ 4493 CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_META_FORMAT_HDR_OFFSET 4494 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_IP_TYPE 0x100UL 4495 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_CALC 0x200UL 4496 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_OK_MASK 0xfc00UL 4497 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_CS_OK_SFT 10 4498 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_MASK 0xffff0000UL 4499 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_FLAGS2_COMPLETE_CHECKSUM_SFT 16 4500 __le32 cfa_metadata2; 4501 u8 cqe_type_toggle; 4502 #define CQ_RES_RAWETH_QP1_V2_TOGGLE 0x1UL 4503 #define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_MASK 0x1eUL 4504 #define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_SFT 1 4505 #define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_RES_RAWETH_QP1 (0x3UL << 1) 4506 #define CQ_RES_RAWETH_QP1_V2_CQE_TYPE_LAST CQ_RES_RAWETH_QP1_V2_CQE_TYPE_RES_RAWETH_QP1 4507 u8 status; 4508 #define CQ_RES_RAWETH_QP1_V2_STATUS_OK 0x0UL 4509 #define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_ACCESS_ERROR 0x1UL 4510 #define CQ_RES_RAWETH_QP1_V2_STATUS_HW_LOCAL_LENGTH_ERR 0x2UL 4511 #define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_PROTECTION_ERR 0x3UL 4512 #define CQ_RES_RAWETH_QP1_V2_STATUS_LOCAL_QP_OPERATION_ERR 0x4UL 4513 #define CQ_RES_RAWETH_QP1_V2_STATUS_MEMORY_MGT_OPERATION_ERR 0x5UL 4514 #define CQ_RES_RAWETH_QP1_V2_STATUS_WORK_REQUEST_FLUSHED_ERR 0x7UL 4515 #define CQ_RES_RAWETH_QP1_V2_STATUS_HW_FLUSH_ERR 0x8UL 4516 #define CQ_RES_RAWETH_QP1_V2_STATUS_LAST CQ_RES_RAWETH_QP1_V2_STATUS_HW_FLUSH_ERR 4517 __le16 flags; 4518 #define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ 0x1UL 4519 #define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_RQ 0x0UL 4520 #define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_SRQ 0x1UL 4521 #define CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_LAST CQ_RES_RAWETH_QP1_V2_FLAGS_SRQ_SRQ 4522 __le32 raweth_qp1_payload_offset_srq_or_rq_wr_id; 4523 #define CQ_RES_RAWETH_QP1_V2_SRQ_OR_RQ_WR_ID_MASK 0xfffffUL 4524 #define CQ_RES_RAWETH_QP1_V2_SRQ_OR_RQ_WR_ID_SFT 0 4525 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_MASK 0xf00000UL 4526 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_SFT 20 4527 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_MASK 0x700000UL 4528 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_SFT 20 4529 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID88A8 (0x0UL << 20) 4530 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID8100 (0x1UL << 20) 4531 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9100 (0x2UL << 20) 4532 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9200 (0x3UL << 20) 4533 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPID9300 (0x4UL << 20) 4534 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPIDCFG (0x5UL << 20) 4535 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_LAST \ 4536 CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_TPID_SEL_TPIDCFG 4537 #define CQ_RES_RAWETH_QP1_V2_CFA_METADATA1_VALID 0x800000UL 4538 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_PAYLOAD_OFFSET_MASK 0xff000000UL 4539 #define CQ_RES_RAWETH_QP1_V2_RAWETH_QP1_PAYLOAD_OFFSET_SFT 24 4540 }; 4541 4542 /* cq_terminal (size:256b/32B) */ 4543 struct cq_terminal { 4544 __le64 qp_handle; 4545 __le16 sq_cons_idx; 4546 __le16 rq_cons_idx; 4547 __le32 reserved32_1; 4548 __le64 reserved64_3; 4549 u8 cqe_type_toggle; 4550 #define CQ_TERMINAL_TOGGLE 0x1UL 4551 #define CQ_TERMINAL_CQE_TYPE_MASK 0x1eUL 4552 #define CQ_TERMINAL_CQE_TYPE_SFT 1 4553 #define CQ_TERMINAL_CQE_TYPE_TERMINAL (0xeUL << 1) 4554 #define CQ_TERMINAL_CQE_TYPE_LAST CQ_TERMINAL_CQE_TYPE_TERMINAL 4555 u8 status; 4556 #define CQ_TERMINAL_STATUS_OK 0x0UL 4557 #define CQ_TERMINAL_STATUS_LAST CQ_TERMINAL_STATUS_OK 4558 __le16 reserved16; 4559 __le32 reserved32_2; 4560 }; 4561 4562 /* cq_cutoff (size:256b/32B) */ 4563 struct cq_cutoff { 4564 __le64 reserved64_1; 4565 __le64 reserved64_2; 4566 __le64 reserved64_3; 4567 u8 cqe_type_toggle; 4568 #define CQ_CUTOFF_TOGGLE 0x1UL 4569 #define CQ_CUTOFF_CQE_TYPE_MASK 0x1eUL 4570 #define CQ_CUTOFF_CQE_TYPE_SFT 1 4571 #define CQ_CUTOFF_CQE_TYPE_CUT_OFF (0xfUL << 1) 4572 #define CQ_CUTOFF_CQE_TYPE_LAST CQ_CUTOFF_CQE_TYPE_CUT_OFF 4573 #define CQ_CUTOFF_RESIZE_TOGGLE_MASK 0x60UL 4574 #define CQ_CUTOFF_RESIZE_TOGGLE_SFT 5 4575 u8 status; 4576 #define CQ_CUTOFF_STATUS_OK 0x0UL 4577 #define CQ_CUTOFF_STATUS_LAST CQ_CUTOFF_STATUS_OK 4578 __le16 reserved16; 4579 __le32 reserved32; 4580 }; 4581 4582 /* nq_base (size:128b/16B) */ 4583 struct nq_base { 4584 __le16 info10_type; 4585 #define NQ_BASE_TYPE_MASK 0x3fUL 4586 #define NQ_BASE_TYPE_SFT 0 4587 #define NQ_BASE_TYPE_CQ_NOTIFICATION 0x30UL 4588 #define NQ_BASE_TYPE_SRQ_EVENT 0x32UL 4589 #define NQ_BASE_TYPE_DBQ_EVENT 0x34UL 4590 #define NQ_BASE_TYPE_QP_EVENT 0x38UL 4591 #define NQ_BASE_TYPE_FUNC_EVENT 0x3aUL 4592 #define NQ_BASE_TYPE_LAST NQ_BASE_TYPE_FUNC_EVENT 4593 #define NQ_BASE_INFO10_MASK 0xffc0UL 4594 #define NQ_BASE_INFO10_SFT 6 4595 __le16 info16; 4596 __le32 info32; 4597 __le32 info63_v[2]; 4598 #define NQ_BASE_V 0x1UL 4599 #define NQ_BASE_INFO63_MASK 0xfffffffeUL 4600 #define NQ_BASE_INFO63_SFT 1 4601 }; 4602 4603 /* nq_cn (size:128b/16B) */ 4604 struct nq_cn { 4605 __le16 type; 4606 #define NQ_CN_TYPE_MASK 0x3fUL 4607 #define NQ_CN_TYPE_SFT 0 4608 #define NQ_CN_TYPE_CQ_NOTIFICATION 0x30UL 4609 #define NQ_CN_TYPE_LAST NQ_CN_TYPE_CQ_NOTIFICATION 4610 #define NQ_CN_TOGGLE_MASK 0xc0UL 4611 #define NQ_CN_TOGGLE_SFT 6 4612 __le16 reserved16; 4613 __le32 cq_handle_low; 4614 __le32 v; 4615 #define NQ_CN_V 0x1UL 4616 __le32 cq_handle_high; 4617 }; 4618 4619 /* nq_srq_event (size:128b/16B) */ 4620 struct nq_srq_event { 4621 u8 type; 4622 #define NQ_SRQ_EVENT_TYPE_MASK 0x3fUL 4623 #define NQ_SRQ_EVENT_TYPE_SFT 0 4624 #define NQ_SRQ_EVENT_TYPE_SRQ_EVENT 0x32UL 4625 #define NQ_SRQ_EVENT_TYPE_LAST NQ_SRQ_EVENT_TYPE_SRQ_EVENT 4626 #define NQ_SRQ_EVENT_TOGGLE_MASK 0xc0UL 4627 #define NQ_SRQ_EVENT_TOGGLE_SFT 6 4628 u8 event; 4629 #define NQ_SRQ_EVENT_EVENT_SRQ_THRESHOLD_EVENT 0x1UL 4630 #define NQ_SRQ_EVENT_EVENT_LAST NQ_SRQ_EVENT_EVENT_SRQ_THRESHOLD_EVENT 4631 __le16 reserved16; 4632 __le32 srq_handle_low; 4633 __le32 v; 4634 #define NQ_SRQ_EVENT_V 0x1UL 4635 __le32 srq_handle_high; 4636 }; 4637 4638 /* nq_dbq_event (size:128b/16B) */ 4639 struct nq_dbq_event { 4640 u8 type; 4641 #define NQ_DBQ_EVENT_TYPE_MASK 0x3fUL 4642 #define NQ_DBQ_EVENT_TYPE_SFT 0 4643 #define NQ_DBQ_EVENT_TYPE_DBQ_EVENT 0x34UL 4644 #define NQ_DBQ_EVENT_TYPE_LAST NQ_DBQ_EVENT_TYPE_DBQ_EVENT 4645 u8 event; 4646 #define NQ_DBQ_EVENT_EVENT_DBQ_THRESHOLD_EVENT 0x1UL 4647 #define NQ_DBQ_EVENT_EVENT_LAST NQ_DBQ_EVENT_EVENT_DBQ_THRESHOLD_EVENT 4648 __le16 db_pfid; 4649 #define NQ_DBQ_EVENT_DB_PFID_MASK 0xfUL 4650 #define NQ_DBQ_EVENT_DB_PFID_SFT 0 4651 __le32 db_dpi; 4652 #define NQ_DBQ_EVENT_DB_DPI_MASK 0xfffffUL 4653 #define NQ_DBQ_EVENT_DB_DPI_SFT 0 4654 __le32 v; 4655 #define NQ_DBQ_EVENT_V 0x1UL 4656 __le32 db_type_db_xid; 4657 #define NQ_DBQ_EVENT_DB_XID_MASK 0xfffffUL 4658 #define NQ_DBQ_EVENT_DB_XID_SFT 0 4659 #define NQ_DBQ_EVENT_DB_TYPE_MASK 0xf0000000UL 4660 #define NQ_DBQ_EVENT_DB_TYPE_SFT 28 4661 }; 4662 4663 /* xrrq_irrq (size:256b/32B) */ 4664 struct xrrq_irrq { 4665 __le16 credits_type; 4666 #define XRRQ_IRRQ_TYPE 0x1UL 4667 #define XRRQ_IRRQ_TYPE_READ_REQ 0x0UL 4668 #define XRRQ_IRRQ_TYPE_ATOMIC_REQ 0x1UL 4669 #define XRRQ_IRRQ_TYPE_LAST XRRQ_IRRQ_TYPE_ATOMIC_REQ 4670 #define XRRQ_IRRQ_CREDITS_MASK 0xf800UL 4671 #define XRRQ_IRRQ_CREDITS_SFT 11 4672 __le16 reserved16; 4673 __le32 reserved32; 4674 __le32 psn; 4675 #define XRRQ_IRRQ_PSN_MASK 0xffffffUL 4676 #define XRRQ_IRRQ_PSN_SFT 0 4677 __le32 msn; 4678 #define XRRQ_IRRQ_MSN_MASK 0xffffffUL 4679 #define XRRQ_IRRQ_MSN_SFT 0 4680 __le64 va_or_atomic_result; 4681 __le32 rdma_r_key; 4682 __le32 length; 4683 }; 4684 4685 /* xrrq_orrq (size:256b/32B) */ 4686 struct xrrq_orrq { 4687 __le16 num_sges_type; 4688 #define XRRQ_ORRQ_TYPE 0x1UL 4689 #define XRRQ_ORRQ_TYPE_READ_REQ 0x0UL 4690 #define XRRQ_ORRQ_TYPE_ATOMIC_REQ 0x1UL 4691 #define XRRQ_ORRQ_TYPE_LAST XRRQ_ORRQ_TYPE_ATOMIC_REQ 4692 #define XRRQ_ORRQ_NUM_SGES_MASK 0xf800UL 4693 #define XRRQ_ORRQ_NUM_SGES_SFT 11 4694 __le16 reserved16; 4695 __le32 length; 4696 __le32 psn; 4697 #define XRRQ_ORRQ_PSN_MASK 0xffffffUL 4698 #define XRRQ_ORRQ_PSN_SFT 0 4699 __le32 end_psn; 4700 #define XRRQ_ORRQ_END_PSN_MASK 0xffffffUL 4701 #define XRRQ_ORRQ_END_PSN_SFT 0 4702 __le64 first_sge_phy_or_sing_sge_va; 4703 __le32 single_sge_l_key; 4704 __le32 single_sge_size; 4705 }; 4706 4707 /* ptu_pte (size:64b/8B) */ 4708 struct ptu_pte { 4709 __le32 page_next_to_last_last_valid[2]; 4710 #define PTU_PTE_VALID 0x1UL 4711 #define PTU_PTE_LAST 0x2UL 4712 #define PTU_PTE_NEXT_TO_LAST 0x4UL 4713 #define PTU_PTE_UNUSED_MASK 0xff8UL 4714 #define PTU_PTE_UNUSED_SFT 3 4715 #define PTU_PTE_PAGE_MASK 0xfffff000UL 4716 #define PTU_PTE_PAGE_SFT 12 4717 }; 4718 4719 /* ptu_pde (size:64b/8B) */ 4720 struct ptu_pde { 4721 __le32 page_valid[2]; 4722 #define PTU_PDE_VALID 0x1UL 4723 #define PTU_PDE_UNUSED_MASK 0xffeUL 4724 #define PTU_PDE_UNUSED_SFT 1 4725 #define PTU_PDE_PAGE_MASK 0xfffff000UL 4726 #define PTU_PDE_PAGE_SFT 12 4727 }; 4728 4729 #endif /* ___BNXT_RE_HSI_H__ */ 4730