mlx5_ifc.h 201.0 KB
Newer Older
1
/*
2
 * Copyright (c) 2013-2015, Mellanox Technologies, Ltd.  All rights reserved.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 *
 * This software is available to you under a choice of one of two
 * licenses.  You may choose to be licensed under the terms of the GNU
 * General Public License (GPL) Version 2, available from the file
 * COPYING in the main directory of this source tree, or the
 * OpenIB.org BSD license below:
 *
 *     Redistribution and use in source and binary forms, with or
 *     without modification, are permitted provided that the following
 *     conditions are met:
 *
 *      - Redistributions of source code must retain the above
 *        copyright notice, this list of conditions and the following
 *        disclaimer.
 *
 *      - Redistributions in binary form must reproduce the above
 *        copyright notice, this list of conditions and the following
 *        disclaimer in the documentation and/or other materials
 *        provided with the distribution.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
31
*/
32 33 34
#ifndef MLX5_IFC_H
#define MLX5_IFC_H

35 36
#include "mlx5_ifc_fpga.h"

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
enum {
	MLX5_EVENT_TYPE_CODING_COMPLETION_EVENTS                   = 0x0,
	MLX5_EVENT_TYPE_CODING_PATH_MIGRATED_SUCCEEDED             = 0x1,
	MLX5_EVENT_TYPE_CODING_COMMUNICATION_ESTABLISHED           = 0x2,
	MLX5_EVENT_TYPE_CODING_SEND_QUEUE_DRAINED                  = 0x3,
	MLX5_EVENT_TYPE_CODING_LAST_WQE_REACHED                    = 0x13,
	MLX5_EVENT_TYPE_CODING_SRQ_LIMIT                           = 0x14,
	MLX5_EVENT_TYPE_CODING_DCT_ALL_CONNECTIONS_CLOSED          = 0x1c,
	MLX5_EVENT_TYPE_CODING_DCT_ACCESS_KEY_VIOLATION            = 0x1d,
	MLX5_EVENT_TYPE_CODING_CQ_ERROR                            = 0x4,
	MLX5_EVENT_TYPE_CODING_LOCAL_WQ_CATASTROPHIC_ERROR         = 0x5,
	MLX5_EVENT_TYPE_CODING_PATH_MIGRATION_FAILED               = 0x7,
	MLX5_EVENT_TYPE_CODING_PAGE_FAULT_EVENT                    = 0xc,
	MLX5_EVENT_TYPE_CODING_INVALID_REQUEST_LOCAL_WQ_ERROR      = 0x10,
	MLX5_EVENT_TYPE_CODING_LOCAL_ACCESS_VIOLATION_WQ_ERROR     = 0x11,
	MLX5_EVENT_TYPE_CODING_LOCAL_SRQ_CATASTROPHIC_ERROR        = 0x12,
	MLX5_EVENT_TYPE_CODING_INTERNAL_ERROR                      = 0x8,
	MLX5_EVENT_TYPE_CODING_PORT_STATE_CHANGE                   = 0x9,
	MLX5_EVENT_TYPE_CODING_GPIO_EVENT                          = 0x15,
	MLX5_EVENT_TYPE_CODING_REMOTE_CONFIGURATION_PROTOCOL_EVENT = 0x19,
	MLX5_EVENT_TYPE_CODING_DOORBELL_BLUEFLAME_CONGESTION_EVENT = 0x1a,
	MLX5_EVENT_TYPE_CODING_STALL_VL_EVENT                      = 0x1b,
	MLX5_EVENT_TYPE_CODING_DROPPED_PACKET_LOGGED_EVENT         = 0x1f,
	MLX5_EVENT_TYPE_CODING_COMMAND_INTERFACE_COMPLETION        = 0xa,
61 62
	MLX5_EVENT_TYPE_CODING_PAGE_REQUEST                        = 0xb,
	MLX5_EVENT_TYPE_CODING_FPGA_ERROR                          = 0x20,
63 64 65 66 67 68 69 70 71
};

enum {
	MLX5_MODIFY_TIR_BITMASK_LRO                   = 0x0,
	MLX5_MODIFY_TIR_BITMASK_INDIRECT_TABLE        = 0x1,
	MLX5_MODIFY_TIR_BITMASK_HASH                  = 0x2,
	MLX5_MODIFY_TIR_BITMASK_TUNNELED_OFFLOAD_EN   = 0x3
};

72 73 74 75 76
enum {
	MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE        = 0x0,
	MLX5_SET_HCA_CAP_OP_MOD_ATOMIC                = 0x3,
};

77 78 79 80 81 82 83 84 85 86
enum {
	MLX5_CMD_OP_QUERY_HCA_CAP                 = 0x100,
	MLX5_CMD_OP_QUERY_ADAPTER                 = 0x101,
	MLX5_CMD_OP_INIT_HCA                      = 0x102,
	MLX5_CMD_OP_TEARDOWN_HCA                  = 0x103,
	MLX5_CMD_OP_ENABLE_HCA                    = 0x104,
	MLX5_CMD_OP_DISABLE_HCA                   = 0x105,
	MLX5_CMD_OP_QUERY_PAGES                   = 0x107,
	MLX5_CMD_OP_MANAGE_PAGES                  = 0x108,
	MLX5_CMD_OP_SET_HCA_CAP                   = 0x109,
87 88
	MLX5_CMD_OP_QUERY_ISSI                    = 0x10a,
	MLX5_CMD_OP_SET_ISSI                      = 0x10b,
89
	MLX5_CMD_OP_SET_DRIVER_VERSION            = 0x10d,
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
	MLX5_CMD_OP_CREATE_MKEY                   = 0x200,
	MLX5_CMD_OP_QUERY_MKEY                    = 0x201,
	MLX5_CMD_OP_DESTROY_MKEY                  = 0x202,
	MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS        = 0x203,
	MLX5_CMD_OP_PAGE_FAULT_RESUME             = 0x204,
	MLX5_CMD_OP_CREATE_EQ                     = 0x301,
	MLX5_CMD_OP_DESTROY_EQ                    = 0x302,
	MLX5_CMD_OP_QUERY_EQ                      = 0x303,
	MLX5_CMD_OP_GEN_EQE                       = 0x304,
	MLX5_CMD_OP_CREATE_CQ                     = 0x400,
	MLX5_CMD_OP_DESTROY_CQ                    = 0x401,
	MLX5_CMD_OP_QUERY_CQ                      = 0x402,
	MLX5_CMD_OP_MODIFY_CQ                     = 0x403,
	MLX5_CMD_OP_CREATE_QP                     = 0x500,
	MLX5_CMD_OP_DESTROY_QP                    = 0x501,
	MLX5_CMD_OP_RST2INIT_QP                   = 0x502,
	MLX5_CMD_OP_INIT2RTR_QP                   = 0x503,
	MLX5_CMD_OP_RTR2RTS_QP                    = 0x504,
	MLX5_CMD_OP_RTS2RTS_QP                    = 0x505,
	MLX5_CMD_OP_SQERR2RTS_QP                  = 0x506,
	MLX5_CMD_OP_2ERR_QP                       = 0x507,
	MLX5_CMD_OP_2RST_QP                       = 0x50a,
	MLX5_CMD_OP_QUERY_QP                      = 0x50b,
113
	MLX5_CMD_OP_SQD_RTS_QP                    = 0x50c,
114 115 116 117 118 119 120
	MLX5_CMD_OP_INIT2INIT_QP                  = 0x50e,
	MLX5_CMD_OP_CREATE_PSV                    = 0x600,
	MLX5_CMD_OP_DESTROY_PSV                   = 0x601,
	MLX5_CMD_OP_CREATE_SRQ                    = 0x700,
	MLX5_CMD_OP_DESTROY_SRQ                   = 0x701,
	MLX5_CMD_OP_QUERY_SRQ                     = 0x702,
	MLX5_CMD_OP_ARM_RQ                        = 0x703,
121 122 123 124
	MLX5_CMD_OP_CREATE_XRC_SRQ                = 0x705,
	MLX5_CMD_OP_DESTROY_XRC_SRQ               = 0x706,
	MLX5_CMD_OP_QUERY_XRC_SRQ                 = 0x707,
	MLX5_CMD_OP_ARM_XRC_SRQ                   = 0x708,
125 126 127 128 129
	MLX5_CMD_OP_CREATE_DCT                    = 0x710,
	MLX5_CMD_OP_DESTROY_DCT                   = 0x711,
	MLX5_CMD_OP_DRAIN_DCT                     = 0x712,
	MLX5_CMD_OP_QUERY_DCT                     = 0x713,
	MLX5_CMD_OP_ARM_DCT_FOR_KEY_VIOLATION     = 0x714,
S
Saeed Mahameed 已提交
130 131 132 133
	MLX5_CMD_OP_CREATE_XRQ                    = 0x717,
	MLX5_CMD_OP_DESTROY_XRQ                   = 0x718,
	MLX5_CMD_OP_QUERY_XRQ                     = 0x719,
	MLX5_CMD_OP_ARM_XRQ                       = 0x71a,
134 135 136 137 138 139
	MLX5_CMD_OP_QUERY_VPORT_STATE             = 0x750,
	MLX5_CMD_OP_MODIFY_VPORT_STATE            = 0x751,
	MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT       = 0x752,
	MLX5_CMD_OP_MODIFY_ESW_VPORT_CONTEXT      = 0x753,
	MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT       = 0x754,
	MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT      = 0x755,
140
	MLX5_CMD_OP_QUERY_ROCE_ADDRESS            = 0x760,
141
	MLX5_CMD_OP_SET_ROCE_ADDRESS              = 0x761,
142 143 144 145
	MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT       = 0x762,
	MLX5_CMD_OP_MODIFY_HCA_VPORT_CONTEXT      = 0x763,
	MLX5_CMD_OP_QUERY_HCA_VPORT_GID           = 0x764,
	MLX5_CMD_OP_QUERY_HCA_VPORT_PKEY          = 0x765,
146 147 148 149
	MLX5_CMD_OP_QUERY_VPORT_COUNTER           = 0x770,
	MLX5_CMD_OP_ALLOC_Q_COUNTER               = 0x771,
	MLX5_CMD_OP_DEALLOC_Q_COUNTER             = 0x772,
	MLX5_CMD_OP_QUERY_Q_COUNTER               = 0x773,
150
	MLX5_CMD_OP_SET_PP_RATE_LIMIT             = 0x780,
S
Saeed Mahameed 已提交
151
	MLX5_CMD_OP_QUERY_RATE_LIMIT              = 0x781,
152 153 154 155 156 157
	MLX5_CMD_OP_CREATE_SCHEDULING_ELEMENT      = 0x782,
	MLX5_CMD_OP_DESTROY_SCHEDULING_ELEMENT     = 0x783,
	MLX5_CMD_OP_QUERY_SCHEDULING_ELEMENT       = 0x784,
	MLX5_CMD_OP_MODIFY_SCHEDULING_ELEMENT      = 0x785,
	MLX5_CMD_OP_CREATE_QOS_PARA_VPORT         = 0x786,
	MLX5_CMD_OP_DESTROY_QOS_PARA_VPORT        = 0x787,
158 159 160 161 162 163 164
	MLX5_CMD_OP_ALLOC_PD                      = 0x800,
	MLX5_CMD_OP_DEALLOC_PD                    = 0x801,
	MLX5_CMD_OP_ALLOC_UAR                     = 0x802,
	MLX5_CMD_OP_DEALLOC_UAR                   = 0x803,
	MLX5_CMD_OP_CONFIG_INT_MODERATION         = 0x804,
	MLX5_CMD_OP_ACCESS_REG                    = 0x805,
	MLX5_CMD_OP_ATTACH_TO_MCG                 = 0x806,
165
	MLX5_CMD_OP_DETACH_FROM_MCG               = 0x807,
166 167 168 169 170 171 172
	MLX5_CMD_OP_GET_DROPPED_PACKET_LOG        = 0x80a,
	MLX5_CMD_OP_MAD_IFC                       = 0x50d,
	MLX5_CMD_OP_QUERY_MAD_DEMUX               = 0x80b,
	MLX5_CMD_OP_SET_MAD_DEMUX                 = 0x80c,
	MLX5_CMD_OP_NOP                           = 0x80d,
	MLX5_CMD_OP_ALLOC_XRCD                    = 0x80e,
	MLX5_CMD_OP_DEALLOC_XRCD                  = 0x80f,
173 174 175 176 177 178 179 180 181 182 183 184
	MLX5_CMD_OP_ALLOC_TRANSPORT_DOMAIN        = 0x816,
	MLX5_CMD_OP_DEALLOC_TRANSPORT_DOMAIN      = 0x817,
	MLX5_CMD_OP_QUERY_CONG_STATUS             = 0x822,
	MLX5_CMD_OP_MODIFY_CONG_STATUS            = 0x823,
	MLX5_CMD_OP_QUERY_CONG_PARAMS             = 0x824,
	MLX5_CMD_OP_MODIFY_CONG_PARAMS            = 0x825,
	MLX5_CMD_OP_QUERY_CONG_STATISTICS         = 0x826,
	MLX5_CMD_OP_ADD_VXLAN_UDP_DPORT           = 0x827,
	MLX5_CMD_OP_DELETE_VXLAN_UDP_DPORT        = 0x828,
	MLX5_CMD_OP_SET_L2_TABLE_ENTRY            = 0x829,
	MLX5_CMD_OP_QUERY_L2_TABLE_ENTRY          = 0x82a,
	MLX5_CMD_OP_DELETE_L2_TABLE_ENTRY         = 0x82b,
T
Tariq Toukan 已提交
185 186
	MLX5_CMD_OP_SET_WOL_ROL                   = 0x830,
	MLX5_CMD_OP_QUERY_WOL_ROL                 = 0x831,
187 188 189 190 191 192
	MLX5_CMD_OP_CREATE_LAG                    = 0x840,
	MLX5_CMD_OP_MODIFY_LAG                    = 0x841,
	MLX5_CMD_OP_QUERY_LAG                     = 0x842,
	MLX5_CMD_OP_DESTROY_LAG                   = 0x843,
	MLX5_CMD_OP_CREATE_VPORT_LAG              = 0x844,
	MLX5_CMD_OP_DESTROY_VPORT_LAG             = 0x845,
193 194 195 196 197 198 199 200 201 202
	MLX5_CMD_OP_CREATE_TIR                    = 0x900,
	MLX5_CMD_OP_MODIFY_TIR                    = 0x901,
	MLX5_CMD_OP_DESTROY_TIR                   = 0x902,
	MLX5_CMD_OP_QUERY_TIR                     = 0x903,
	MLX5_CMD_OP_CREATE_SQ                     = 0x904,
	MLX5_CMD_OP_MODIFY_SQ                     = 0x905,
	MLX5_CMD_OP_DESTROY_SQ                    = 0x906,
	MLX5_CMD_OP_QUERY_SQ                      = 0x907,
	MLX5_CMD_OP_CREATE_RQ                     = 0x908,
	MLX5_CMD_OP_MODIFY_RQ                     = 0x909,
203
	MLX5_CMD_OP_SET_DELAY_DROP_PARAMS         = 0x910,
204 205 206 207 208 209
	MLX5_CMD_OP_DESTROY_RQ                    = 0x90a,
	MLX5_CMD_OP_QUERY_RQ                      = 0x90b,
	MLX5_CMD_OP_CREATE_RMP                    = 0x90c,
	MLX5_CMD_OP_MODIFY_RMP                    = 0x90d,
	MLX5_CMD_OP_DESTROY_RMP                   = 0x90e,
	MLX5_CMD_OP_QUERY_RMP                     = 0x90f,
210 211 212 213 214 215 216 217
	MLX5_CMD_OP_CREATE_TIS                    = 0x912,
	MLX5_CMD_OP_MODIFY_TIS                    = 0x913,
	MLX5_CMD_OP_DESTROY_TIS                   = 0x914,
	MLX5_CMD_OP_QUERY_TIS                     = 0x915,
	MLX5_CMD_OP_CREATE_RQT                    = 0x916,
	MLX5_CMD_OP_MODIFY_RQT                    = 0x917,
	MLX5_CMD_OP_DESTROY_RQT                   = 0x918,
	MLX5_CMD_OP_QUERY_RQT                     = 0x919,
218
	MLX5_CMD_OP_SET_FLOW_TABLE_ROOT		  = 0x92f,
219 220 221 222 223 224 225 226
	MLX5_CMD_OP_CREATE_FLOW_TABLE             = 0x930,
	MLX5_CMD_OP_DESTROY_FLOW_TABLE            = 0x931,
	MLX5_CMD_OP_QUERY_FLOW_TABLE              = 0x932,
	MLX5_CMD_OP_CREATE_FLOW_GROUP             = 0x933,
	MLX5_CMD_OP_DESTROY_FLOW_GROUP            = 0x934,
	MLX5_CMD_OP_QUERY_FLOW_GROUP              = 0x935,
	MLX5_CMD_OP_SET_FLOW_TABLE_ENTRY          = 0x936,
	MLX5_CMD_OP_QUERY_FLOW_TABLE_ENTRY        = 0x937,
227
	MLX5_CMD_OP_DELETE_FLOW_TABLE_ENTRY       = 0x938,
228 229 230
	MLX5_CMD_OP_ALLOC_FLOW_COUNTER            = 0x939,
	MLX5_CMD_OP_DEALLOC_FLOW_COUNTER          = 0x93a,
	MLX5_CMD_OP_QUERY_FLOW_COUNTER            = 0x93b,
231
	MLX5_CMD_OP_MODIFY_FLOW_TABLE             = 0x93c,
232 233
	MLX5_CMD_OP_ALLOC_ENCAP_HEADER            = 0x93d,
	MLX5_CMD_OP_DEALLOC_ENCAP_HEADER          = 0x93e,
234 235
	MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT   = 0x940,
	MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT = 0x941,
236 237 238 239 240
	MLX5_CMD_OP_FPGA_CREATE_QP                = 0x960,
	MLX5_CMD_OP_FPGA_MODIFY_QP                = 0x961,
	MLX5_CMD_OP_FPGA_QUERY_QP                 = 0x962,
	MLX5_CMD_OP_FPGA_DESTROY_QP               = 0x963,
	MLX5_CMD_OP_FPGA_QUERY_QP_COUNTERS        = 0x964,
241
	MLX5_CMD_OP_MAX
242 243 244 245 246 247
};

struct mlx5_ifc_flow_table_fields_supported_bits {
	u8         outer_dmac[0x1];
	u8         outer_smac[0x1];
	u8         outer_ether_type[0x1];
248
	u8         outer_ip_version[0x1];
249 250 251
	u8         outer_first_prio[0x1];
	u8         outer_first_cfi[0x1];
	u8         outer_first_vid[0x1];
252
	u8         outer_ipv4_ttl[0x1];
253 254 255
	u8         outer_second_prio[0x1];
	u8         outer_second_cfi[0x1];
	u8         outer_second_vid[0x1];
256
	u8         reserved_at_b[0x1];
257 258 259 260 261 262 263 264 265 266 267 268 269 270
	u8         outer_sip[0x1];
	u8         outer_dip[0x1];
	u8         outer_frag[0x1];
	u8         outer_ip_protocol[0x1];
	u8         outer_ip_ecn[0x1];
	u8         outer_ip_dscp[0x1];
	u8         outer_udp_sport[0x1];
	u8         outer_udp_dport[0x1];
	u8         outer_tcp_sport[0x1];
	u8         outer_tcp_dport[0x1];
	u8         outer_tcp_flags[0x1];
	u8         outer_gre_protocol[0x1];
	u8         outer_gre_key[0x1];
	u8         outer_vxlan_vni[0x1];
271
	u8         reserved_at_1a[0x5];
272 273 274 275 276
	u8         source_eswitch_port[0x1];

	u8         inner_dmac[0x1];
	u8         inner_smac[0x1];
	u8         inner_ether_type[0x1];
277
	u8         inner_ip_version[0x1];
278 279 280
	u8         inner_first_prio[0x1];
	u8         inner_first_cfi[0x1];
	u8         inner_first_vid[0x1];
281
	u8         reserved_at_27[0x1];
282 283 284
	u8         inner_second_prio[0x1];
	u8         inner_second_cfi[0x1];
	u8         inner_second_vid[0x1];
285
	u8         reserved_at_2b[0x1];
286 287 288 289 290 291 292 293 294 295 296
	u8         inner_sip[0x1];
	u8         inner_dip[0x1];
	u8         inner_frag[0x1];
	u8         inner_ip_protocol[0x1];
	u8         inner_ip_ecn[0x1];
	u8         inner_ip_dscp[0x1];
	u8         inner_udp_sport[0x1];
	u8         inner_udp_dport[0x1];
	u8         inner_tcp_sport[0x1];
	u8         inner_tcp_dport[0x1];
	u8         inner_tcp_flags[0x1];
297
	u8         reserved_at_37[0x9];
298 299 300
	u8         reserved_at_40[0x17];
	u8	   outer_esp_spi[0x1];
	u8	   reserved_at_58[0x2];
301
	u8         bth_dst_qp[0x1];
302

303
	u8         reserved_at_5b[0x25];
304 305 306 307
};

struct mlx5_ifc_flow_table_prop_layout_bits {
	u8         ft_support[0x1];
308 309
	u8         reserved_at_1[0x1];
	u8         flow_counter[0x1];
310
	u8	   flow_modify_en[0x1];
311
	u8         modify_root[0x1];
312 313
	u8         identified_miss_table_mode[0x1];
	u8         flow_table_modify[0x1];
314 315 316
	u8         encap[0x1];
	u8         decap[0x1];
	u8         reserved_at_9[0x17];
317

318
	u8         reserved_at_20[0x2];
319
	u8         log_max_ft_size[0x6];
320 321
	u8         log_max_modify_header_context[0x8];
	u8         max_modify_header_actions[0x8];
322 323
	u8         max_ft_level[0x8];

324
	u8         reserved_at_40[0x20];
325

326
	u8         reserved_at_60[0x18];
327 328
	u8         log_max_ft_num[0x8];

329
	u8         reserved_at_80[0x18];
330 331
	u8         log_max_destination[0x8];

332 333
	u8         log_max_flow_counter[0x8];
	u8         reserved_at_a8[0x10];
334 335
	u8         log_max_flow[0x8];

336
	u8         reserved_at_c0[0x40];
337 338 339 340 341 342 343 344 345 346 347

	struct mlx5_ifc_flow_table_fields_supported_bits ft_field_support;

	struct mlx5_ifc_flow_table_fields_supported_bits ft_field_bitmask_support;
};

struct mlx5_ifc_odp_per_transport_service_cap_bits {
	u8         send[0x1];
	u8         receive[0x1];
	u8         write[0x1];
	u8         read[0x1];
348
	u8         atomic[0x1];
349
	u8         srq_receive[0x1];
350
	u8         reserved_at_6[0x1a];
351 352
};

353
struct mlx5_ifc_ipv4_layout_bits {
354
	u8         reserved_at_0[0x60];
355 356 357 358 359 360 361 362 363 364 365

	u8         ipv4[0x20];
};

struct mlx5_ifc_ipv6_layout_bits {
	u8         ipv6[16][0x8];
};

union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits {
	struct mlx5_ifc_ipv6_layout_bits ipv6_layout;
	struct mlx5_ifc_ipv4_layout_bits ipv4_layout;
366
	u8         reserved_at_0[0x80];
367 368
};

369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384
struct mlx5_ifc_fte_match_set_lyr_2_4_bits {
	u8         smac_47_16[0x20];

	u8         smac_15_0[0x10];
	u8         ethertype[0x10];

	u8         dmac_47_16[0x20];

	u8         dmac_15_0[0x10];
	u8         first_prio[0x3];
	u8         first_cfi[0x1];
	u8         first_vid[0xc];

	u8         ip_protocol[0x8];
	u8         ip_dscp[0x6];
	u8         ip_ecn[0x2];
385 386
	u8         cvlan_tag[0x1];
	u8         svlan_tag[0x1];
387
	u8         frag[0x1];
388
	u8         ip_version[0x4];
389 390 391 392 393
	u8         tcp_flags[0x9];

	u8         tcp_sport[0x10];
	u8         tcp_dport[0x10];

394 395
	u8         reserved_at_c0[0x18];
	u8         ttl_hoplimit[0x8];
396 397 398 399

	u8         udp_sport[0x10];
	u8         udp_dport[0x10];

400
	union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits src_ipv4_src_ipv6;
401

402
	union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits dst_ipv4_dst_ipv6;
403 404 405
};

struct mlx5_ifc_fte_match_set_misc_bits {
S
Saeed Mahameed 已提交
406 407
	u8         reserved_at_0[0x8];
	u8         source_sqn[0x18];
408

409
	u8         reserved_at_20[0x10];
410 411 412 413 414 415 416 417 418
	u8         source_port[0x10];

	u8         outer_second_prio[0x3];
	u8         outer_second_cfi[0x1];
	u8         outer_second_vid[0xc];
	u8         inner_second_prio[0x3];
	u8         inner_second_cfi[0x1];
	u8         inner_second_vid[0xc];

419 420 421 422 423
	u8         outer_second_cvlan_tag[0x1];
	u8         inner_second_cvlan_tag[0x1];
	u8         outer_second_svlan_tag[0x1];
	u8         inner_second_svlan_tag[0x1];
	u8         reserved_at_64[0xc];
424 425 426 427 428 429
	u8         gre_protocol[0x10];

	u8         gre_key_h[0x18];
	u8         gre_key_l[0x8];

	u8         vxlan_vni[0x18];
430
	u8         reserved_at_b8[0x8];
431

432
	u8         reserved_at_c0[0x20];
433

434
	u8         reserved_at_e0[0xc];
435 436
	u8         outer_ipv6_flow_label[0x14];

437
	u8         reserved_at_100[0xc];
438 439
	u8         inner_ipv6_flow_label[0x14];

440 441
	u8         reserved_at_120[0x28];
	u8         bth_dst_qp[0x18];
442 443 444
	u8	   reserved_at_160[0x20];
	u8	   outer_esp_spi[0x20];
	u8         reserved_at_1a0[0x60];
445 446 447 448 449 450
};

struct mlx5_ifc_cmd_pas_bits {
	u8         pa_h[0x20];

	u8         pa_l[0x14];
451
	u8         reserved_at_34[0xc];
452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
};

struct mlx5_ifc_uint64_bits {
	u8         hi[0x20];

	u8         lo[0x20];
};

enum {
	MLX5_ADS_STAT_RATE_NO_LIMIT  = 0x0,
	MLX5_ADS_STAT_RATE_2_5GBPS   = 0x7,
	MLX5_ADS_STAT_RATE_10GBPS    = 0x8,
	MLX5_ADS_STAT_RATE_30GBPS    = 0x9,
	MLX5_ADS_STAT_RATE_5GBPS     = 0xa,
	MLX5_ADS_STAT_RATE_20GBPS    = 0xb,
	MLX5_ADS_STAT_RATE_40GBPS    = 0xc,
	MLX5_ADS_STAT_RATE_60GBPS    = 0xd,
	MLX5_ADS_STAT_RATE_80GBPS    = 0xe,
	MLX5_ADS_STAT_RATE_120GBPS   = 0xf,
};

struct mlx5_ifc_ads_bits {
	u8         fl[0x1];
	u8         free_ar[0x1];
476
	u8         reserved_at_2[0xe];
477 478
	u8         pkey_index[0x10];

479
	u8         reserved_at_20[0x8];
480 481 482 483 484
	u8         grh[0x1];
	u8         mlid[0x7];
	u8         rlid[0x10];

	u8         ack_timeout[0x5];
485
	u8         reserved_at_45[0x3];
486
	u8         src_addr_index[0x8];
487
	u8         reserved_at_50[0x4];
488 489 490
	u8         stat_rate[0x4];
	u8         hop_limit[0x8];

491
	u8         reserved_at_60[0x4];
492 493 494 495 496
	u8         tclass[0x8];
	u8         flow_label[0x14];

	u8         rgid_rip[16][0x8];

497
	u8         reserved_at_100[0x4];
498 499
	u8         f_dscp[0x1];
	u8         f_ecn[0x1];
500
	u8         reserved_at_106[0x1];
501 502 503 504 505 506 507 508
	u8         f_eth_prio[0x1];
	u8         ecn[0x2];
	u8         dscp[0x6];
	u8         udp_sport[0x10];

	u8         dei_cfi[0x1];
	u8         eth_prio[0x3];
	u8         sl[0x4];
509
	u8         vhca_port_num[0x8];
510 511 512 513 514 515
	u8         rmac_47_32[0x10];

	u8         rmac_31_0[0x20];
};

struct mlx5_ifc_flow_table_nic_cap_bits {
516
	u8         nic_rx_multi_path_tirs[0x1];
517 518 519
	u8         nic_rx_multi_path_tirs_fts[0x1];
	u8         allow_sniffer_and_nic_rx_shared_tir[0x1];
	u8         reserved_at_3[0x1fd];
520 521 522

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_receive;

523
	u8         reserved_at_400[0x200];
524 525 526 527 528

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_receive_sniffer;

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit;

529
	u8         reserved_at_a00[0x200];
530 531 532

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit_sniffer;

533
	u8         reserved_at_e00[0x7200];
534 535
};

536
struct mlx5_ifc_flow_table_eswitch_cap_bits {
537
	u8     reserved_at_0[0x200];
538 539 540 541 542 543 544

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_esw_fdb;

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_esw_acl_ingress;

	struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_esw_acl_egress;

545
	u8      reserved_at_800[0x7800];
546 547
};

548 549 550 551 552 553
struct mlx5_ifc_e_switch_cap_bits {
	u8         vport_svlan_strip[0x1];
	u8         vport_cvlan_strip[0x1];
	u8         vport_svlan_insert[0x1];
	u8         vport_cvlan_insert_if_not_exist[0x1];
	u8         vport_cvlan_insert_overwrite[0x1];
554 555 556
	u8         reserved_at_5[0x19];
	u8         nic_vport_node_guid_modify[0x1];
	u8         nic_vport_port_guid_modify[0x1];
557

558 559 560 561 562 563 564 565 566
	u8         vxlan_encap_decap[0x1];
	u8         nvgre_encap_decap[0x1];
	u8         reserved_at_22[0x9];
	u8         log_max_encap_headers[0x5];
	u8         reserved_2b[0x6];
	u8         max_encap_header_size[0xa];

	u8         reserved_40[0x7c0];

567 568
};

S
Saeed Mahameed 已提交
569 570
struct mlx5_ifc_qos_cap_bits {
	u8         packet_pacing[0x1];
571
	u8         esw_scheduling[0x1];
572 573
	u8         esw_bw_share[0x1];
	u8         esw_rate_limit[0x1];
574 575 576 577
	u8         reserved_at_4[0x1];
	u8         packet_pacing_burst_bound[0x1];
	u8         packet_pacing_typical_size[0x1];
	u8         reserved_at_7[0x19];
578 579 580

	u8         reserved_at_20[0x20];

S
Saeed Mahameed 已提交
581
	u8         packet_pacing_max_rate[0x20];
582

S
Saeed Mahameed 已提交
583
	u8         packet_pacing_min_rate[0x20];
584 585

	u8         reserved_at_80[0x10];
S
Saeed Mahameed 已提交
586
	u8         packet_pacing_rate_table_size[0x10];
587 588 589 590 591 592 593 594 595 596

	u8         esw_element_type[0x10];
	u8         esw_tsar_type[0x10];

	u8         reserved_at_c0[0x10];
	u8         max_qos_para_vport[0x10];

	u8         max_tsar_bw_share[0x20];

	u8         reserved_at_100[0x700];
S
Saeed Mahameed 已提交
597 598
};

599 600 601 602 603 604
struct mlx5_ifc_per_protocol_networking_offload_caps_bits {
	u8         csum_cap[0x1];
	u8         vlan_cap[0x1];
	u8         lro_cap[0x1];
	u8         lro_psh_flag[0x1];
	u8         lro_time_stamp[0x1];
S
Saeed Mahameed 已提交
605 606
	u8         reserved_at_5[0x2];
	u8         wqe_vlan_insert[0x1];
607
	u8         self_lb_en_modifiable[0x1];
608
	u8         reserved_at_9[0x2];
609
	u8         max_lso_cap[0x5];
610
	u8         multi_pkt_send_wqe[0x2];
611
	u8	   wqe_inline_mode[0x2];
612
	u8         rss_ind_tbl_cap[0x4];
613 614
	u8         reg_umr_sq[0x1];
	u8         scatter_fcs[0x1];
615
	u8         enhanced_multi_pkt_send_wqe[0x1];
616
	u8         tunnel_lso_const_out_ip_id[0x1];
617
	u8         reserved_at_1c[0x2];
618
	u8         tunnel_stateless_gre[0x1];
619 620
	u8         tunnel_stateless_vxlan[0x1];

621 622 623
	u8         swp[0x1];
	u8         swp_csum[0x1];
	u8         swp_lso[0x1];
624 625 626
	u8         reserved_at_23[0x1b];
	u8         max_geneve_opt_len[0x1];
	u8         tunnel_stateless_geneve_rx[0x1];
627

628
	u8         reserved_at_40[0x10];
629 630
	u8         lro_min_mss_size[0x10];

631
	u8         reserved_at_60[0x120];
632 633 634

	u8         lro_timer_supported_periods[4][0x20];

635
	u8         reserved_at_200[0x600];
636 637 638 639
};

struct mlx5_ifc_roce_cap_bits {
	u8         roce_apm[0x1];
640
	u8         reserved_at_1[0x1f];
641

642
	u8         reserved_at_20[0x60];
643

644
	u8         reserved_at_80[0xc];
645
	u8         l3_type[0x4];
646
	u8         reserved_at_90[0x8];
647 648
	u8         roce_version[0x8];

649
	u8         reserved_at_a0[0x10];
650 651 652 653 654
	u8         r_roce_dest_udp_port[0x10];

	u8         r_roce_max_src_udp_port[0x10];
	u8         r_roce_min_src_udp_port[0x10];

655
	u8         reserved_at_e0[0x10];
656 657
	u8         roce_address_table_size[0x10];

658
	u8         reserved_at_100[0x700];
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685
};

enum {
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_1_BYTE     = 0x0,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_2_BYTES    = 0x2,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_4_BYTES    = 0x4,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_8_BYTES    = 0x8,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_16_BYTES   = 0x10,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_32_BYTES   = 0x20,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_64_BYTES   = 0x40,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_128_BYTES  = 0x80,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_256_BYTES  = 0x100,
};

enum {
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_1_BYTE     = 0x1,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_2_BYTES    = 0x2,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_4_BYTES    = 0x4,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_8_BYTES    = 0x8,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_16_BYTES   = 0x10,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_32_BYTES   = 0x20,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_64_BYTES   = 0x40,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_128_BYTES  = 0x80,
	MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_256_BYTES  = 0x100,
};

struct mlx5_ifc_atomic_caps_bits {
686
	u8         reserved_at_0[0x40];
687

688
	u8         atomic_req_8B_endianness_mode[0x2];
689
	u8         reserved_at_42[0x4];
690
	u8         supported_atomic_req_8B_endianness_mode_1[0x1];
691

692
	u8         reserved_at_47[0x19];
693

694
	u8         reserved_at_60[0x20];
695

696
	u8         reserved_at_80[0x10];
697
	u8         atomic_operations[0x10];
698

699
	u8         reserved_at_a0[0x10];
700 701
	u8         atomic_size_qp[0x10];

702
	u8         reserved_at_c0[0x10];
703 704
	u8         atomic_size_dc[0x10];

705
	u8         reserved_at_e0[0x720];
706 707 708
};

struct mlx5_ifc_odp_cap_bits {
709
	u8         reserved_at_0[0x40];
710 711

	u8         sig[0x1];
712
	u8         reserved_at_41[0x1f];
713

714
	u8         reserved_at_60[0x20];
715 716 717 718 719 720 721

	struct mlx5_ifc_odp_per_transport_service_cap_bits rc_odp_caps;

	struct mlx5_ifc_odp_per_transport_service_cap_bits uc_odp_caps;

	struct mlx5_ifc_odp_per_transport_service_cap_bits ud_odp_caps;

722
	u8         reserved_at_e0[0x720];
723 724
};

725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751
struct mlx5_ifc_calc_op {
	u8        reserved_at_0[0x10];
	u8        reserved_at_10[0x9];
	u8        op_swap_endianness[0x1];
	u8        op_min[0x1];
	u8        op_xor[0x1];
	u8        op_or[0x1];
	u8        op_and[0x1];
	u8        op_max[0x1];
	u8        op_add[0x1];
};

struct mlx5_ifc_vector_calc_cap_bits {
	u8         calc_matrix[0x1];
	u8         reserved_at_1[0x1f];
	u8         reserved_at_20[0x8];
	u8         max_vec_count[0x8];
	u8         reserved_at_30[0xd];
	u8         max_chunk_size[0x3];
	struct mlx5_ifc_calc_op calc0;
	struct mlx5_ifc_calc_op calc1;
	struct mlx5_ifc_calc_op calc2;
	struct mlx5_ifc_calc_op calc3;

	u8         reserved_at_e0[0x720];
};

752 753 754
enum {
	MLX5_WQ_TYPE_LINKED_LIST  = 0x0,
	MLX5_WQ_TYPE_CYCLIC       = 0x1,
755
	MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ = 0x2,
756
	MLX5_WQ_TYPE_CYCLIC_STRIDING_RQ = 0x3,
757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794
};

enum {
	MLX5_WQ_END_PAD_MODE_NONE   = 0x0,
	MLX5_WQ_END_PAD_MODE_ALIGN  = 0x1,
};

enum {
	MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_8_GID_ENTRIES    = 0x0,
	MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_16_GID_ENTRIES   = 0x1,
	MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_32_GID_ENTRIES   = 0x2,
	MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_64_GID_ENTRIES   = 0x3,
	MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_128_GID_ENTRIES  = 0x4,
};

enum {
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_128_ENTRIES  = 0x0,
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_256_ENTRIES  = 0x1,
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_512_ENTRIES  = 0x2,
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_1K_ENTRIES   = 0x3,
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_2K_ENTRIES   = 0x4,
	MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_4K_ENTRIES   = 0x5,
};

enum {
	MLX5_CMD_HCA_CAP_PORT_TYPE_IB        = 0x0,
	MLX5_CMD_HCA_CAP_PORT_TYPE_ETHERNET  = 0x1,
};

enum {
	MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_DISABLED       = 0x0,
	MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_INITIAL_STATE  = 0x1,
	MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_ENABLED        = 0x3,
};

enum {
	MLX5_CAP_PORT_TYPE_IB  = 0x0,
	MLX5_CAP_PORT_TYPE_ETH = 0x1,
795 796
};

797 798 799 800 801 802
enum {
	MLX5_CAP_UMR_FENCE_STRONG	= 0x0,
	MLX5_CAP_UMR_FENCE_SMALL	= 0x1,
	MLX5_CAP_UMR_FENCE_NONE		= 0x2,
};

803
struct mlx5_ifc_cmd_hca_cap_bits {
804 805 806 807
	u8         reserved_at_0[0x30];
	u8         vhca_id[0x10];

	u8         reserved_at_40[0x40];
808 809 810

	u8         log_max_srq_sz[0x8];
	u8         log_max_qp_sz[0x8];
811
	u8         reserved_at_90[0xb];
812 813
	u8         log_max_qp[0x5];

814
	u8         reserved_at_a0[0xb];
815
	u8         log_max_srq[0x5];
816
	u8         reserved_at_b0[0x10];
817

818
	u8         reserved_at_c0[0x8];
819
	u8         log_max_cq_sz[0x8];
820
	u8         reserved_at_d0[0xb];
821 822 823
	u8         log_max_cq[0x5];

	u8         log_max_eq_sz[0x8];
824
	u8         reserved_at_e8[0x2];
825
	u8         log_max_mkey[0x6];
826
	u8         reserved_at_f0[0xc];
827 828 829
	u8         log_max_eq[0x4];

	u8         max_indirection[0x8];
830
	u8         fixed_buffer_size[0x1];
831
	u8         log_max_mrw_sz[0x7];
832 833
	u8         force_teardown[0x1];
	u8         reserved_at_111[0x1];
834
	u8         log_max_bsf_list_size[0x6];
835 836
	u8         umr_extended_translation_offset[0x1];
	u8         null_mkey[0x1];
837 838
	u8         log_max_klm_list_size[0x6];

839
	u8         reserved_at_120[0xa];
840
	u8         log_max_ra_req_dc[0x6];
841
	u8         reserved_at_130[0xa];
842 843
	u8         log_max_ra_res_dc[0x6];

844
	u8         reserved_at_140[0xa];
845
	u8         log_max_ra_req_qp[0x6];
846
	u8         reserved_at_150[0xa];
847 848
	u8         log_max_ra_res_qp[0x6];

849
	u8         end_pad[0x1];
850 851
	u8         cc_query_allowed[0x1];
	u8         cc_modify_allowed[0x1];
852 853
	u8         start_pad[0x1];
	u8         cache_line_128byte[0x1];
854 855
	u8         reserved_at_165[0xa];
	u8         qcam_reg[0x1];
856
	u8         gid_table_size[0x10];
857

858 859
	u8         out_of_seq_cnt[0x1];
	u8         vport_counters[0x1];
S
Saeed Mahameed 已提交
860
	u8         retransmission_q_counters[0x1];
861 862
	u8         reserved_at_183[0x1];
	u8         modify_rq_counter_set_id[0x1];
863
	u8         rq_delay_drop[0x1];
864 865 866
	u8         max_qp_cnt[0xa];
	u8         pkey_table_size[0x10];

867 868 869 870
	u8         vport_group_manager[0x1];
	u8         vhca_group_manager[0x1];
	u8         ib_virt[0x1];
	u8         eth_virt[0x1];
871
	u8         reserved_at_1a4[0x1];
872 873
	u8         ets[0x1];
	u8         nic_flow_table[0x1];
874
	u8         eswitch_flow_table[0x1];
875
	u8	   early_vf_enable[0x1];
876 877
	u8         mcam_reg[0x1];
	u8         pcam_reg[0x1];
878
	u8         local_ca_ack_delay[0x5];
879
	u8         port_module_event[0x1];
880
	u8         enhanced_error_q_counters[0x1];
881
	u8         ports_check[0x1];
882
	u8         reserved_at_1b3[0x1];
883 884
	u8         disable_link_up[0x1];
	u8         beacon_led[0x1];
885
	u8         port_type[0x2];
886 887
	u8         num_ports[0x8];

888 889 890
	u8         reserved_at_1c0[0x1];
	u8         pps[0x1];
	u8         pps_modify[0x1];
891
	u8         log_max_msg[0x5];
892
	u8         reserved_at_1c8[0x4];
893
	u8         max_tc[0x4];
S
Saeed Mahameed 已提交
894 895
	u8         reserved_at_1d0[0x1];
	u8         dcbx[0x1];
896 897
	u8         general_notification_event[0x1];
	u8         reserved_at_1d3[0x2];
898
	u8         fpga[0x1];
T
Tariq Toukan 已提交
899 900
	u8         rol_s[0x1];
	u8         rol_g[0x1];
901
	u8         reserved_at_1d8[0x1];
T
Tariq Toukan 已提交
902 903 904 905 906 907 908
	u8         wol_s[0x1];
	u8         wol_g[0x1];
	u8         wol_a[0x1];
	u8         wol_b[0x1];
	u8         wol_m[0x1];
	u8         wol_u[0x1];
	u8         wol_p[0x1];
909 910

	u8         stat_rate_support[0x10];
911
	u8         reserved_at_1f0[0xc];
912
	u8         cqe_version[0x4];
913

914
	u8         compact_address_vector[0x1];
915
	u8         striding_rq[0x1];
916 917
	u8         reserved_at_202[0x1];
	u8         ipoib_enhanced_offloads[0x1];
918
	u8         ipoib_basic_offloads[0x1];
919 920 921
	u8         reserved_at_205[0x5];
	u8         umr_fence[0x2];
	u8         reserved_at_20c[0x3];
922
	u8         drain_sigerr[0x1];
923 924
	u8         cmdif_checksum[0x2];
	u8         sigerr_cqe[0x1];
925
	u8         reserved_at_213[0x1];
926 927
	u8         wq_signature[0x1];
	u8         sctr_data_cqe[0x1];
928
	u8         reserved_at_216[0x1];
929 930 931
	u8         sho[0x1];
	u8         tph[0x1];
	u8         rf[0x1];
932
	u8         dct[0x1];
S
Saeed Mahameed 已提交
933
	u8         qos[0x1];
934
	u8         eth_net_offloads[0x1];
935 936
	u8         roce[0x1];
	u8         atomic[0x1];
937
	u8         reserved_at_21f[0x1];
938 939 940 941

	u8         cq_oi[0x1];
	u8         cq_resize[0x1];
	u8         cq_moderation[0x1];
942
	u8         reserved_at_223[0x3];
943
	u8         cq_eq_remap[0x1];
944 945
	u8         pg[0x1];
	u8         block_lb_mc[0x1];
946
	u8         reserved_at_229[0x1];
947
	u8         scqe_break_moderation[0x1];
948
	u8         cq_period_start_from_cqe[0x1];
949
	u8         cd[0x1];
950
	u8         reserved_at_22d[0x1];
951
	u8         apm[0x1];
952
	u8         vector_calc[0x1];
953
	u8         umr_ptr_rlky[0x1];
954
	u8	   imaicl[0x1];
955
	u8         reserved_at_232[0x4];
956 957
	u8         qkv[0x1];
	u8         pkv[0x1];
958 959
	u8         set_deth_sqpn[0x1];
	u8         reserved_at_239[0x3];
960 961 962 963 964
	u8         xrc[0x1];
	u8         ud[0x1];
	u8         uc[0x1];
	u8         rc[0x1];

965 966
	u8         uar_4k[0x1];
	u8         reserved_at_241[0x9];
967
	u8         uar_sz[0x6];
968
	u8         reserved_at_250[0x8];
969 970 971
	u8         log_pg_sz[0x8];

	u8         bf[0x1];
972
	u8         driver_version[0x1];
973
	u8         pad_tx_eth_packet[0x1];
974
	u8         reserved_at_263[0x8];
975
	u8         log_bf_reg_size[0x5];
976 977 978 979

	u8         reserved_at_270[0xb];
	u8         lag_master[0x1];
	u8         num_lag_ports[0x4];
980

981
	u8         reserved_at_280[0x10];
982 983
	u8         max_wqe_sz_sq[0x10];

984
	u8         reserved_at_2a0[0x10];
985 986
	u8         max_wqe_sz_rq[0x10];

987
	u8         max_flow_counter_31_16[0x10];
988 989
	u8         max_wqe_sz_sq_dc[0x10];

990
	u8         reserved_at_2e0[0x7];
991 992
	u8         max_qp_mcg[0x19];

993
	u8         reserved_at_300[0x18];
994 995
	u8         log_max_mcg[0x8];

996
	u8         reserved_at_320[0x3];
997
	u8         log_max_transport_domain[0x5];
998
	u8         reserved_at_328[0x3];
999
	u8         log_max_pd[0x5];
1000
	u8         reserved_at_330[0xb];
1001 1002
	u8         log_max_xrcd[0x5];

1003 1004
	u8         reserved_at_340[0x8];
	u8         log_max_flow_counter_bulk[0x8];
1005
	u8         max_flow_counter_15_0[0x10];
1006

1007

1008
	u8         reserved_at_360[0x3];
1009
	u8         log_max_rq[0x5];
1010
	u8         reserved_at_368[0x3];
1011
	u8         log_max_sq[0x5];
1012
	u8         reserved_at_370[0x3];
1013
	u8         log_max_tir[0x5];
1014
	u8         reserved_at_378[0x3];
1015 1016
	u8         log_max_tis[0x5];

1017
	u8         basic_cyclic_rcv_wqe[0x1];
1018
	u8         reserved_at_381[0x2];
1019
	u8         log_max_rmp[0x5];
1020
	u8         reserved_at_388[0x3];
1021
	u8         log_max_rqt[0x5];
1022
	u8         reserved_at_390[0x3];
1023
	u8         log_max_rqt_size[0x5];
1024
	u8         reserved_at_398[0x3];
1025 1026
	u8         log_max_tis_per_sq[0x5];

1027
	u8         reserved_at_3a0[0x3];
1028
	u8         log_max_stride_sz_rq[0x5];
1029
	u8         reserved_at_3a8[0x3];
1030
	u8         log_min_stride_sz_rq[0x5];
1031
	u8         reserved_at_3b0[0x3];
1032
	u8         log_max_stride_sz_sq[0x5];
1033
	u8         reserved_at_3b8[0x3];
1034 1035
	u8         log_min_stride_sz_sq[0x5];

1036 1037 1038 1039 1040
	u8         hairpin[0x1];
	u8         reserved_at_3c1[0x2];
	u8         log_max_hairpin_queues[0x5];
	u8         reserved_at_3c8[0x3];
	u8         log_max_hairpin_wq_data_sz[0x5];
1041 1042 1043
	u8         reserved_at_3d0[0x3];
	u8         log_max_hairpin_num_packets[0x5];
	u8         reserved_at_3d8[0x3];
1044 1045
	u8         log_max_wq_sz[0x5];

1046
	u8         nic_vport_change_event[0x1];
1047 1048
	u8         disable_local_lb_uc[0x1];
	u8         disable_local_lb_mc[0x1];
1049 1050
	u8         log_min_hairpin_wq_data_sz[0x5];
	u8         reserved_at_3e8[0x3];
1051
	u8         log_max_vlan_list[0x5];
1052
	u8         reserved_at_3f0[0x3];
1053
	u8         log_max_current_mc_list[0x5];
1054
	u8         reserved_at_3f8[0x3];
1055 1056
	u8         log_max_current_uc_list[0x5];

1057
	u8         reserved_at_400[0x80];
1058

1059
	u8         reserved_at_480[0x3];
1060
	u8         log_max_l2_table[0x5];
1061
	u8         reserved_at_488[0x8];
1062 1063
	u8         log_uar_page_sz[0x10];

1064
	u8         reserved_at_4a0[0x20];
1065
	u8         device_frequency_mhz[0x20];
1066
	u8         device_frequency_khz[0x20];
1067

1068 1069 1070
	u8         reserved_at_500[0x20];
	u8	   num_of_uars_per_page[0x20];
	u8         reserved_at_540[0x40];
1071

1072 1073 1074
	u8         reserved_at_580[0x3d];
	u8         cqe_128_always[0x1];
	u8         cqe_compression_128[0x1];
1075
	u8         cqe_compression[0x1];
1076

1077 1078
	u8         cqe_compression_timeout[0x10];
	u8         cqe_compression_max_num[0x10];
1079

S
Saeed Mahameed 已提交
1080 1081 1082 1083 1084
	u8         reserved_at_5e0[0x10];
	u8         tag_matching[0x1];
	u8         rndv_offload_rc[0x1];
	u8         rndv_offload_dc[0x1];
	u8         log_tag_matching_list_sz[0x5];
1085
	u8         reserved_at_5f8[0x3];
S
Saeed Mahameed 已提交
1086 1087
	u8         log_max_xrq[0x5];

1088 1089 1090 1091 1092
	u8	   affiliate_nic_vport_criteria[0x8];
	u8	   native_port_num[0x8];
	u8	   num_vhca_ports[0x8];
	u8	   reserved_at_618[0x6];
	u8	   sw_owner_id[0x1];
1093
	u8	   reserved_at_61f[0x1e1];
1094 1095
};

1096 1097 1098 1099
enum mlx5_flow_destination_type {
	MLX5_FLOW_DESTINATION_TYPE_VPORT        = 0x0,
	MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE   = 0x1,
	MLX5_FLOW_DESTINATION_TYPE_TIR          = 0x2,
1100

1101
	MLX5_FLOW_DESTINATION_TYPE_PORT         = 0x99,
1102
	MLX5_FLOW_DESTINATION_TYPE_COUNTER      = 0x100,
1103
};
1104

1105 1106 1107
struct mlx5_ifc_dest_format_struct_bits {
	u8         destination_type[0x8];
	u8         destination_id[0x18];
1108

1109
	u8         reserved_at_20[0x20];
1110 1111
};

1112
struct mlx5_ifc_flow_counter_list_bits {
1113
	u8         flow_counter_id[0x20];
1114 1115 1116 1117 1118 1119 1120 1121 1122 1123

	u8         reserved_at_20[0x20];
};

union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits {
	struct mlx5_ifc_dest_format_struct_bits dest_format_struct;
	struct mlx5_ifc_flow_counter_list_bits flow_counter_list;
	u8         reserved_at_0[0x40];
};

1124 1125 1126 1127 1128 1129
struct mlx5_ifc_fte_match_param_bits {
	struct mlx5_ifc_fte_match_set_lyr_2_4_bits outer_headers;

	struct mlx5_ifc_fte_match_set_misc_bits misc_parameters;

	struct mlx5_ifc_fte_match_set_lyr_2_4_bits inner_headers;
1130

1131
	u8         reserved_at_600[0xa00];
1132 1133
};

1134 1135 1136 1137 1138 1139 1140
enum {
	MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_SRC_IP     = 0x0,
	MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_DST_IP     = 0x1,
	MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_SPORT   = 0x2,
	MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_DPORT   = 0x3,
	MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_IPSEC_SPI  = 0x4,
};
1141

1142 1143 1144 1145 1146
struct mlx5_ifc_rx_hash_field_select_bits {
	u8         l3_prot_type[0x1];
	u8         l4_prot_type[0x1];
	u8         selected_fields[0x1e];
};
1147

1148 1149 1150
enum {
	MLX5_WQ_WQ_TYPE_WQ_LINKED_LIST  = 0x0,
	MLX5_WQ_WQ_TYPE_WQ_CYCLIC       = 0x1,
1151 1152
};

1153 1154 1155 1156 1157 1158 1159 1160 1161 1162
enum {
	MLX5_WQ_END_PADDING_MODE_END_PAD_NONE   = 0x0,
	MLX5_WQ_END_PADDING_MODE_END_PAD_ALIGN  = 0x1,
};

struct mlx5_ifc_wq_bits {
	u8         wq_type[0x4];
	u8         wq_signature[0x1];
	u8         end_padding_mode[0x2];
	u8         cd_slave[0x1];
1163
	u8         reserved_at_8[0x18];
1164

1165 1166
	u8         hds_skip_first_sge[0x1];
	u8         log2_hds_buf_size[0x3];
1167
	u8         reserved_at_24[0x7];
1168 1169
	u8         page_offset[0x5];
	u8         lwm[0x10];
1170

1171
	u8         reserved_at_40[0x8];
1172 1173
	u8         pd[0x18];

1174
	u8         reserved_at_60[0x8];
1175 1176 1177 1178 1179 1180 1181 1182
	u8         uar_page[0x18];

	u8         dbr_addr[0x40];

	u8         hw_counter[0x20];

	u8         sw_counter[0x20];

1183
	u8         reserved_at_100[0xc];
1184
	u8         log_wq_stride[0x4];
1185
	u8         reserved_at_110[0x3];
1186
	u8         log_wq_pg_sz[0x5];
1187
	u8         reserved_at_118[0x3];
1188 1189
	u8         log_wq_sz[0x5];

1190 1191 1192
	u8         reserved_at_120[0x3];
	u8         log_hairpin_num_packets[0x5];
	u8         reserved_at_128[0x3];
1193 1194 1195
	u8         log_hairpin_data_sz[0x5];
	u8         reserved_at_130[0x5];

1196 1197 1198 1199 1200 1201
	u8         log_wqe_num_of_strides[0x3];
	u8         two_byte_shift_en[0x1];
	u8         reserved_at_139[0x4];
	u8         log_wqe_stride_size[0x3];

	u8         reserved_at_140[0x4c0];
1202

1203
	struct mlx5_ifc_cmd_pas_bits pas[0];
1204 1205
};

1206
struct mlx5_ifc_rq_num_bits {
1207
	u8         reserved_at_0[0x8];
1208 1209
	u8         rq_num[0x18];
};
1210

1211
struct mlx5_ifc_mac_address_layout_bits {
1212
	u8         reserved_at_0[0x10];
1213
	u8         mac_addr_47_32[0x10];
1214

1215 1216 1217
	u8         mac_addr_31_0[0x20];
};

1218
struct mlx5_ifc_vlan_layout_bits {
1219
	u8         reserved_at_0[0x14];
1220 1221
	u8         vlan[0x0c];

1222
	u8         reserved_at_20[0x20];
1223 1224
};

1225
struct mlx5_ifc_cong_control_r_roce_ecn_np_bits {
1226
	u8         reserved_at_0[0xa0];
1227 1228 1229

	u8         min_time_between_cnps[0x20];

1230
	u8         reserved_at_c0[0x12];
1231
	u8         cnp_dscp[0x6];
1232 1233
	u8         reserved_at_d8[0x4];
	u8         cnp_prio_mode[0x1];
1234 1235
	u8         cnp_802p_prio[0x3];

1236
	u8         reserved_at_e0[0x720];
1237 1238 1239
};

struct mlx5_ifc_cong_control_r_roce_ecn_rp_bits {
1240
	u8         reserved_at_0[0x60];
1241

1242
	u8         reserved_at_60[0x4];
1243
	u8         clamp_tgt_rate[0x1];
1244
	u8         reserved_at_65[0x3];
1245
	u8         clamp_tgt_rate_after_time_inc[0x1];
1246
	u8         reserved_at_69[0x17];
1247

1248
	u8         reserved_at_80[0x20];
1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267

	u8         rpg_time_reset[0x20];

	u8         rpg_byte_reset[0x20];

	u8         rpg_threshold[0x20];

	u8         rpg_max_rate[0x20];

	u8         rpg_ai_rate[0x20];

	u8         rpg_hai_rate[0x20];

	u8         rpg_gd[0x20];

	u8         rpg_min_dec_fac[0x20];

	u8         rpg_min_rate[0x20];

1268
	u8         reserved_at_1c0[0xe0];
1269 1270 1271 1272 1273 1274 1275 1276 1277

	u8         rate_to_set_on_first_cnp[0x20];

	u8         dce_tcp_g[0x20];

	u8         dce_tcp_rtt[0x20];

	u8         rate_reduce_monitor_period[0x20];

1278
	u8         reserved_at_320[0x20];
1279 1280 1281

	u8         initial_alpha_value[0x20];

1282
	u8         reserved_at_360[0x4a0];
1283 1284 1285
};

struct mlx5_ifc_cong_control_802_1qau_rp_bits {
1286
	u8         reserved_at_0[0x80];
1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307

	u8         rppp_max_rps[0x20];

	u8         rpg_time_reset[0x20];

	u8         rpg_byte_reset[0x20];

	u8         rpg_threshold[0x20];

	u8         rpg_max_rate[0x20];

	u8         rpg_ai_rate[0x20];

	u8         rpg_hai_rate[0x20];

	u8         rpg_gd[0x20];

	u8         rpg_min_dec_fac[0x20];

	u8         rpg_min_rate[0x20];

1308
	u8         reserved_at_1c0[0x640];
1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457
};

enum {
	MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_CQ_SIZE    = 0x1,
	MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_PAGE_OFFSET    = 0x2,
	MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_PAGE_SIZE  = 0x4,
};

struct mlx5_ifc_resize_field_select_bits {
	u8         resize_field_select[0x20];
};

enum {
	MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_PERIOD     = 0x1,
	MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_MAX_COUNT  = 0x2,
	MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_OI            = 0x4,
	MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_C_EQN         = 0x8,
};

struct mlx5_ifc_modify_field_select_bits {
	u8         modify_field_select[0x20];
};

struct mlx5_ifc_field_select_r_roce_np_bits {
	u8         field_select_r_roce_np[0x20];
};

struct mlx5_ifc_field_select_r_roce_rp_bits {
	u8         field_select_r_roce_rp[0x20];
};

enum {
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPPP_MAX_RPS     = 0x4,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_TIME_RESET   = 0x8,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_BYTE_RESET   = 0x10,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_THRESHOLD    = 0x20,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MAX_RATE     = 0x40,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_AI_RATE      = 0x80,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_HAI_RATE     = 0x100,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_GD           = 0x200,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_DEC_FAC  = 0x400,
	MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_RATE     = 0x800,
};

struct mlx5_ifc_field_select_802_1qau_rp_bits {
	u8         field_select_8021qaurp[0x20];
};

struct mlx5_ifc_phys_layer_cntrs_bits {
	u8         time_since_last_clear_high[0x20];

	u8         time_since_last_clear_low[0x20];

	u8         symbol_errors_high[0x20];

	u8         symbol_errors_low[0x20];

	u8         sync_headers_errors_high[0x20];

	u8         sync_headers_errors_low[0x20];

	u8         edpl_bip_errors_lane0_high[0x20];

	u8         edpl_bip_errors_lane0_low[0x20];

	u8         edpl_bip_errors_lane1_high[0x20];

	u8         edpl_bip_errors_lane1_low[0x20];

	u8         edpl_bip_errors_lane2_high[0x20];

	u8         edpl_bip_errors_lane2_low[0x20];

	u8         edpl_bip_errors_lane3_high[0x20];

	u8         edpl_bip_errors_lane3_low[0x20];

	u8         fc_fec_corrected_blocks_lane0_high[0x20];

	u8         fc_fec_corrected_blocks_lane0_low[0x20];

	u8         fc_fec_corrected_blocks_lane1_high[0x20];

	u8         fc_fec_corrected_blocks_lane1_low[0x20];

	u8         fc_fec_corrected_blocks_lane2_high[0x20];

	u8         fc_fec_corrected_blocks_lane2_low[0x20];

	u8         fc_fec_corrected_blocks_lane3_high[0x20];

	u8         fc_fec_corrected_blocks_lane3_low[0x20];

	u8         fc_fec_uncorrectable_blocks_lane0_high[0x20];

	u8         fc_fec_uncorrectable_blocks_lane0_low[0x20];

	u8         fc_fec_uncorrectable_blocks_lane1_high[0x20];

	u8         fc_fec_uncorrectable_blocks_lane1_low[0x20];

	u8         fc_fec_uncorrectable_blocks_lane2_high[0x20];

	u8         fc_fec_uncorrectable_blocks_lane2_low[0x20];

	u8         fc_fec_uncorrectable_blocks_lane3_high[0x20];

	u8         fc_fec_uncorrectable_blocks_lane3_low[0x20];

	u8         rs_fec_corrected_blocks_high[0x20];

	u8         rs_fec_corrected_blocks_low[0x20];

	u8         rs_fec_uncorrectable_blocks_high[0x20];

	u8         rs_fec_uncorrectable_blocks_low[0x20];

	u8         rs_fec_no_errors_blocks_high[0x20];

	u8         rs_fec_no_errors_blocks_low[0x20];

	u8         rs_fec_single_error_blocks_high[0x20];

	u8         rs_fec_single_error_blocks_low[0x20];

	u8         rs_fec_corrected_symbols_total_high[0x20];

	u8         rs_fec_corrected_symbols_total_low[0x20];

	u8         rs_fec_corrected_symbols_lane0_high[0x20];

	u8         rs_fec_corrected_symbols_lane0_low[0x20];

	u8         rs_fec_corrected_symbols_lane1_high[0x20];

	u8         rs_fec_corrected_symbols_lane1_low[0x20];

	u8         rs_fec_corrected_symbols_lane2_high[0x20];

	u8         rs_fec_corrected_symbols_lane2_low[0x20];

	u8         rs_fec_corrected_symbols_lane3_high[0x20];

	u8         rs_fec_corrected_symbols_lane3_low[0x20];

	u8         link_down_events[0x20];

	u8         successful_recovery_events[0x20];

1458
	u8         reserved_at_640[0x180];
1459 1460
};

1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496
struct mlx5_ifc_phys_layer_statistical_cntrs_bits {
	u8         time_since_last_clear_high[0x20];

	u8         time_since_last_clear_low[0x20];

	u8         phy_received_bits_high[0x20];

	u8         phy_received_bits_low[0x20];

	u8         phy_symbol_errors_high[0x20];

	u8         phy_symbol_errors_low[0x20];

	u8         phy_corrected_bits_high[0x20];

	u8         phy_corrected_bits_low[0x20];

	u8         phy_corrected_bits_lane0_high[0x20];

	u8         phy_corrected_bits_lane0_low[0x20];

	u8         phy_corrected_bits_lane1_high[0x20];

	u8         phy_corrected_bits_lane1_low[0x20];

	u8         phy_corrected_bits_lane2_high[0x20];

	u8         phy_corrected_bits_lane2_low[0x20];

	u8         phy_corrected_bits_lane3_high[0x20];

	u8         phy_corrected_bits_lane3_low[0x20];

	u8         reserved_at_200[0x5c0];
};

1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523
struct mlx5_ifc_ib_port_cntrs_grp_data_layout_bits {
	u8	   symbol_error_counter[0x10];

	u8         link_error_recovery_counter[0x8];

	u8         link_downed_counter[0x8];

	u8         port_rcv_errors[0x10];

	u8         port_rcv_remote_physical_errors[0x10];

	u8         port_rcv_switch_relay_errors[0x10];

	u8         port_xmit_discards[0x10];

	u8         port_xmit_constraint_errors[0x8];

	u8         port_rcv_constraint_errors[0x8];

	u8         reserved_at_70[0x8];

	u8         link_overrun_errors[0x8];

	u8	   reserved_at_80[0x10];

	u8         vl_15_dropped[0x10];

1524 1525 1526
	u8	   reserved_at_a0[0x80];

	u8         port_xmit_wait[0x20];
1527 1528
};

1529 1530 1531 1532 1533
struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits {
	u8         transmit_queue_high[0x20];

	u8         transmit_queue_low[0x20];

1534
	u8         reserved_at_40[0x780];
1535 1536 1537 1538 1539 1540 1541
};

struct mlx5_ifc_eth_per_prio_grp_data_layout_bits {
	u8         rx_octets_high[0x20];

	u8         rx_octets_low[0x20];

1542
	u8         reserved_at_40[0xc0];
1543 1544 1545 1546 1547 1548 1549 1550 1551

	u8         rx_frames_high[0x20];

	u8         rx_frames_low[0x20];

	u8         tx_octets_high[0x20];

	u8         tx_octets_low[0x20];

1552
	u8         reserved_at_180[0xc0];
1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577

	u8         tx_frames_high[0x20];

	u8         tx_frames_low[0x20];

	u8         rx_pause_high[0x20];

	u8         rx_pause_low[0x20];

	u8         rx_pause_duration_high[0x20];

	u8         rx_pause_duration_low[0x20];

	u8         tx_pause_high[0x20];

	u8         tx_pause_low[0x20];

	u8         tx_pause_duration_high[0x20];

	u8         tx_pause_duration_low[0x20];

	u8         rx_pause_transition_high[0x20];

	u8         rx_pause_transition_low[0x20];

1578
	u8         reserved_at_3c0[0x400];
1579 1580 1581 1582 1583 1584 1585
};

struct mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits {
	u8         port_transmit_wait_high[0x20];

	u8         port_transmit_wait_low[0x20];

1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596
	u8         reserved_at_40[0x100];

	u8         rx_buffer_almost_full_high[0x20];

	u8         rx_buffer_almost_full_low[0x20];

	u8         rx_buffer_full_high[0x20];

	u8         rx_buffer_full_low[0x20];

	u8         reserved_at_1c0[0x600];
1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663
};

struct mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits {
	u8         dot3stats_alignment_errors_high[0x20];

	u8         dot3stats_alignment_errors_low[0x20];

	u8         dot3stats_fcs_errors_high[0x20];

	u8         dot3stats_fcs_errors_low[0x20];

	u8         dot3stats_single_collision_frames_high[0x20];

	u8         dot3stats_single_collision_frames_low[0x20];

	u8         dot3stats_multiple_collision_frames_high[0x20];

	u8         dot3stats_multiple_collision_frames_low[0x20];

	u8         dot3stats_sqe_test_errors_high[0x20];

	u8         dot3stats_sqe_test_errors_low[0x20];

	u8         dot3stats_deferred_transmissions_high[0x20];

	u8         dot3stats_deferred_transmissions_low[0x20];

	u8         dot3stats_late_collisions_high[0x20];

	u8         dot3stats_late_collisions_low[0x20];

	u8         dot3stats_excessive_collisions_high[0x20];

	u8         dot3stats_excessive_collisions_low[0x20];

	u8         dot3stats_internal_mac_transmit_errors_high[0x20];

	u8         dot3stats_internal_mac_transmit_errors_low[0x20];

	u8         dot3stats_carrier_sense_errors_high[0x20];

	u8         dot3stats_carrier_sense_errors_low[0x20];

	u8         dot3stats_frame_too_longs_high[0x20];

	u8         dot3stats_frame_too_longs_low[0x20];

	u8         dot3stats_internal_mac_receive_errors_high[0x20];

	u8         dot3stats_internal_mac_receive_errors_low[0x20];

	u8         dot3stats_symbol_errors_high[0x20];

	u8         dot3stats_symbol_errors_low[0x20];

	u8         dot3control_in_unknown_opcodes_high[0x20];

	u8         dot3control_in_unknown_opcodes_low[0x20];

	u8         dot3in_pause_frames_high[0x20];

	u8         dot3in_pause_frames_low[0x20];

	u8         dot3out_pause_frames_high[0x20];

	u8         dot3out_pause_frames_low[0x20];

1664
	u8         reserved_at_400[0x3c0];
1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751
};

struct mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits {
	u8         ether_stats_drop_events_high[0x20];

	u8         ether_stats_drop_events_low[0x20];

	u8         ether_stats_octets_high[0x20];

	u8         ether_stats_octets_low[0x20];

	u8         ether_stats_pkts_high[0x20];

	u8         ether_stats_pkts_low[0x20];

	u8         ether_stats_broadcast_pkts_high[0x20];

	u8         ether_stats_broadcast_pkts_low[0x20];

	u8         ether_stats_multicast_pkts_high[0x20];

	u8         ether_stats_multicast_pkts_low[0x20];

	u8         ether_stats_crc_align_errors_high[0x20];

	u8         ether_stats_crc_align_errors_low[0x20];

	u8         ether_stats_undersize_pkts_high[0x20];

	u8         ether_stats_undersize_pkts_low[0x20];

	u8         ether_stats_oversize_pkts_high[0x20];

	u8         ether_stats_oversize_pkts_low[0x20];

	u8         ether_stats_fragments_high[0x20];

	u8         ether_stats_fragments_low[0x20];

	u8         ether_stats_jabbers_high[0x20];

	u8         ether_stats_jabbers_low[0x20];

	u8         ether_stats_collisions_high[0x20];

	u8         ether_stats_collisions_low[0x20];

	u8         ether_stats_pkts64octets_high[0x20];

	u8         ether_stats_pkts64octets_low[0x20];

	u8         ether_stats_pkts65to127octets_high[0x20];

	u8         ether_stats_pkts65to127octets_low[0x20];

	u8         ether_stats_pkts128to255octets_high[0x20];

	u8         ether_stats_pkts128to255octets_low[0x20];

	u8         ether_stats_pkts256to511octets_high[0x20];

	u8         ether_stats_pkts256to511octets_low[0x20];

	u8         ether_stats_pkts512to1023octets_high[0x20];

	u8         ether_stats_pkts512to1023octets_low[0x20];

	u8         ether_stats_pkts1024to1518octets_high[0x20];

	u8         ether_stats_pkts1024to1518octets_low[0x20];

	u8         ether_stats_pkts1519to2047octets_high[0x20];

	u8         ether_stats_pkts1519to2047octets_low[0x20];

	u8         ether_stats_pkts2048to4095octets_high[0x20];

	u8         ether_stats_pkts2048to4095octets_low[0x20];

	u8         ether_stats_pkts4096to8191octets_high[0x20];

	u8         ether_stats_pkts4096to8191octets_low[0x20];

	u8         ether_stats_pkts8192to10239octets_high[0x20];

	u8         ether_stats_pkts8192to10239octets_low[0x20];

1752
	u8         reserved_at_540[0x280];
1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807
};

struct mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits {
	u8         if_in_octets_high[0x20];

	u8         if_in_octets_low[0x20];

	u8         if_in_ucast_pkts_high[0x20];

	u8         if_in_ucast_pkts_low[0x20];

	u8         if_in_discards_high[0x20];

	u8         if_in_discards_low[0x20];

	u8         if_in_errors_high[0x20];

	u8         if_in_errors_low[0x20];

	u8         if_in_unknown_protos_high[0x20];

	u8         if_in_unknown_protos_low[0x20];

	u8         if_out_octets_high[0x20];

	u8         if_out_octets_low[0x20];

	u8         if_out_ucast_pkts_high[0x20];

	u8         if_out_ucast_pkts_low[0x20];

	u8         if_out_discards_high[0x20];

	u8         if_out_discards_low[0x20];

	u8         if_out_errors_high[0x20];

	u8         if_out_errors_low[0x20];

	u8         if_in_multicast_pkts_high[0x20];

	u8         if_in_multicast_pkts_low[0x20];

	u8         if_in_broadcast_pkts_high[0x20];

	u8         if_in_broadcast_pkts_low[0x20];

	u8         if_out_multicast_pkts_high[0x20];

	u8         if_out_multicast_pkts_low[0x20];

	u8         if_out_broadcast_pkts_high[0x20];

	u8         if_out_broadcast_pkts_low[0x20];

1808
	u8         reserved_at_340[0x480];
1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887
};

struct mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits {
	u8         a_frames_transmitted_ok_high[0x20];

	u8         a_frames_transmitted_ok_low[0x20];

	u8         a_frames_received_ok_high[0x20];

	u8         a_frames_received_ok_low[0x20];

	u8         a_frame_check_sequence_errors_high[0x20];

	u8         a_frame_check_sequence_errors_low[0x20];

	u8         a_alignment_errors_high[0x20];

	u8         a_alignment_errors_low[0x20];

	u8         a_octets_transmitted_ok_high[0x20];

	u8         a_octets_transmitted_ok_low[0x20];

	u8         a_octets_received_ok_high[0x20];

	u8         a_octets_received_ok_low[0x20];

	u8         a_multicast_frames_xmitted_ok_high[0x20];

	u8         a_multicast_frames_xmitted_ok_low[0x20];

	u8         a_broadcast_frames_xmitted_ok_high[0x20];

	u8         a_broadcast_frames_xmitted_ok_low[0x20];

	u8         a_multicast_frames_received_ok_high[0x20];

	u8         a_multicast_frames_received_ok_low[0x20];

	u8         a_broadcast_frames_received_ok_high[0x20];

	u8         a_broadcast_frames_received_ok_low[0x20];

	u8         a_in_range_length_errors_high[0x20];

	u8         a_in_range_length_errors_low[0x20];

	u8         a_out_of_range_length_field_high[0x20];

	u8         a_out_of_range_length_field_low[0x20];

	u8         a_frame_too_long_errors_high[0x20];

	u8         a_frame_too_long_errors_low[0x20];

	u8         a_symbol_error_during_carrier_high[0x20];

	u8         a_symbol_error_during_carrier_low[0x20];

	u8         a_mac_control_frames_transmitted_high[0x20];

	u8         a_mac_control_frames_transmitted_low[0x20];

	u8         a_mac_control_frames_received_high[0x20];

	u8         a_mac_control_frames_received_low[0x20];

	u8         a_unsupported_opcodes_received_high[0x20];

	u8         a_unsupported_opcodes_received_low[0x20];

	u8         a_pause_mac_ctrl_frames_received_high[0x20];

	u8         a_pause_mac_ctrl_frames_received_low[0x20];

	u8         a_pause_mac_ctrl_frames_transmitted_high[0x20];

	u8         a_pause_mac_ctrl_frames_transmitted_low[0x20];

1888
	u8         reserved_at_4c0[0x300];
1889 1890
};

1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911
struct mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits {
	u8         life_time_counter_high[0x20];

	u8         life_time_counter_low[0x20];

	u8         rx_errors[0x20];

	u8         tx_errors[0x20];

	u8         l0_to_recovery_eieos[0x20];

	u8         l0_to_recovery_ts[0x20];

	u8         l0_to_recovery_framing[0x20];

	u8         l0_to_recovery_retrain[0x20];

	u8         crc_error_dllp[0x20];

	u8         crc_error_tlp[0x20];

1912 1913 1914
	u8         tx_overflow_buffer_pkt_high[0x20];

	u8         tx_overflow_buffer_pkt_low[0x20];
1915 1916 1917 1918 1919 1920 1921 1922 1923 1924

	u8         outbound_stalled_reads[0x20];

	u8         outbound_stalled_writes[0x20];

	u8         outbound_stalled_reads_events[0x20];

	u8         outbound_stalled_writes_events[0x20];

	u8         reserved_at_200[0x5c0];
1925 1926
};

1927 1928 1929
struct mlx5_ifc_cmd_inter_comp_event_bits {
	u8         command_completion_vector[0x20];

1930
	u8         reserved_at_20[0xc0];
1931 1932 1933
};

struct mlx5_ifc_stall_vl_event_bits {
1934
	u8         reserved_at_0[0x18];
1935
	u8         port_num[0x1];
1936
	u8         reserved_at_19[0x3];
1937 1938
	u8         vl[0x4];

1939
	u8         reserved_at_20[0xa0];
1940 1941 1942 1943
};

struct mlx5_ifc_db_bf_congestion_event_bits {
	u8         event_subtype[0x8];
1944
	u8         reserved_at_8[0x8];
1945
	u8         congestion_level[0x8];
1946
	u8         reserved_at_18[0x8];
1947

1948
	u8         reserved_at_20[0xa0];
1949 1950 1951
};

struct mlx5_ifc_gpio_event_bits {
1952
	u8         reserved_at_0[0x60];
1953 1954 1955 1956 1957

	u8         gpio_event_hi[0x20];

	u8         gpio_event_lo[0x20];

1958
	u8         reserved_at_a0[0x40];
1959 1960 1961
};

struct mlx5_ifc_port_state_change_event_bits {
1962
	u8         reserved_at_0[0x40];
1963 1964

	u8         port_num[0x4];
1965
	u8         reserved_at_44[0x1c];
1966

1967
	u8         reserved_at_60[0x80];
1968 1969 1970
};

struct mlx5_ifc_dropped_packet_logged_bits {
1971
	u8         reserved_at_0[0xe0];
1972 1973 1974 1975 1976 1977 1978 1979
};

enum {
	MLX5_CQ_ERROR_SYNDROME_CQ_OVERRUN                 = 0x1,
	MLX5_CQ_ERROR_SYNDROME_CQ_ACCESS_VIOLATION_ERROR  = 0x2,
};

struct mlx5_ifc_cq_error_bits {
1980
	u8         reserved_at_0[0x8];
1981 1982
	u8         cqn[0x18];

1983
	u8         reserved_at_20[0x20];
1984

1985
	u8         reserved_at_40[0x18];
1986 1987
	u8         syndrome[0x8];

1988
	u8         reserved_at_60[0x80];
1989 1990 1991 1992 1993 1994 1995
};

struct mlx5_ifc_rdma_page_fault_event_bits {
	u8         bytes_committed[0x20];

	u8         r_key[0x20];

1996
	u8         reserved_at_40[0x10];
1997 1998 1999 2000 2001 2002
	u8         packet_len[0x10];

	u8         rdma_op_len[0x20];

	u8         rdma_va[0x40];

2003
	u8         reserved_at_c0[0x5];
2004 2005 2006 2007 2008 2009 2010 2011 2012
	u8         rdma[0x1];
	u8         write[0x1];
	u8         requestor[0x1];
	u8         qp_number[0x18];
};

struct mlx5_ifc_wqe_associated_page_fault_event_bits {
	u8         bytes_committed[0x20];

2013
	u8         reserved_at_20[0x10];
2014 2015
	u8         wqe_index[0x10];

2016
	u8         reserved_at_40[0x10];
2017 2018
	u8         len[0x10];

2019
	u8         reserved_at_60[0x60];
2020

2021
	u8         reserved_at_c0[0x5];
2022 2023 2024 2025 2026 2027 2028
	u8         rdma[0x1];
	u8         write_read[0x1];
	u8         requestor[0x1];
	u8         qpn[0x18];
};

struct mlx5_ifc_qp_events_bits {
2029
	u8         reserved_at_0[0xa0];
2030 2031

	u8         type[0x8];
2032
	u8         reserved_at_a8[0x18];
2033

2034
	u8         reserved_at_c0[0x8];
2035 2036 2037 2038
	u8         qpn_rqn_sqn[0x18];
};

struct mlx5_ifc_dct_events_bits {
2039
	u8         reserved_at_0[0xc0];
2040

2041
	u8         reserved_at_c0[0x8];
2042 2043 2044 2045
	u8         dct_number[0x18];
};

struct mlx5_ifc_comp_event_bits {
2046
	u8         reserved_at_0[0xc0];
2047

2048
	u8         reserved_at_c0[0x8];
2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081
	u8         cq_number[0x18];
};

enum {
	MLX5_QPC_STATE_RST        = 0x0,
	MLX5_QPC_STATE_INIT       = 0x1,
	MLX5_QPC_STATE_RTR        = 0x2,
	MLX5_QPC_STATE_RTS        = 0x3,
	MLX5_QPC_STATE_SQER       = 0x4,
	MLX5_QPC_STATE_ERR        = 0x6,
	MLX5_QPC_STATE_SQD        = 0x7,
	MLX5_QPC_STATE_SUSPENDED  = 0x9,
};

enum {
	MLX5_QPC_ST_RC            = 0x0,
	MLX5_QPC_ST_UC            = 0x1,
	MLX5_QPC_ST_UD            = 0x2,
	MLX5_QPC_ST_XRC           = 0x3,
	MLX5_QPC_ST_DCI           = 0x5,
	MLX5_QPC_ST_QP0           = 0x7,
	MLX5_QPC_ST_QP1           = 0x8,
	MLX5_QPC_ST_RAW_DATAGRAM  = 0x9,
	MLX5_QPC_ST_REG_UMR       = 0xc,
};

enum {
	MLX5_QPC_PM_STATE_ARMED     = 0x0,
	MLX5_QPC_PM_STATE_REARM     = 0x1,
	MLX5_QPC_PM_STATE_RESERVED  = 0x2,
	MLX5_QPC_PM_STATE_MIGRATED  = 0x3,
};

2082 2083 2084 2085
enum {
	MLX5_QPC_OFFLOAD_TYPE_RNDV  = 0x1,
};

2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124
enum {
	MLX5_QPC_END_PADDING_MODE_SCATTER_AS_IS                = 0x0,
	MLX5_QPC_END_PADDING_MODE_PAD_TO_CACHE_LINE_ALIGNMENT  = 0x1,
};

enum {
	MLX5_QPC_MTU_256_BYTES        = 0x1,
	MLX5_QPC_MTU_512_BYTES        = 0x2,
	MLX5_QPC_MTU_1K_BYTES         = 0x3,
	MLX5_QPC_MTU_2K_BYTES         = 0x4,
	MLX5_QPC_MTU_4K_BYTES         = 0x5,
	MLX5_QPC_MTU_RAW_ETHERNET_QP  = 0x7,
};

enum {
	MLX5_QPC_ATOMIC_MODE_IB_SPEC     = 0x1,
	MLX5_QPC_ATOMIC_MODE_ONLY_8B     = 0x2,
	MLX5_QPC_ATOMIC_MODE_UP_TO_8B    = 0x3,
	MLX5_QPC_ATOMIC_MODE_UP_TO_16B   = 0x4,
	MLX5_QPC_ATOMIC_MODE_UP_TO_32B   = 0x5,
	MLX5_QPC_ATOMIC_MODE_UP_TO_64B   = 0x6,
	MLX5_QPC_ATOMIC_MODE_UP_TO_128B  = 0x7,
	MLX5_QPC_ATOMIC_MODE_UP_TO_256B  = 0x8,
};

enum {
	MLX5_QPC_CS_REQ_DISABLE    = 0x0,
	MLX5_QPC_CS_REQ_UP_TO_32B  = 0x11,
	MLX5_QPC_CS_REQ_UP_TO_64B  = 0x22,
};

enum {
	MLX5_QPC_CS_RES_DISABLE    = 0x0,
	MLX5_QPC_CS_RES_UP_TO_32B  = 0x1,
	MLX5_QPC_CS_RES_UP_TO_64B  = 0x2,
};

struct mlx5_ifc_qpc_bits {
	u8         state[0x4];
2125
	u8         lag_tx_port_affinity[0x4];
2126
	u8         st[0x8];
2127
	u8         reserved_at_10[0x3];
2128
	u8         pm_state[0x2];
2129 2130
	u8         reserved_at_15[0x3];
	u8         offload_type[0x4];
2131
	u8         end_padding_mode[0x2];
2132
	u8         reserved_at_1e[0x2];
2133 2134 2135 2136 2137

	u8         wq_signature[0x1];
	u8         block_lb_mc[0x1];
	u8         atomic_like_write_en[0x1];
	u8         latency_sensitive[0x1];
2138
	u8         reserved_at_24[0x1];
2139
	u8         drain_sigerr[0x1];
2140
	u8         reserved_at_26[0x2];
2141 2142 2143 2144
	u8         pd[0x18];

	u8         mtu[0x3];
	u8         log_msg_max[0x5];
2145
	u8         reserved_at_48[0x1];
2146 2147 2148 2149
	u8         log_rq_size[0x4];
	u8         log_rq_stride[0x3];
	u8         no_sq[0x1];
	u8         log_sq_size[0x4];
2150
	u8         reserved_at_55[0x6];
2151
	u8         rlky[0x1];
2152
	u8         ulp_stateless_offload_mode[0x4];
2153 2154 2155 2156

	u8         counter_set_id[0x8];
	u8         uar_page[0x18];

2157
	u8         reserved_at_80[0x8];
2158 2159
	u8         user_index[0x18];

2160
	u8         reserved_at_a0[0x3];
2161 2162 2163 2164 2165 2166 2167 2168
	u8         log_page_size[0x5];
	u8         remote_qpn[0x18];

	struct mlx5_ifc_ads_bits primary_address_path;

	struct mlx5_ifc_ads_bits secondary_address_path;

	u8         log_ack_req_freq[0x4];
2169
	u8         reserved_at_384[0x4];
2170
	u8         log_sra_max[0x3];
2171
	u8         reserved_at_38b[0x2];
2172 2173
	u8         retry_count[0x3];
	u8         rnr_retry[0x3];
2174
	u8         reserved_at_393[0x1];
2175 2176 2177
	u8         fre[0x1];
	u8         cur_rnr_retry[0x3];
	u8         cur_retry_count[0x3];
2178
	u8         reserved_at_39b[0x5];
2179

2180
	u8         reserved_at_3a0[0x20];
2181

2182
	u8         reserved_at_3c0[0x8];
2183 2184
	u8         next_send_psn[0x18];

2185
	u8         reserved_at_3e0[0x8];
2186 2187
	u8         cqn_snd[0x18];

2188 2189 2190 2191
	u8         reserved_at_400[0x8];
	u8         deth_sqpn[0x18];

	u8         reserved_at_420[0x20];
2192

2193
	u8         reserved_at_440[0x8];
2194 2195
	u8         last_acked_psn[0x18];

2196
	u8         reserved_at_460[0x8];
2197 2198
	u8         ssn[0x18];

2199
	u8         reserved_at_480[0x8];
2200
	u8         log_rra_max[0x3];
2201
	u8         reserved_at_48b[0x1];
2202 2203 2204 2205
	u8         atomic_mode[0x4];
	u8         rre[0x1];
	u8         rwe[0x1];
	u8         rae[0x1];
2206
	u8         reserved_at_493[0x1];
2207
	u8         page_offset[0x6];
2208
	u8         reserved_at_49a[0x3];
2209 2210 2211 2212
	u8         cd_slave_receive[0x1];
	u8         cd_slave_send[0x1];
	u8         cd_master[0x1];

2213
	u8         reserved_at_4a0[0x3];
2214 2215 2216
	u8         min_rnr_nak[0x5];
	u8         next_rcv_psn[0x18];

2217
	u8         reserved_at_4c0[0x8];
2218 2219
	u8         xrcd[0x18];

2220
	u8         reserved_at_4e0[0x8];
2221 2222 2223 2224 2225 2226
	u8         cqn_rcv[0x18];

	u8         dbr_addr[0x40];

	u8         q_key[0x20];

2227
	u8         reserved_at_560[0x5];
2228
	u8         rq_type[0x3];
S
Saeed Mahameed 已提交
2229
	u8         srqn_rmpn_xrqn[0x18];
2230

2231
	u8         reserved_at_580[0x8];
2232 2233 2234 2235 2236 2237 2238 2239 2240
	u8         rmsn[0x18];

	u8         hw_sq_wqebb_counter[0x10];
	u8         sw_sq_wqebb_counter[0x10];

	u8         hw_rq_counter[0x20];

	u8         sw_rq_counter[0x20];

2241
	u8         reserved_at_600[0x20];
2242

2243
	u8         reserved_at_620[0xf];
2244 2245 2246 2247 2248 2249
	u8         cgs[0x1];
	u8         cs_req[0x8];
	u8         cs_res[0x8];

	u8         dc_access_key[0x40];

2250
	u8         reserved_at_680[0xc0];
2251 2252 2253 2254 2255
};

struct mlx5_ifc_roce_addr_layout_bits {
	u8         source_l3_address[16][0x8];

2256
	u8         reserved_at_80[0x3];
2257 2258 2259 2260 2261 2262
	u8         vlan_valid[0x1];
	u8         vlan_id[0xc];
	u8         source_mac_47_32[0x10];

	u8         source_mac_31_0[0x20];

2263
	u8         reserved_at_c0[0x14];
2264 2265 2266
	u8         roce_l3_type[0x4];
	u8         roce_version[0x8];

2267
	u8         reserved_at_e0[0x20];
2268 2269 2270 2271 2272 2273 2274 2275 2276
};

union mlx5_ifc_hca_cap_union_bits {
	struct mlx5_ifc_cmd_hca_cap_bits cmd_hca_cap;
	struct mlx5_ifc_odp_cap_bits odp_cap;
	struct mlx5_ifc_atomic_caps_bits atomic_caps;
	struct mlx5_ifc_roce_cap_bits roce_cap;
	struct mlx5_ifc_per_protocol_networking_offload_caps_bits per_protocol_networking_offload_caps;
	struct mlx5_ifc_flow_table_nic_cap_bits flow_table_nic_cap;
2277
	struct mlx5_ifc_flow_table_eswitch_cap_bits flow_table_eswitch_cap;
2278
	struct mlx5_ifc_e_switch_cap_bits e_switch_cap;
2279
	struct mlx5_ifc_vector_calc_cap_bits vector_calc_cap;
S
Saeed Mahameed 已提交
2280
	struct mlx5_ifc_qos_cap_bits qos_cap;
2281
	struct mlx5_ifc_fpga_cap_bits fpga_cap;
2282
	u8         reserved_at_0[0x8000];
2283 2284 2285 2286 2287 2288
};

enum {
	MLX5_FLOW_CONTEXT_ACTION_ALLOW     = 0x1,
	MLX5_FLOW_CONTEXT_ACTION_DROP      = 0x2,
	MLX5_FLOW_CONTEXT_ACTION_FWD_DEST  = 0x4,
2289
	MLX5_FLOW_CONTEXT_ACTION_COUNT     = 0x8,
2290 2291
	MLX5_FLOW_CONTEXT_ACTION_ENCAP     = 0x10,
	MLX5_FLOW_CONTEXT_ACTION_DECAP     = 0x20,
2292
	MLX5_FLOW_CONTEXT_ACTION_MOD_HDR   = 0x40,
2293 2294 2295
};

struct mlx5_ifc_flow_context_bits {
2296
	u8         reserved_at_0[0x20];
2297 2298 2299

	u8         group_id[0x20];

2300
	u8         reserved_at_40[0x8];
2301 2302
	u8         flow_tag[0x18];

2303
	u8         reserved_at_60[0x10];
2304 2305
	u8         action[0x10];

2306
	u8         reserved_at_80[0x8];
2307 2308
	u8         destination_list_size[0x18];

2309 2310 2311
	u8         reserved_at_a0[0x8];
	u8         flow_counter_list_size[0x18];

2312 2313
	u8         encap_id[0x20];

2314 2315 2316
	u8         modify_header_id[0x20];

	u8         reserved_at_100[0x100];
2317 2318 2319

	struct mlx5_ifc_fte_match_param_bits match_value;

2320
	u8         reserved_at_1200[0x600];
2321

2322
	union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits destination[0];
2323 2324 2325 2326 2327 2328 2329 2330 2331 2332
};

enum {
	MLX5_XRC_SRQC_STATE_GOOD   = 0x0,
	MLX5_XRC_SRQC_STATE_ERROR  = 0x1,
};

struct mlx5_ifc_xrc_srqc_bits {
	u8         state[0x4];
	u8         log_xrc_srq_size[0x4];
2333
	u8         reserved_at_8[0x18];
2334 2335 2336

	u8         wq_signature[0x1];
	u8         cont_srq[0x1];
2337
	u8         reserved_at_22[0x1];
2338 2339 2340 2341 2342 2343
	u8         rlky[0x1];
	u8         basic_cyclic_rcv_wqe[0x1];
	u8         log_rq_stride[0x3];
	u8         xrcd[0x18];

	u8         page_offset[0x6];
2344
	u8         reserved_at_46[0x2];
2345 2346
	u8         cqn[0x18];

2347
	u8         reserved_at_60[0x20];
2348 2349

	u8         user_index_equal_xrc_srqn[0x1];
2350
	u8         reserved_at_81[0x1];
2351 2352 2353
	u8         log_page_size[0x6];
	u8         user_index[0x18];

2354
	u8         reserved_at_a0[0x20];
2355

2356
	u8         reserved_at_c0[0x8];
2357 2358 2359 2360 2361
	u8         pd[0x18];

	u8         lwm[0x10];
	u8         wqe_cnt[0x10];

2362
	u8         reserved_at_100[0x40];
2363 2364 2365 2366

	u8         db_record_addr_h[0x20];

	u8         db_record_addr_l[0x1e];
2367
	u8         reserved_at_17e[0x2];
2368

2369
	u8         reserved_at_180[0x80];
2370 2371 2372 2373 2374 2375 2376 2377 2378
};

struct mlx5_ifc_traffic_counter_bits {
	u8         packets[0x40];

	u8         octets[0x40];
};

struct mlx5_ifc_tisc_bits {
2379 2380 2381 2382 2383
	u8         strict_lag_tx_port_affinity[0x1];
	u8         reserved_at_1[0x3];
	u8         lag_tx_port_affinity[0x04];

	u8         reserved_at_8[0x4];
2384
	u8         prio[0x4];
2385
	u8         reserved_at_10[0x10];
2386

2387
	u8         reserved_at_20[0x100];
2388

2389
	u8         reserved_at_120[0x8];
2390 2391
	u8         transport_domain[0x18];

2392 2393 2394
	u8         reserved_at_140[0x8];
	u8         underlay_qpn[0x18];
	u8         reserved_at_160[0x3a0];
2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407
};

enum {
	MLX5_TIRC_DISP_TYPE_DIRECT    = 0x0,
	MLX5_TIRC_DISP_TYPE_INDIRECT  = 0x1,
};

enum {
	MLX5_TIRC_LRO_ENABLE_MASK_IPV4_LRO  = 0x1,
	MLX5_TIRC_LRO_ENABLE_MASK_IPV6_LRO  = 0x2,
};

enum {
2408 2409 2410
	MLX5_RX_HASH_FN_NONE           = 0x0,
	MLX5_RX_HASH_FN_INVERTED_XOR8  = 0x1,
	MLX5_RX_HASH_FN_TOEPLITZ       = 0x2,
2411 2412 2413 2414 2415 2416 2417 2418
};

enum {
	MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST_    = 0x1,
	MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST_  = 0x2,
};

struct mlx5_ifc_tirc_bits {
2419
	u8         reserved_at_0[0x20];
2420 2421

	u8         disp_type[0x4];
2422
	u8         reserved_at_24[0x1c];
2423

2424
	u8         reserved_at_40[0x40];
2425

2426
	u8         reserved_at_80[0x4];
2427 2428 2429 2430
	u8         lro_timeout_period_usecs[0x10];
	u8         lro_enable_mask[0x4];
	u8         lro_max_ip_payload_size[0x8];

2431
	u8         reserved_at_a0[0x40];
2432

2433
	u8         reserved_at_e0[0x8];
2434 2435 2436
	u8         inline_rqn[0x18];

	u8         rx_hash_symmetric[0x1];
2437
	u8         reserved_at_101[0x1];
2438
	u8         tunneled_offload_en[0x1];
2439
	u8         reserved_at_103[0x5];
2440 2441 2442
	u8         indirect_table[0x18];

	u8         rx_hash_fn[0x4];
2443
	u8         reserved_at_124[0x2];
2444 2445 2446 2447 2448 2449 2450 2451 2452
	u8         self_lb_block[0x2];
	u8         transport_domain[0x18];

	u8         rx_hash_toeplitz_key[10][0x20];

	struct mlx5_ifc_rx_hash_field_select_bits rx_hash_field_selector_outer;

	struct mlx5_ifc_rx_hash_field_select_bits rx_hash_field_selector_inner;

2453
	u8         reserved_at_2c0[0x4c0];
2454 2455 2456 2457 2458 2459 2460 2461 2462 2463
};

enum {
	MLX5_SRQC_STATE_GOOD   = 0x0,
	MLX5_SRQC_STATE_ERROR  = 0x1,
};

struct mlx5_ifc_srqc_bits {
	u8         state[0x4];
	u8         log_srq_size[0x4];
2464
	u8         reserved_at_8[0x18];
2465 2466 2467

	u8         wq_signature[0x1];
	u8         cont_srq[0x1];
2468
	u8         reserved_at_22[0x1];
2469
	u8         rlky[0x1];
2470
	u8         reserved_at_24[0x1];
2471 2472 2473 2474
	u8         log_rq_stride[0x3];
	u8         xrcd[0x18];

	u8         page_offset[0x6];
2475
	u8         reserved_at_46[0x2];
2476 2477
	u8         cqn[0x18];

2478
	u8         reserved_at_60[0x20];
2479

2480
	u8         reserved_at_80[0x2];
2481
	u8         log_page_size[0x6];
2482
	u8         reserved_at_88[0x18];
2483

2484
	u8         reserved_at_a0[0x20];
2485

2486
	u8         reserved_at_c0[0x8];
2487 2488 2489 2490 2491
	u8         pd[0x18];

	u8         lwm[0x10];
	u8         wqe_cnt[0x10];

2492
	u8         reserved_at_100[0x40];
2493

2494
	u8         dbr_addr[0x40];
2495

2496
	u8         reserved_at_180[0x80];
2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509
};

enum {
	MLX5_SQC_STATE_RST  = 0x0,
	MLX5_SQC_STATE_RDY  = 0x1,
	MLX5_SQC_STATE_ERR  = 0x3,
};

struct mlx5_ifc_sqc_bits {
	u8         rlky[0x1];
	u8         cd_master[0x1];
	u8         fre[0x1];
	u8         flush_in_error_en[0x1];
2510
	u8         allow_multi_pkt_send_wqe[0x1];
2511
	u8	   min_wqe_inline_mode[0x3];
2512
	u8         state[0x4];
2513
	u8         reg_umr[0x1];
2514
	u8         allow_swp[0x1];
2515 2516
	u8         hairpin[0x1];
	u8         reserved_at_f[0x11];
2517

2518
	u8         reserved_at_20[0x8];
2519 2520
	u8         user_index[0x18];

2521
	u8         reserved_at_40[0x8];
2522 2523
	u8         cqn[0x18];

2524 2525 2526 2527 2528 2529 2530
	u8         reserved_at_60[0x8];
	u8         hairpin_peer_rq[0x18];

	u8         reserved_at_80[0x10];
	u8         hairpin_peer_vhca[0x10];

	u8         reserved_at_a0[0x50];
2531

S
Saeed Mahameed 已提交
2532
	u8         packet_pacing_rate_limit_index[0x10];
2533
	u8         tis_lst_sz[0x10];
2534
	u8         reserved_at_110[0x10];
2535

2536
	u8         reserved_at_120[0x40];
2537

2538
	u8         reserved_at_160[0x8];
2539 2540 2541 2542 2543
	u8         tis_num_0[0x18];

	struct mlx5_ifc_wq_bits wq;
};

2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567
enum {
	SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR = 0x0,
	SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT = 0x1,
	SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT_TC = 0x2,
	SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC = 0x3,
};

struct mlx5_ifc_scheduling_context_bits {
	u8         element_type[0x8];
	u8         reserved_at_8[0x18];

	u8         element_attributes[0x20];

	u8         parent_element_id[0x20];

	u8         reserved_at_60[0x40];

	u8         bw_share[0x20];

	u8         max_average_bw[0x20];

	u8         reserved_at_e0[0x120];
};

2568
struct mlx5_ifc_rqtc_bits {
2569
	u8         reserved_at_0[0xa0];
2570

2571
	u8         reserved_at_a0[0x10];
2572 2573
	u8         rqt_max_size[0x10];

2574
	u8         reserved_at_c0[0x10];
2575 2576
	u8         rqt_actual_size[0x10];

2577
	u8         reserved_at_e0[0x6a0];
2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594

	struct mlx5_ifc_rq_num_bits rq_num[0];
};

enum {
	MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_INLINE  = 0x0,
	MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_RMP     = 0x1,
};

enum {
	MLX5_RQC_STATE_RST  = 0x0,
	MLX5_RQC_STATE_RDY  = 0x1,
	MLX5_RQC_STATE_ERR  = 0x3,
};

struct mlx5_ifc_rqc_bits {
	u8         rlky[0x1];
2595
	u8	   delay_drop_en[0x1];
2596
	u8         scatter_fcs[0x1];
2597 2598 2599
	u8         vsd[0x1];
	u8         mem_rq_type[0x4];
	u8         state[0x4];
2600
	u8         reserved_at_c[0x1];
2601
	u8         flush_in_error_en[0x1];
2602 2603
	u8         hairpin[0x1];
	u8         reserved_at_f[0x11];
2604

2605
	u8         reserved_at_20[0x8];
2606 2607
	u8         user_index[0x18];

2608
	u8         reserved_at_40[0x8];
2609 2610 2611
	u8         cqn[0x18];

	u8         counter_set_id[0x8];
2612
	u8         reserved_at_68[0x18];
2613

2614
	u8         reserved_at_80[0x8];
2615 2616
	u8         rmpn[0x18];

2617 2618 2619 2620 2621 2622 2623
	u8         reserved_at_a0[0x8];
	u8         hairpin_peer_sq[0x18];

	u8         reserved_at_c0[0x10];
	u8         hairpin_peer_vhca[0x10];

	u8         reserved_at_e0[0xa0];
2624 2625 2626 2627 2628 2629 2630 2631 2632 2633

	struct mlx5_ifc_wq_bits wq;
};

enum {
	MLX5_RMPC_STATE_RDY  = 0x1,
	MLX5_RMPC_STATE_ERR  = 0x3,
};

struct mlx5_ifc_rmpc_bits {
2634
	u8         reserved_at_0[0x8];
2635
	u8         state[0x4];
2636
	u8         reserved_at_c[0x14];
2637 2638

	u8         basic_cyclic_rcv_wqe[0x1];
2639
	u8         reserved_at_21[0x1f];
2640

2641
	u8         reserved_at_40[0x140];
2642 2643 2644 2645 2646

	struct mlx5_ifc_wq_bits wq;
};

struct mlx5_ifc_nic_vport_context_bits {
2647 2648
	u8         reserved_at_0[0x5];
	u8         min_wqe_inline_mode[0x3];
2649 2650 2651
	u8         reserved_at_8[0x15];
	u8         disable_mc_local_lb[0x1];
	u8         disable_uc_local_lb[0x1];
2652 2653
	u8         roce_en[0x1];

2654
	u8         arm_change_event[0x1];
2655
	u8         reserved_at_21[0x1a];
2656 2657 2658 2659 2660
	u8         event_on_mtu[0x1];
	u8         event_on_promisc_change[0x1];
	u8         event_on_vlan_change[0x1];
	u8         event_on_mc_address_change[0x1];
	u8         event_on_uc_address_change[0x1];
2661

2662 2663 2664 2665 2666 2667
	u8         reserved_at_40[0xc];

	u8	   affiliation_criteria[0x4];
	u8	   affiliated_vhca_id[0x10];

	u8	   reserved_at_60[0xd0];
2668 2669 2670

	u8         mtu[0x10];

2671 2672 2673 2674
	u8         system_image_guid[0x40];
	u8         port_guid[0x40];
	u8         node_guid[0x40];

2675
	u8         reserved_at_200[0x140];
2676
	u8         qkey_violation_counter[0x10];
2677
	u8         reserved_at_350[0x430];
2678 2679 2680 2681

	u8         promisc_uc[0x1];
	u8         promisc_mc[0x1];
	u8         promisc_all[0x1];
2682
	u8         reserved_at_783[0x2];
2683
	u8         allowed_list_type[0x3];
2684
	u8         reserved_at_788[0xc];
2685 2686 2687 2688
	u8         allowed_list_size[0xc];

	struct mlx5_ifc_mac_address_layout_bits permanent_address;

2689
	u8         reserved_at_7e0[0x20];
2690 2691 2692 2693 2694 2695 2696 2697

	u8         current_uc_mac_address[0][0x40];
};

enum {
	MLX5_MKC_ACCESS_MODE_PA    = 0x0,
	MLX5_MKC_ACCESS_MODE_MTT   = 0x1,
	MLX5_MKC_ACCESS_MODE_KLMS  = 0x2,
2698
	MLX5_MKC_ACCESS_MODE_KSM   = 0x3,
2699 2700 2701
};

struct mlx5_ifc_mkc_bits {
2702
	u8         reserved_at_0[0x1];
2703
	u8         free[0x1];
2704
	u8         reserved_at_2[0xd];
2705 2706 2707 2708 2709 2710 2711 2712
	u8         small_fence_on_rdma_read_response[0x1];
	u8         umr_en[0x1];
	u8         a[0x1];
	u8         rw[0x1];
	u8         rr[0x1];
	u8         lw[0x1];
	u8         lr[0x1];
	u8         access_mode[0x2];
2713
	u8         reserved_at_18[0x8];
2714 2715 2716 2717

	u8         qpn[0x18];
	u8         mkey_7_0[0x8];

2718
	u8         reserved_at_40[0x20];
2719 2720 2721 2722

	u8         length64[0x1];
	u8         bsf_en[0x1];
	u8         sync_umr[0x1];
2723
	u8         reserved_at_63[0x2];
2724
	u8         expected_sigerr_count[0x1];
2725
	u8         reserved_at_66[0x1];
2726 2727 2728 2729 2730 2731 2732 2733 2734
	u8         en_rinval[0x1];
	u8         pd[0x18];

	u8         start_addr[0x40];

	u8         len[0x40];

	u8         bsf_octword_size[0x20];

2735
	u8         reserved_at_120[0x80];
2736 2737 2738

	u8         translations_octword_size[0x20];

2739
	u8         reserved_at_1c0[0x1b];
2740 2741
	u8         log_page_size[0x5];

2742
	u8         reserved_at_1e0[0x20];
2743 2744 2745
};

struct mlx5_ifc_pkey_bits {
2746
	u8         reserved_at_0[0x10];
2747 2748 2749 2750 2751 2752 2753 2754 2755 2756
	u8         pkey[0x10];
};

struct mlx5_ifc_array128_auto_bits {
	u8         array128_auto[16][0x8];
};

struct mlx5_ifc_hca_vport_context_bits {
	u8         field_select[0x20];

2757
	u8         reserved_at_20[0xe0];
2758 2759 2760 2761 2762

	u8         sm_virt_aware[0x1];
	u8         has_smi[0x1];
	u8         has_raw[0x1];
	u8         grh_required[0x1];
2763
	u8         reserved_at_104[0xc];
2764 2765 2766
	u8         port_physical_state[0x4];
	u8         vport_state_policy[0x4];
	u8         port_state[0x4];
2767 2768
	u8         vport_state[0x4];

2769
	u8         reserved_at_120[0x20];
2770 2771

	u8         system_image_guid[0x40];
2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784

	u8         port_guid[0x40];

	u8         node_guid[0x40];

	u8         cap_mask1[0x20];

	u8         cap_mask1_field_select[0x20];

	u8         cap_mask2[0x20];

	u8         cap_mask2_field_select[0x20];

2785
	u8         reserved_at_280[0x80];
2786 2787

	u8         lid[0x10];
2788
	u8         reserved_at_310[0x4];
2789 2790 2791 2792 2793 2794
	u8         init_type_reply[0x4];
	u8         lmc[0x3];
	u8         subnet_timeout[0x5];

	u8         sm_lid[0x10];
	u8         sm_sl[0x4];
2795
	u8         reserved_at_334[0xc];
2796 2797 2798 2799

	u8         qkey_violation_counter[0x10];
	u8         pkey_violation_counter[0x10];

2800
	u8         reserved_at_360[0xca0];
2801 2802
};

2803
struct mlx5_ifc_esw_vport_context_bits {
2804
	u8         reserved_at_0[0x3];
2805 2806 2807 2808
	u8         vport_svlan_strip[0x1];
	u8         vport_cvlan_strip[0x1];
	u8         vport_svlan_insert[0x1];
	u8         vport_cvlan_insert[0x2];
2809
	u8         reserved_at_8[0x18];
2810

2811
	u8         reserved_at_20[0x20];
2812 2813 2814 2815 2816 2817 2818 2819

	u8         svlan_cfi[0x1];
	u8         svlan_pcp[0x3];
	u8         svlan_id[0xc];
	u8         cvlan_cfi[0x1];
	u8         cvlan_pcp[0x3];
	u8         cvlan_id[0xc];

2820
	u8         reserved_at_60[0x7a0];
2821 2822
};

2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834
enum {
	MLX5_EQC_STATUS_OK                = 0x0,
	MLX5_EQC_STATUS_EQ_WRITE_FAILURE  = 0xa,
};

enum {
	MLX5_EQC_ST_ARMED  = 0x9,
	MLX5_EQC_ST_FIRED  = 0xa,
};

struct mlx5_ifc_eqc_bits {
	u8         status[0x4];
2835
	u8         reserved_at_4[0x9];
2836 2837
	u8         ec[0x1];
	u8         oi[0x1];
2838
	u8         reserved_at_f[0x5];
2839
	u8         st[0x4];
2840
	u8         reserved_at_18[0x8];
2841

2842
	u8         reserved_at_20[0x20];
2843

2844
	u8         reserved_at_40[0x14];
2845
	u8         page_offset[0x6];
2846
	u8         reserved_at_5a[0x6];
2847

2848
	u8         reserved_at_60[0x3];
2849 2850 2851
	u8         log_eq_size[0x5];
	u8         uar_page[0x18];

2852
	u8         reserved_at_80[0x20];
2853

2854
	u8         reserved_at_a0[0x18];
2855 2856
	u8         intr[0x8];

2857
	u8         reserved_at_c0[0x3];
2858
	u8         log_page_size[0x5];
2859
	u8         reserved_at_c8[0x18];
2860

2861
	u8         reserved_at_e0[0x60];
2862

2863
	u8         reserved_at_140[0x8];
2864 2865
	u8         consumer_counter[0x18];

2866
	u8         reserved_at_160[0x8];
2867 2868
	u8         producer_counter[0x18];

2869
	u8         reserved_at_180[0x80];
2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892
};

enum {
	MLX5_DCTC_STATE_ACTIVE    = 0x0,
	MLX5_DCTC_STATE_DRAINING  = 0x1,
	MLX5_DCTC_STATE_DRAINED   = 0x2,
};

enum {
	MLX5_DCTC_CS_RES_DISABLE    = 0x0,
	MLX5_DCTC_CS_RES_NA         = 0x1,
	MLX5_DCTC_CS_RES_UP_TO_64B  = 0x2,
};

enum {
	MLX5_DCTC_MTU_256_BYTES  = 0x1,
	MLX5_DCTC_MTU_512_BYTES  = 0x2,
	MLX5_DCTC_MTU_1K_BYTES   = 0x3,
	MLX5_DCTC_MTU_2K_BYTES   = 0x4,
	MLX5_DCTC_MTU_4K_BYTES   = 0x5,
};

struct mlx5_ifc_dctc_bits {
2893
	u8         reserved_at_0[0x4];
2894
	u8         state[0x4];
2895
	u8         reserved_at_8[0x18];
2896

2897
	u8         reserved_at_20[0x8];
2898 2899
	u8         user_index[0x18];

2900
	u8         reserved_at_40[0x8];
2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911
	u8         cqn[0x18];

	u8         counter_set_id[0x8];
	u8         atomic_mode[0x4];
	u8         rre[0x1];
	u8         rwe[0x1];
	u8         rae[0x1];
	u8         atomic_like_write_en[0x1];
	u8         latency_sensitive[0x1];
	u8         rlky[0x1];
	u8         free_ar[0x1];
2912
	u8         reserved_at_73[0xd];
2913

2914
	u8         reserved_at_80[0x8];
2915
	u8         cs_res[0x8];
2916
	u8         reserved_at_90[0x3];
2917
	u8         min_rnr_nak[0x5];
2918
	u8         reserved_at_98[0x8];
2919

2920
	u8         reserved_at_a0[0x8];
S
Saeed Mahameed 已提交
2921
	u8         srqn_xrqn[0x18];
2922

2923
	u8         reserved_at_c0[0x8];
2924 2925 2926
	u8         pd[0x18];

	u8         tclass[0x8];
2927
	u8         reserved_at_e8[0x4];
2928 2929 2930 2931
	u8         flow_label[0x14];

	u8         dc_access_key[0x40];

2932
	u8         reserved_at_140[0x5];
2933 2934 2935 2936
	u8         mtu[0x3];
	u8         port[0x8];
	u8         pkey_index[0x10];

2937
	u8         reserved_at_160[0x8];
2938
	u8         my_addr_index[0x8];
2939
	u8         reserved_at_170[0x8];
2940 2941 2942 2943
	u8         hop_limit[0x8];

	u8         dc_access_key_violation_count[0x20];

2944
	u8         reserved_at_1a0[0x14];
2945 2946 2947 2948 2949
	u8         dei_cfi[0x1];
	u8         eth_prio[0x3];
	u8         ecn[0x2];
	u8         dscp[0x6];

2950
	u8         reserved_at_1c0[0x40];
2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969
};

enum {
	MLX5_CQC_STATUS_OK             = 0x0,
	MLX5_CQC_STATUS_CQ_OVERFLOW    = 0x9,
	MLX5_CQC_STATUS_CQ_WRITE_FAIL  = 0xa,
};

enum {
	MLX5_CQC_CQE_SZ_64_BYTES   = 0x0,
	MLX5_CQC_CQE_SZ_128_BYTES  = 0x1,
};

enum {
	MLX5_CQC_ST_SOLICITED_NOTIFICATION_REQUEST_ARMED  = 0x6,
	MLX5_CQC_ST_NOTIFICATION_REQUEST_ARMED            = 0x9,
	MLX5_CQC_ST_FIRED                                 = 0xa,
};

2970 2971 2972
enum {
	MLX5_CQ_PERIOD_MODE_START_FROM_EQE = 0x0,
	MLX5_CQ_PERIOD_MODE_START_FROM_CQE = 0x1,
S
Saeed Mahameed 已提交
2973
	MLX5_CQ_PERIOD_NUM_MODES
2974 2975
};

2976 2977
struct mlx5_ifc_cqc_bits {
	u8         status[0x4];
2978
	u8         reserved_at_4[0x4];
2979 2980
	u8         cqe_sz[0x3];
	u8         cc[0x1];
2981
	u8         reserved_at_c[0x1];
2982 2983
	u8         scqe_break_moderation_en[0x1];
	u8         oi[0x1];
2984 2985
	u8         cq_period_mode[0x2];
	u8         cqe_comp_en[0x1];
2986 2987
	u8         mini_cqe_res_format[0x2];
	u8         st[0x4];
2988
	u8         reserved_at_18[0x8];
2989

2990
	u8         reserved_at_20[0x20];
2991

2992
	u8         reserved_at_40[0x14];
2993
	u8         page_offset[0x6];
2994
	u8         reserved_at_5a[0x6];
2995

2996
	u8         reserved_at_60[0x3];
2997 2998 2999
	u8         log_cq_size[0x5];
	u8         uar_page[0x18];

3000
	u8         reserved_at_80[0x4];
3001 3002 3003
	u8         cq_period[0xc];
	u8         cq_max_count[0x10];

3004
	u8         reserved_at_a0[0x18];
3005 3006
	u8         c_eqn[0x8];

3007
	u8         reserved_at_c0[0x3];
3008
	u8         log_page_size[0x5];
3009
	u8         reserved_at_c8[0x18];
3010

3011
	u8         reserved_at_e0[0x20];
3012

3013
	u8         reserved_at_100[0x8];
3014 3015
	u8         last_notified_index[0x18];

3016
	u8         reserved_at_120[0x8];
3017 3018
	u8         last_solicit_index[0x18];

3019
	u8         reserved_at_140[0x8];
3020 3021
	u8         consumer_counter[0x18];

3022
	u8         reserved_at_160[0x8];
3023 3024
	u8         producer_counter[0x18];

3025
	u8         reserved_at_180[0x40];
3026 3027 3028 3029 3030 3031 3032 3033

	u8         dbr_addr[0x40];
};

union mlx5_ifc_cong_control_roce_ecn_auto_bits {
	struct mlx5_ifc_cong_control_802_1qau_rp_bits cong_control_802_1qau_rp;
	struct mlx5_ifc_cong_control_r_roce_ecn_rp_bits cong_control_r_roce_ecn_rp;
	struct mlx5_ifc_cong_control_r_roce_ecn_np_bits cong_control_r_roce_ecn_np;
3034
	u8         reserved_at_0[0x800];
3035 3036 3037
};

struct mlx5_ifc_query_adapter_param_block_bits {
3038
	u8         reserved_at_0[0xc0];
3039

3040
	u8         reserved_at_c0[0x8];
3041 3042
	u8         ieee_vendor_id[0x18];

3043
	u8         reserved_at_e0[0x10];
3044 3045 3046 3047 3048 3049 3050
	u8         vsd_vendor_id[0x10];

	u8         vsd[208][0x8];

	u8         vsd_contd_psid[16][0x8];
};

S
Saeed Mahameed 已提交
3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093
enum {
	MLX5_XRQC_STATE_GOOD   = 0x0,
	MLX5_XRQC_STATE_ERROR  = 0x1,
};

enum {
	MLX5_XRQC_TOPOLOGY_NO_SPECIAL_TOPOLOGY = 0x0,
	MLX5_XRQC_TOPOLOGY_TAG_MATCHING        = 0x1,
};

enum {
	MLX5_XRQC_OFFLOAD_RNDV = 0x1,
};

struct mlx5_ifc_tag_matching_topology_context_bits {
	u8         log_matching_list_sz[0x4];
	u8         reserved_at_4[0xc];
	u8         append_next_index[0x10];

	u8         sw_phase_cnt[0x10];
	u8         hw_phase_cnt[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_xrqc_bits {
	u8         state[0x4];
	u8         rlkey[0x1];
	u8         reserved_at_5[0xf];
	u8         topology[0x4];
	u8         reserved_at_18[0x4];
	u8         offload[0x4];

	u8         reserved_at_20[0x8];
	u8         user_index[0x18];

	u8         reserved_at_40[0x8];
	u8         cqn[0x18];

	u8         reserved_at_60[0xa0];

	struct mlx5_ifc_tag_matching_topology_context_bits tag_matching_topology_context;

3094
	u8         reserved_at_180[0x280];
S
Saeed Mahameed 已提交
3095 3096 3097 3098

	struct mlx5_ifc_wq_bits wq;
};

3099 3100 3101
union mlx5_ifc_modify_field_select_resize_field_select_auto_bits {
	struct mlx5_ifc_modify_field_select_bits modify_field_select;
	struct mlx5_ifc_resize_field_select_bits resize_field_select;
3102
	u8         reserved_at_0[0x20];
3103 3104 3105 3106 3107 3108
};

union mlx5_ifc_field_select_802_1_r_roce_auto_bits {
	struct mlx5_ifc_field_select_802_1qau_rp_bits field_select_802_1qau_rp;
	struct mlx5_ifc_field_select_r_roce_rp_bits field_select_r_roce_rp;
	struct mlx5_ifc_field_select_r_roce_np_bits field_select_r_roce_np;
3109
	u8         reserved_at_0[0x20];
3110 3111 3112 3113 3114 3115 3116 3117 3118 3119
};

union mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits {
	struct mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits eth_802_3_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits eth_2863_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits eth_2819_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits eth_3635_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits eth_extended_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_per_prio_grp_data_layout_bits eth_per_prio_grp_data_layout;
	struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits eth_per_traffic_grp_data_layout;
3120
	struct mlx5_ifc_ib_port_cntrs_grp_data_layout_bits ib_port_cntrs_grp_data_layout;
3121
	struct mlx5_ifc_phys_layer_cntrs_bits phys_layer_cntrs;
3122
	struct mlx5_ifc_phys_layer_statistical_cntrs_bits phys_layer_statistical_cntrs;
3123
	u8         reserved_at_0[0x7c0];
3124 3125
};

3126 3127 3128 3129 3130
union mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits {
	struct mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits pcie_perf_cntrs_grp_data_layout;
	u8         reserved_at_0[0x7c0];
};

3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143
union mlx5_ifc_event_auto_bits {
	struct mlx5_ifc_comp_event_bits comp_event;
	struct mlx5_ifc_dct_events_bits dct_events;
	struct mlx5_ifc_qp_events_bits qp_events;
	struct mlx5_ifc_wqe_associated_page_fault_event_bits wqe_associated_page_fault_event;
	struct mlx5_ifc_rdma_page_fault_event_bits rdma_page_fault_event;
	struct mlx5_ifc_cq_error_bits cq_error;
	struct mlx5_ifc_dropped_packet_logged_bits dropped_packet_logged;
	struct mlx5_ifc_port_state_change_event_bits port_state_change_event;
	struct mlx5_ifc_gpio_event_bits gpio_event;
	struct mlx5_ifc_db_bf_congestion_event_bits db_bf_congestion_event;
	struct mlx5_ifc_stall_vl_event_bits stall_vl_event;
	struct mlx5_ifc_cmd_inter_comp_event_bits cmd_inter_comp_event;
3144
	u8         reserved_at_0[0xe0];
3145 3146 3147
};

struct mlx5_ifc_health_buffer_bits {
3148
	u8         reserved_at_0[0x100];
3149 3150 3151 3152 3153

	u8         assert_existptr[0x20];

	u8         assert_callra[0x20];

3154
	u8         reserved_at_140[0x40];
3155 3156 3157 3158 3159

	u8         fw_version[0x20];

	u8         hw_id[0x20];

3160
	u8         reserved_at_1c0[0x20];
3161 3162 3163 3164 3165 3166 3167 3168

	u8         irisc_index[0x8];
	u8         synd[0x8];
	u8         ext_synd[0x10];
};

struct mlx5_ifc_register_loopback_control_bits {
	u8         no_lb[0x1];
3169
	u8         reserved_at_1[0x7];
3170
	u8         port[0x8];
3171
	u8         reserved_at_10[0x10];
3172

3173
	u8         reserved_at_20[0x60];
3174 3175
};

3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198
struct mlx5_ifc_vport_tc_element_bits {
	u8         traffic_class[0x4];
	u8         reserved_at_4[0xc];
	u8         vport_number[0x10];
};

struct mlx5_ifc_vport_element_bits {
	u8         reserved_at_0[0x10];
	u8         vport_number[0x10];
};

enum {
	TSAR_ELEMENT_TSAR_TYPE_DWRR = 0x0,
	TSAR_ELEMENT_TSAR_TYPE_ROUND_ROBIN = 0x1,
	TSAR_ELEMENT_TSAR_TYPE_ETS = 0x2,
};

struct mlx5_ifc_tsar_element_bits {
	u8         reserved_at_0[0x8];
	u8         tsar_type[0x8];
	u8         reserved_at_10[0x10];
};

3199 3200 3201 3202 3203
enum {
	MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_SUCCESS = 0x0,
	MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_FAIL = 0x1,
};

3204 3205
struct mlx5_ifc_teardown_hca_out_bits {
	u8         status[0x8];
3206
	u8         reserved_at_8[0x18];
3207 3208 3209

	u8         syndrome[0x20];

3210 3211 3212
	u8         reserved_at_40[0x3f];

	u8         force_state[0x1];
3213 3214 3215 3216
};

enum {
	MLX5_TEARDOWN_HCA_IN_PROFILE_GRACEFUL_CLOSE  = 0x0,
3217
	MLX5_TEARDOWN_HCA_IN_PROFILE_FORCE_CLOSE     = 0x1,
3218 3219 3220 3221
};

struct mlx5_ifc_teardown_hca_in_bits {
	u8         opcode[0x10];
3222
	u8         reserved_at_10[0x10];
3223

3224
	u8         reserved_at_20[0x10];
3225 3226
	u8         op_mod[0x10];

3227
	u8         reserved_at_40[0x10];
3228 3229
	u8         profile[0x10];

3230
	u8         reserved_at_60[0x20];
3231 3232 3233 3234
};

struct mlx5_ifc_sqerr2rts_qp_out_bits {
	u8         status[0x8];
3235
	u8         reserved_at_8[0x18];
3236 3237 3238

	u8         syndrome[0x20];

3239
	u8         reserved_at_40[0x40];
3240 3241 3242 3243
};

struct mlx5_ifc_sqerr2rts_qp_in_bits {
	u8         opcode[0x10];
3244
	u8         reserved_at_10[0x10];
3245

3246
	u8         reserved_at_20[0x10];
3247 3248
	u8         op_mod[0x10];

3249
	u8         reserved_at_40[0x8];
3250 3251
	u8         qpn[0x18];

3252
	u8         reserved_at_60[0x20];
3253 3254 3255

	u8         opt_param_mask[0x20];

3256
	u8         reserved_at_a0[0x20];
3257 3258 3259

	struct mlx5_ifc_qpc_bits qpc;

3260
	u8         reserved_at_800[0x80];
3261 3262 3263 3264
};

struct mlx5_ifc_sqd2rts_qp_out_bits {
	u8         status[0x8];
3265
	u8         reserved_at_8[0x18];
3266 3267 3268

	u8         syndrome[0x20];

3269
	u8         reserved_at_40[0x40];
3270 3271 3272 3273
};

struct mlx5_ifc_sqd2rts_qp_in_bits {
	u8         opcode[0x10];
3274
	u8         reserved_at_10[0x10];
3275

3276
	u8         reserved_at_20[0x10];
3277 3278
	u8         op_mod[0x10];

3279
	u8         reserved_at_40[0x8];
3280 3281
	u8         qpn[0x18];

3282
	u8         reserved_at_60[0x20];
3283 3284 3285

	u8         opt_param_mask[0x20];

3286
	u8         reserved_at_a0[0x20];
3287 3288 3289

	struct mlx5_ifc_qpc_bits qpc;

3290
	u8         reserved_at_800[0x80];
3291 3292 3293 3294
};

struct mlx5_ifc_set_roce_address_out_bits {
	u8         status[0x8];
3295
	u8         reserved_at_8[0x18];
3296 3297 3298

	u8         syndrome[0x20];

3299
	u8         reserved_at_40[0x40];
3300 3301 3302 3303
};

struct mlx5_ifc_set_roce_address_in_bits {
	u8         opcode[0x10];
3304
	u8         reserved_at_10[0x10];
3305

3306
	u8         reserved_at_20[0x10];
3307 3308 3309
	u8         op_mod[0x10];

	u8         roce_address_index[0x10];
3310 3311
	u8         reserved_at_50[0xc];
	u8	   vhca_port_num[0x4];
3312

3313
	u8         reserved_at_60[0x20];
3314 3315 3316 3317 3318 3319

	struct mlx5_ifc_roce_addr_layout_bits roce_address;
};

struct mlx5_ifc_set_mad_demux_out_bits {
	u8         status[0x8];
3320
	u8         reserved_at_8[0x18];
3321 3322 3323

	u8         syndrome[0x20];

3324
	u8         reserved_at_40[0x40];
3325 3326 3327 3328 3329 3330 3331 3332 3333
};

enum {
	MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_PASS_ALL   = 0x0,
	MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_SELECTIVE  = 0x2,
};

struct mlx5_ifc_set_mad_demux_in_bits {
	u8         opcode[0x10];
3334
	u8         reserved_at_10[0x10];
3335

3336
	u8         reserved_at_20[0x10];
3337 3338
	u8         op_mod[0x10];

3339
	u8         reserved_at_40[0x20];
3340

3341
	u8         reserved_at_60[0x6];
3342
	u8         demux_mode[0x2];
3343
	u8         reserved_at_68[0x18];
3344 3345 3346 3347
};

struct mlx5_ifc_set_l2_table_entry_out_bits {
	u8         status[0x8];
3348
	u8         reserved_at_8[0x18];
3349 3350 3351

	u8         syndrome[0x20];

3352
	u8         reserved_at_40[0x40];
3353 3354 3355 3356
};

struct mlx5_ifc_set_l2_table_entry_in_bits {
	u8         opcode[0x10];
3357
	u8         reserved_at_10[0x10];
3358

3359
	u8         reserved_at_20[0x10];
3360 3361
	u8         op_mod[0x10];

3362
	u8         reserved_at_40[0x60];
3363

3364
	u8         reserved_at_a0[0x8];
3365 3366
	u8         table_index[0x18];

3367
	u8         reserved_at_c0[0x20];
3368

3369
	u8         reserved_at_e0[0x13];
3370 3371 3372 3373 3374
	u8         vlan_valid[0x1];
	u8         vlan[0xc];

	struct mlx5_ifc_mac_address_layout_bits mac_address;

3375
	u8         reserved_at_140[0xc0];
3376 3377 3378 3379
};

struct mlx5_ifc_set_issi_out_bits {
	u8         status[0x8];
3380
	u8         reserved_at_8[0x18];
3381 3382 3383

	u8         syndrome[0x20];

3384
	u8         reserved_at_40[0x40];
3385 3386 3387 3388
};

struct mlx5_ifc_set_issi_in_bits {
	u8         opcode[0x10];
3389
	u8         reserved_at_10[0x10];
3390

3391
	u8         reserved_at_20[0x10];
3392 3393
	u8         op_mod[0x10];

3394
	u8         reserved_at_40[0x10];
3395 3396
	u8         current_issi[0x10];

3397
	u8         reserved_at_60[0x20];
3398 3399 3400 3401
};

struct mlx5_ifc_set_hca_cap_out_bits {
	u8         status[0x8];
3402
	u8         reserved_at_8[0x18];
3403 3404 3405

	u8         syndrome[0x20];

3406
	u8         reserved_at_40[0x40];
3407 3408 3409 3410
};

struct mlx5_ifc_set_hca_cap_in_bits {
	u8         opcode[0x10];
3411
	u8         reserved_at_10[0x10];
3412

3413
	u8         reserved_at_20[0x10];
3414 3415
	u8         op_mod[0x10];

3416
	u8         reserved_at_40[0x40];
3417 3418 3419 3420

	union mlx5_ifc_hca_cap_union_bits capability;
};

3421 3422 3423 3424 3425 3426 3427
enum {
	MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION    = 0x0,
	MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_TAG  = 0x1,
	MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST    = 0x2,
	MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS    = 0x3
};

3428 3429
struct mlx5_ifc_set_fte_out_bits {
	u8         status[0x8];
3430
	u8         reserved_at_8[0x18];
3431 3432 3433

	u8         syndrome[0x20];

3434
	u8         reserved_at_40[0x40];
3435 3436 3437 3438
};

struct mlx5_ifc_set_fte_in_bits {
	u8         opcode[0x10];
3439
	u8         reserved_at_10[0x10];
3440

3441
	u8         reserved_at_20[0x10];
3442 3443
	u8         op_mod[0x10];

3444 3445 3446 3447 3448
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
3449 3450

	u8         table_type[0x8];
3451
	u8         reserved_at_88[0x18];
3452

3453
	u8         reserved_at_a0[0x8];
3454 3455
	u8         table_id[0x18];

3456
	u8         reserved_at_c0[0x18];
3457 3458
	u8         modify_enable_mask[0x8];

3459
	u8         reserved_at_e0[0x20];
3460 3461 3462

	u8         flow_index[0x20];

3463
	u8         reserved_at_120[0xe0];
3464 3465 3466 3467 3468 3469

	struct mlx5_ifc_flow_context_bits flow_context;
};

struct mlx5_ifc_rts2rts_qp_out_bits {
	u8         status[0x8];
3470
	u8         reserved_at_8[0x18];
3471 3472 3473

	u8         syndrome[0x20];

3474
	u8         reserved_at_40[0x40];
3475 3476 3477 3478
};

struct mlx5_ifc_rts2rts_qp_in_bits {
	u8         opcode[0x10];
3479
	u8         reserved_at_10[0x10];
3480

3481
	u8         reserved_at_20[0x10];
3482 3483
	u8         op_mod[0x10];

3484
	u8         reserved_at_40[0x8];
3485 3486
	u8         qpn[0x18];

3487
	u8         reserved_at_60[0x20];
3488 3489 3490

	u8         opt_param_mask[0x20];

3491
	u8         reserved_at_a0[0x20];
3492 3493 3494

	struct mlx5_ifc_qpc_bits qpc;

3495
	u8         reserved_at_800[0x80];
3496 3497 3498 3499
};

struct mlx5_ifc_rtr2rts_qp_out_bits {
	u8         status[0x8];
3500
	u8         reserved_at_8[0x18];
3501 3502 3503

	u8         syndrome[0x20];

3504
	u8         reserved_at_40[0x40];
3505 3506 3507 3508
};

struct mlx5_ifc_rtr2rts_qp_in_bits {
	u8         opcode[0x10];
3509
	u8         reserved_at_10[0x10];
3510

3511
	u8         reserved_at_20[0x10];
3512 3513
	u8         op_mod[0x10];

3514
	u8         reserved_at_40[0x8];
3515 3516
	u8         qpn[0x18];

3517
	u8         reserved_at_60[0x20];
3518 3519 3520

	u8         opt_param_mask[0x20];

3521
	u8         reserved_at_a0[0x20];
3522 3523 3524

	struct mlx5_ifc_qpc_bits qpc;

3525
	u8         reserved_at_800[0x80];
3526 3527 3528 3529
};

struct mlx5_ifc_rst2init_qp_out_bits {
	u8         status[0x8];
3530
	u8         reserved_at_8[0x18];
3531 3532 3533

	u8         syndrome[0x20];

3534
	u8         reserved_at_40[0x40];
3535 3536 3537 3538
};

struct mlx5_ifc_rst2init_qp_in_bits {
	u8         opcode[0x10];
3539
	u8         reserved_at_10[0x10];
3540

3541
	u8         reserved_at_20[0x10];
3542 3543
	u8         op_mod[0x10];

3544
	u8         reserved_at_40[0x8];
3545 3546
	u8         qpn[0x18];

3547
	u8         reserved_at_60[0x20];
3548 3549 3550

	u8         opt_param_mask[0x20];

3551
	u8         reserved_at_a0[0x20];
3552 3553 3554

	struct mlx5_ifc_qpc_bits qpc;

3555
	u8         reserved_at_800[0x80];
3556 3557
};

S
Saeed Mahameed 已提交
3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581
struct mlx5_ifc_query_xrq_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];

	struct mlx5_ifc_xrqc_bits xrq_context;
};

struct mlx5_ifc_query_xrq_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x8];
	u8         xrqn[0x18];

	u8         reserved_at_60[0x20];
};

3582 3583
struct mlx5_ifc_query_xrc_srq_out_bits {
	u8         status[0x8];
3584
	u8         reserved_at_8[0x18];
3585 3586 3587

	u8         syndrome[0x20];

3588
	u8         reserved_at_40[0x40];
3589 3590 3591

	struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry;

3592
	u8         reserved_at_280[0x600];
3593 3594 3595 3596 3597 3598

	u8         pas[0][0x40];
};

struct mlx5_ifc_query_xrc_srq_in_bits {
	u8         opcode[0x10];
3599
	u8         reserved_at_10[0x10];
3600

3601
	u8         reserved_at_20[0x10];
3602 3603
	u8         op_mod[0x10];

3604
	u8         reserved_at_40[0x8];
3605 3606
	u8         xrc_srqn[0x18];

3607
	u8         reserved_at_60[0x20];
3608 3609 3610 3611 3612 3613 3614 3615 3616
};

enum {
	MLX5_QUERY_VPORT_STATE_OUT_STATE_DOWN  = 0x0,
	MLX5_QUERY_VPORT_STATE_OUT_STATE_UP    = 0x1,
};

struct mlx5_ifc_query_vport_state_out_bits {
	u8         status[0x8];
3617
	u8         reserved_at_8[0x18];
3618 3619 3620

	u8         syndrome[0x20];

3621
	u8         reserved_at_40[0x20];
3622

3623
	u8         reserved_at_60[0x18];
3624 3625 3626 3627 3628 3629
	u8         admin_state[0x4];
	u8         state[0x4];
};

enum {
	MLX5_QUERY_VPORT_STATE_IN_OP_MOD_VNIC_VPORT  = 0x0,
3630
	MLX5_QUERY_VPORT_STATE_IN_OP_MOD_ESW_VPORT   = 0x1,
3631 3632 3633 3634
};

struct mlx5_ifc_query_vport_state_in_bits {
	u8         opcode[0x10];
3635
	u8         reserved_at_10[0x10];
3636

3637
	u8         reserved_at_20[0x10];
3638 3639 3640
	u8         op_mod[0x10];

	u8         other_vport[0x1];
3641
	u8         reserved_at_41[0xf];
3642 3643
	u8         vport_number[0x10];

3644
	u8         reserved_at_60[0x20];
3645 3646 3647 3648
};

struct mlx5_ifc_query_vport_counter_out_bits {
	u8         status[0x8];
3649
	u8         reserved_at_8[0x18];
3650 3651 3652

	u8         syndrome[0x20];

3653
	u8         reserved_at_40[0x40];
3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678

	struct mlx5_ifc_traffic_counter_bits received_errors;

	struct mlx5_ifc_traffic_counter_bits transmit_errors;

	struct mlx5_ifc_traffic_counter_bits received_ib_unicast;

	struct mlx5_ifc_traffic_counter_bits transmitted_ib_unicast;

	struct mlx5_ifc_traffic_counter_bits received_ib_multicast;

	struct mlx5_ifc_traffic_counter_bits transmitted_ib_multicast;

	struct mlx5_ifc_traffic_counter_bits received_eth_broadcast;

	struct mlx5_ifc_traffic_counter_bits transmitted_eth_broadcast;

	struct mlx5_ifc_traffic_counter_bits received_eth_unicast;

	struct mlx5_ifc_traffic_counter_bits transmitted_eth_unicast;

	struct mlx5_ifc_traffic_counter_bits received_eth_multicast;

	struct mlx5_ifc_traffic_counter_bits transmitted_eth_multicast;

3679
	u8         reserved_at_680[0xa00];
3680 3681 3682 3683 3684 3685 3686 3687
};

enum {
	MLX5_QUERY_VPORT_COUNTER_IN_OP_MOD_VPORT_COUNTERS  = 0x0,
};

struct mlx5_ifc_query_vport_counter_in_bits {
	u8         opcode[0x10];
3688
	u8         reserved_at_10[0x10];
3689

3690
	u8         reserved_at_20[0x10];
3691 3692 3693
	u8         op_mod[0x10];

	u8         other_vport[0x1];
3694 3695
	u8         reserved_at_41[0xb];
	u8	   port_num[0x4];
3696 3697
	u8         vport_number[0x10];

3698
	u8         reserved_at_60[0x60];
3699 3700

	u8         clear[0x1];
3701
	u8         reserved_at_c1[0x1f];
3702

3703
	u8         reserved_at_e0[0x20];
3704 3705 3706 3707
};

struct mlx5_ifc_query_tis_out_bits {
	u8         status[0x8];
3708
	u8         reserved_at_8[0x18];
3709 3710 3711

	u8         syndrome[0x20];

3712
	u8         reserved_at_40[0x40];
3713 3714 3715 3716 3717 3718

	struct mlx5_ifc_tisc_bits tis_context;
};

struct mlx5_ifc_query_tis_in_bits {
	u8         opcode[0x10];
3719
	u8         reserved_at_10[0x10];
3720

3721
	u8         reserved_at_20[0x10];
3722 3723
	u8         op_mod[0x10];

3724
	u8         reserved_at_40[0x8];
3725 3726
	u8         tisn[0x18];

3727
	u8         reserved_at_60[0x20];
3728 3729 3730 3731
};

struct mlx5_ifc_query_tir_out_bits {
	u8         status[0x8];
3732
	u8         reserved_at_8[0x18];
3733 3734 3735

	u8         syndrome[0x20];

3736
	u8         reserved_at_40[0xc0];
3737 3738 3739 3740 3741 3742

	struct mlx5_ifc_tirc_bits tir_context;
};

struct mlx5_ifc_query_tir_in_bits {
	u8         opcode[0x10];
3743
	u8         reserved_at_10[0x10];
3744

3745
	u8         reserved_at_20[0x10];
3746 3747
	u8         op_mod[0x10];

3748
	u8         reserved_at_40[0x8];
3749 3750
	u8         tirn[0x18];

3751
	u8         reserved_at_60[0x20];
3752 3753 3754 3755
};

struct mlx5_ifc_query_srq_out_bits {
	u8         status[0x8];
3756
	u8         reserved_at_8[0x18];
3757 3758 3759

	u8         syndrome[0x20];

3760
	u8         reserved_at_40[0x40];
3761 3762 3763

	struct mlx5_ifc_srqc_bits srq_context_entry;

3764
	u8         reserved_at_280[0x600];
3765 3766 3767 3768 3769 3770

	u8         pas[0][0x40];
};

struct mlx5_ifc_query_srq_in_bits {
	u8         opcode[0x10];
3771
	u8         reserved_at_10[0x10];
3772

3773
	u8         reserved_at_20[0x10];
3774 3775
	u8         op_mod[0x10];

3776
	u8         reserved_at_40[0x8];
3777 3778
	u8         srqn[0x18];

3779
	u8         reserved_at_60[0x20];
3780 3781 3782 3783
};

struct mlx5_ifc_query_sq_out_bits {
	u8         status[0x8];
3784
	u8         reserved_at_8[0x18];
3785 3786 3787

	u8         syndrome[0x20];

3788
	u8         reserved_at_40[0xc0];
3789 3790 3791 3792 3793 3794

	struct mlx5_ifc_sqc_bits sq_context;
};

struct mlx5_ifc_query_sq_in_bits {
	u8         opcode[0x10];
3795
	u8         reserved_at_10[0x10];
3796

3797
	u8         reserved_at_20[0x10];
3798 3799
	u8         op_mod[0x10];

3800
	u8         reserved_at_40[0x8];
3801 3802
	u8         sqn[0x18];

3803
	u8         reserved_at_60[0x20];
3804 3805 3806 3807
};

struct mlx5_ifc_query_special_contexts_out_bits {
	u8         status[0x8];
3808
	u8         reserved_at_8[0x18];
3809 3810 3811

	u8         syndrome[0x20];

3812
	u8         dump_fill_mkey[0x20];
3813 3814

	u8         resd_lkey[0x20];
3815 3816 3817 3818

	u8         null_mkey[0x20];

	u8         reserved_at_a0[0x60];
3819 3820 3821 3822
};

struct mlx5_ifc_query_special_contexts_in_bits {
	u8         opcode[0x10];
3823
	u8         reserved_at_10[0x10];
3824

3825
	u8         reserved_at_20[0x10];
3826 3827
	u8         op_mod[0x10];

3828
	u8         reserved_at_40[0x40];
3829 3830
};

3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863
struct mlx5_ifc_query_scheduling_element_out_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0xc0];

	struct mlx5_ifc_scheduling_context_bits scheduling_context;

	u8         reserved_at_300[0x100];
};

enum {
	SCHEDULING_HIERARCHY_E_SWITCH = 0x2,
};

struct mlx5_ifc_query_scheduling_element_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         scheduling_hierarchy[0x8];
	u8         reserved_at_48[0x18];

	u8         scheduling_element_id[0x20];

	u8         reserved_at_80[0x180];
};

3864 3865
struct mlx5_ifc_query_rqt_out_bits {
	u8         status[0x8];
3866
	u8         reserved_at_8[0x18];
3867 3868 3869

	u8         syndrome[0x20];

3870
	u8         reserved_at_40[0xc0];
3871 3872 3873 3874 3875 3876

	struct mlx5_ifc_rqtc_bits rqt_context;
};

struct mlx5_ifc_query_rqt_in_bits {
	u8         opcode[0x10];
3877
	u8         reserved_at_10[0x10];
3878

3879
	u8         reserved_at_20[0x10];
3880 3881
	u8         op_mod[0x10];

3882
	u8         reserved_at_40[0x8];
3883 3884
	u8         rqtn[0x18];

3885
	u8         reserved_at_60[0x20];
3886 3887 3888 3889
};

struct mlx5_ifc_query_rq_out_bits {
	u8         status[0x8];
3890
	u8         reserved_at_8[0x18];
3891 3892 3893

	u8         syndrome[0x20];

3894
	u8         reserved_at_40[0xc0];
3895 3896 3897 3898 3899 3900

	struct mlx5_ifc_rqc_bits rq_context;
};

struct mlx5_ifc_query_rq_in_bits {
	u8         opcode[0x10];
3901
	u8         reserved_at_10[0x10];
3902

3903
	u8         reserved_at_20[0x10];
3904 3905
	u8         op_mod[0x10];

3906
	u8         reserved_at_40[0x8];
3907 3908
	u8         rqn[0x18];

3909
	u8         reserved_at_60[0x20];
3910 3911 3912 3913
};

struct mlx5_ifc_query_roce_address_out_bits {
	u8         status[0x8];
3914
	u8         reserved_at_8[0x18];
3915 3916 3917

	u8         syndrome[0x20];

3918
	u8         reserved_at_40[0x40];
3919 3920 3921 3922 3923 3924

	struct mlx5_ifc_roce_addr_layout_bits roce_address;
};

struct mlx5_ifc_query_roce_address_in_bits {
	u8         opcode[0x10];
3925
	u8         reserved_at_10[0x10];
3926

3927
	u8         reserved_at_20[0x10];
3928 3929 3930
	u8         op_mod[0x10];

	u8         roce_address_index[0x10];
3931 3932
	u8         reserved_at_50[0xc];
	u8	   vhca_port_num[0x4];
3933

3934
	u8         reserved_at_60[0x20];
3935 3936 3937 3938
};

struct mlx5_ifc_query_rmp_out_bits {
	u8         status[0x8];
3939
	u8         reserved_at_8[0x18];
3940 3941 3942

	u8         syndrome[0x20];

3943
	u8         reserved_at_40[0xc0];
3944 3945 3946 3947 3948 3949

	struct mlx5_ifc_rmpc_bits rmp_context;
};

struct mlx5_ifc_query_rmp_in_bits {
	u8         opcode[0x10];
3950
	u8         reserved_at_10[0x10];
3951

3952
	u8         reserved_at_20[0x10];
3953 3954
	u8         op_mod[0x10];

3955
	u8         reserved_at_40[0x8];
3956 3957
	u8         rmpn[0x18];

3958
	u8         reserved_at_60[0x20];
3959 3960 3961 3962
};

struct mlx5_ifc_query_qp_out_bits {
	u8         status[0x8];
3963
	u8         reserved_at_8[0x18];
3964 3965 3966

	u8         syndrome[0x20];

3967
	u8         reserved_at_40[0x40];
3968 3969 3970

	u8         opt_param_mask[0x20];

3971
	u8         reserved_at_a0[0x20];
3972 3973 3974

	struct mlx5_ifc_qpc_bits qpc;

3975
	u8         reserved_at_800[0x80];
3976 3977 3978 3979 3980 3981

	u8         pas[0][0x40];
};

struct mlx5_ifc_query_qp_in_bits {
	u8         opcode[0x10];
3982
	u8         reserved_at_10[0x10];
3983

3984
	u8         reserved_at_20[0x10];
3985 3986
	u8         op_mod[0x10];

3987
	u8         reserved_at_40[0x8];
3988 3989
	u8         qpn[0x18];

3990
	u8         reserved_at_60[0x20];
3991 3992 3993 3994
};

struct mlx5_ifc_query_q_counter_out_bits {
	u8         status[0x8];
3995
	u8         reserved_at_8[0x18];
3996 3997 3998

	u8         syndrome[0x20];

3999
	u8         reserved_at_40[0x40];
4000 4001 4002

	u8         rx_write_requests[0x20];

4003
	u8         reserved_at_a0[0x20];
4004 4005 4006

	u8         rx_read_requests[0x20];

4007
	u8         reserved_at_e0[0x20];
4008 4009 4010

	u8         rx_atomic_requests[0x20];

4011
	u8         reserved_at_120[0x20];
4012 4013 4014

	u8         rx_dct_connect[0x20];

4015
	u8         reserved_at_160[0x20];
4016 4017 4018

	u8         out_of_buffer[0x20];

4019
	u8         reserved_at_1a0[0x20];
4020 4021 4022

	u8         out_of_sequence[0x20];

S
Saeed Mahameed 已提交
4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042
	u8         reserved_at_1e0[0x20];

	u8         duplicate_request[0x20];

	u8         reserved_at_220[0x20];

	u8         rnr_nak_retry_err[0x20];

	u8         reserved_at_260[0x20];

	u8         packet_seq_err[0x20];

	u8         reserved_at_2a0[0x20];

	u8         implied_nak_seq_err[0x20];

	u8         reserved_at_2e0[0x20];

	u8         local_ack_timeout_err[0x20];

4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083
	u8         reserved_at_320[0xa0];

	u8         resp_local_length_error[0x20];

	u8         req_local_length_error[0x20];

	u8         resp_local_qp_error[0x20];

	u8         local_operation_error[0x20];

	u8         resp_local_protection[0x20];

	u8         req_local_protection[0x20];

	u8         resp_cqe_error[0x20];

	u8         req_cqe_error[0x20];

	u8         req_mw_binding[0x20];

	u8         req_bad_response[0x20];

	u8         req_remote_invalid_request[0x20];

	u8         resp_remote_invalid_request[0x20];

	u8         req_remote_access_errors[0x20];

	u8	   resp_remote_access_errors[0x20];

	u8         req_remote_operation_errors[0x20];

	u8         req_transport_retries_exceeded[0x20];

	u8         cq_overflow[0x20];

	u8         resp_cqe_flush_error[0x20];

	u8         req_cqe_flush_error[0x20];

	u8         reserved_at_620[0x1e0];
4084 4085 4086 4087
};

struct mlx5_ifc_query_q_counter_in_bits {
	u8         opcode[0x10];
4088
	u8         reserved_at_10[0x10];
4089

4090
	u8         reserved_at_20[0x10];
4091 4092
	u8         op_mod[0x10];

4093
	u8         reserved_at_40[0x80];
4094 4095

	u8         clear[0x1];
4096
	u8         reserved_at_c1[0x1f];
4097

4098
	u8         reserved_at_e0[0x18];
4099 4100 4101 4102 4103
	u8         counter_set_id[0x8];
};

struct mlx5_ifc_query_pages_out_bits {
	u8         status[0x8];
4104
	u8         reserved_at_8[0x18];
4105 4106 4107

	u8         syndrome[0x20];

4108
	u8         reserved_at_40[0x10];
4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121
	u8         function_id[0x10];

	u8         num_pages[0x20];
};

enum {
	MLX5_QUERY_PAGES_IN_OP_MOD_BOOT_PAGES     = 0x1,
	MLX5_QUERY_PAGES_IN_OP_MOD_INIT_PAGES     = 0x2,
	MLX5_QUERY_PAGES_IN_OP_MOD_REGULAR_PAGES  = 0x3,
};

struct mlx5_ifc_query_pages_in_bits {
	u8         opcode[0x10];
4122
	u8         reserved_at_10[0x10];
4123

4124
	u8         reserved_at_20[0x10];
4125 4126
	u8         op_mod[0x10];

4127
	u8         reserved_at_40[0x10];
4128 4129
	u8         function_id[0x10];

4130
	u8         reserved_at_60[0x20];
4131 4132 4133 4134
};

struct mlx5_ifc_query_nic_vport_context_out_bits {
	u8         status[0x8];
4135
	u8         reserved_at_8[0x18];
4136 4137 4138

	u8         syndrome[0x20];

4139
	u8         reserved_at_40[0x40];
4140 4141 4142 4143 4144 4145

	struct mlx5_ifc_nic_vport_context_bits nic_vport_context;
};

struct mlx5_ifc_query_nic_vport_context_in_bits {
	u8         opcode[0x10];
4146
	u8         reserved_at_10[0x10];
4147

4148
	u8         reserved_at_20[0x10];
4149 4150 4151
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4152
	u8         reserved_at_41[0xf];
4153 4154
	u8         vport_number[0x10];

4155
	u8         reserved_at_60[0x5];
4156
	u8         allowed_list_type[0x3];
4157
	u8         reserved_at_68[0x18];
4158 4159 4160 4161
};

struct mlx5_ifc_query_mkey_out_bits {
	u8         status[0x8];
4162
	u8         reserved_at_8[0x18];
4163 4164 4165

	u8         syndrome[0x20];

4166
	u8         reserved_at_40[0x40];
4167 4168 4169

	struct mlx5_ifc_mkc_bits memory_key_mkey_entry;

4170
	u8         reserved_at_280[0x600];
4171 4172 4173 4174 4175 4176 4177 4178

	u8         bsf0_klm0_pas_mtt0_1[16][0x8];

	u8         bsf1_klm1_pas_mtt2_3[16][0x8];
};

struct mlx5_ifc_query_mkey_in_bits {
	u8         opcode[0x10];
4179
	u8         reserved_at_10[0x10];
4180

4181
	u8         reserved_at_20[0x10];
4182 4183
	u8         op_mod[0x10];

4184
	u8         reserved_at_40[0x8];
4185 4186 4187
	u8         mkey_index[0x18];

	u8         pg_access[0x1];
4188
	u8         reserved_at_61[0x1f];
4189 4190 4191 4192
};

struct mlx5_ifc_query_mad_demux_out_bits {
	u8         status[0x8];
4193
	u8         reserved_at_8[0x18];
4194 4195 4196

	u8         syndrome[0x20];

4197
	u8         reserved_at_40[0x40];
4198 4199 4200 4201 4202 4203

	u8         mad_dumux_parameters_block[0x20];
};

struct mlx5_ifc_query_mad_demux_in_bits {
	u8         opcode[0x10];
4204
	u8         reserved_at_10[0x10];
4205

4206
	u8         reserved_at_20[0x10];
4207 4208
	u8         op_mod[0x10];

4209
	u8         reserved_at_40[0x40];
4210 4211 4212 4213
};

struct mlx5_ifc_query_l2_table_entry_out_bits {
	u8         status[0x8];
4214
	u8         reserved_at_8[0x18];
4215 4216 4217

	u8         syndrome[0x20];

4218
	u8         reserved_at_40[0xa0];
4219

4220
	u8         reserved_at_e0[0x13];
4221 4222 4223 4224 4225
	u8         vlan_valid[0x1];
	u8         vlan[0xc];

	struct mlx5_ifc_mac_address_layout_bits mac_address;

4226
	u8         reserved_at_140[0xc0];
4227 4228 4229 4230
};

struct mlx5_ifc_query_l2_table_entry_in_bits {
	u8         opcode[0x10];
4231
	u8         reserved_at_10[0x10];
4232

4233
	u8         reserved_at_20[0x10];
4234 4235
	u8         op_mod[0x10];

4236
	u8         reserved_at_40[0x60];
4237

4238
	u8         reserved_at_a0[0x8];
4239 4240
	u8         table_index[0x18];

4241
	u8         reserved_at_c0[0x140];
4242 4243 4244 4245
};

struct mlx5_ifc_query_issi_out_bits {
	u8         status[0x8];
4246
	u8         reserved_at_8[0x18];
4247 4248 4249

	u8         syndrome[0x20];

4250
	u8         reserved_at_40[0x10];
4251 4252
	u8         current_issi[0x10];

4253
	u8         reserved_at_60[0xa0];
4254

4255
	u8         reserved_at_100[76][0x8];
4256 4257 4258 4259 4260
	u8         supported_issi_dw0[0x20];
};

struct mlx5_ifc_query_issi_in_bits {
	u8         opcode[0x10];
4261
	u8         reserved_at_10[0x10];
4262

4263
	u8         reserved_at_20[0x10];
4264 4265
	u8         op_mod[0x10];

4266
	u8         reserved_at_40[0x40];
4267 4268
};

4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287
struct mlx5_ifc_set_driver_version_out_bits {
	u8         status[0x8];
	u8         reserved_0[0x18];

	u8         syndrome[0x20];
	u8         reserved_1[0x40];
};

struct mlx5_ifc_set_driver_version_in_bits {
	u8         opcode[0x10];
	u8         reserved_0[0x10];

	u8         reserved_1[0x10];
	u8         op_mod[0x10];

	u8         reserved_2[0x40];
	u8         driver_version[64][0x8];
};

4288 4289
struct mlx5_ifc_query_hca_vport_pkey_out_bits {
	u8         status[0x8];
4290
	u8         reserved_at_8[0x18];
4291 4292 4293

	u8         syndrome[0x20];

4294
	u8         reserved_at_40[0x40];
4295 4296 4297 4298 4299 4300

	struct mlx5_ifc_pkey_bits pkey[0];
};

struct mlx5_ifc_query_hca_vport_pkey_in_bits {
	u8         opcode[0x10];
4301
	u8         reserved_at_10[0x10];
4302

4303
	u8         reserved_at_20[0x10];
4304 4305 4306
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4307
	u8         reserved_at_41[0xb];
4308
	u8         port_num[0x4];
4309 4310
	u8         vport_number[0x10];

4311
	u8         reserved_at_60[0x10];
4312 4313 4314
	u8         pkey_index[0x10];
};

4315 4316 4317 4318 4319 4320
enum {
	MLX5_HCA_VPORT_SEL_PORT_GUID	= 1 << 0,
	MLX5_HCA_VPORT_SEL_NODE_GUID	= 1 << 1,
	MLX5_HCA_VPORT_SEL_STATE_POLICY	= 1 << 2,
};

4321 4322
struct mlx5_ifc_query_hca_vport_gid_out_bits {
	u8         status[0x8];
4323
	u8         reserved_at_8[0x18];
4324 4325 4326

	u8         syndrome[0x20];

4327
	u8         reserved_at_40[0x20];
4328 4329

	u8         gids_num[0x10];
4330
	u8         reserved_at_70[0x10];
4331 4332 4333 4334 4335 4336

	struct mlx5_ifc_array128_auto_bits gid[0];
};

struct mlx5_ifc_query_hca_vport_gid_in_bits {
	u8         opcode[0x10];
4337
	u8         reserved_at_10[0x10];
4338

4339
	u8         reserved_at_20[0x10];
4340 4341 4342
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4343
	u8         reserved_at_41[0xb];
4344
	u8         port_num[0x4];
4345 4346
	u8         vport_number[0x10];

4347
	u8         reserved_at_60[0x10];
4348 4349 4350 4351 4352
	u8         gid_index[0x10];
};

struct mlx5_ifc_query_hca_vport_context_out_bits {
	u8         status[0x8];
4353
	u8         reserved_at_8[0x18];
4354 4355 4356

	u8         syndrome[0x20];

4357
	u8         reserved_at_40[0x40];
4358 4359 4360 4361 4362 4363

	struct mlx5_ifc_hca_vport_context_bits hca_vport_context;
};

struct mlx5_ifc_query_hca_vport_context_in_bits {
	u8         opcode[0x10];
4364
	u8         reserved_at_10[0x10];
4365

4366
	u8         reserved_at_20[0x10];
4367 4368 4369
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4370
	u8         reserved_at_41[0xb];
4371
	u8         port_num[0x4];
4372 4373
	u8         vport_number[0x10];

4374
	u8         reserved_at_60[0x20];
4375 4376 4377 4378
};

struct mlx5_ifc_query_hca_cap_out_bits {
	u8         status[0x8];
4379
	u8         reserved_at_8[0x18];
4380 4381 4382

	u8         syndrome[0x20];

4383
	u8         reserved_at_40[0x40];
4384 4385 4386 4387 4388 4389

	union mlx5_ifc_hca_cap_union_bits capability;
};

struct mlx5_ifc_query_hca_cap_in_bits {
	u8         opcode[0x10];
4390
	u8         reserved_at_10[0x10];
4391

4392
	u8         reserved_at_20[0x10];
4393 4394
	u8         op_mod[0x10];

4395
	u8         reserved_at_40[0x40];
4396 4397 4398 4399
};

struct mlx5_ifc_query_flow_table_out_bits {
	u8         status[0x8];
4400
	u8         reserved_at_8[0x18];
4401 4402 4403

	u8         syndrome[0x20];

4404
	u8         reserved_at_40[0x80];
4405

4406
	u8         reserved_at_c0[0x8];
4407
	u8         level[0x8];
4408
	u8         reserved_at_d0[0x8];
4409 4410
	u8         log_size[0x8];

4411
	u8         reserved_at_e0[0x120];
4412 4413 4414 4415
};

struct mlx5_ifc_query_flow_table_in_bits {
	u8         opcode[0x10];
4416
	u8         reserved_at_10[0x10];
4417

4418
	u8         reserved_at_20[0x10];
4419 4420
	u8         op_mod[0x10];

4421
	u8         reserved_at_40[0x40];
4422 4423

	u8         table_type[0x8];
4424
	u8         reserved_at_88[0x18];
4425

4426
	u8         reserved_at_a0[0x8];
4427 4428
	u8         table_id[0x18];

4429
	u8         reserved_at_c0[0x140];
4430 4431 4432 4433
};

struct mlx5_ifc_query_fte_out_bits {
	u8         status[0x8];
4434
	u8         reserved_at_8[0x18];
4435 4436 4437

	u8         syndrome[0x20];

4438
	u8         reserved_at_40[0x1c0];
4439 4440 4441 4442 4443 4444

	struct mlx5_ifc_flow_context_bits flow_context;
};

struct mlx5_ifc_query_fte_in_bits {
	u8         opcode[0x10];
4445
	u8         reserved_at_10[0x10];
4446

4447
	u8         reserved_at_20[0x10];
4448 4449
	u8         op_mod[0x10];

4450
	u8         reserved_at_40[0x40];
4451 4452

	u8         table_type[0x8];
4453
	u8         reserved_at_88[0x18];
4454

4455
	u8         reserved_at_a0[0x8];
4456 4457
	u8         table_id[0x18];

4458
	u8         reserved_at_c0[0x40];
4459 4460 4461

	u8         flow_index[0x20];

4462
	u8         reserved_at_120[0xe0];
4463 4464 4465 4466 4467 4468 4469 4470 4471 4472
};

enum {
	MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_OUTER_HEADERS    = 0x0,
	MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS  = 0x1,
	MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_INNER_HEADERS    = 0x2,
};

struct mlx5_ifc_query_flow_group_out_bits {
	u8         status[0x8];
4473
	u8         reserved_at_8[0x18];
4474 4475 4476

	u8         syndrome[0x20];

4477
	u8         reserved_at_40[0xa0];
4478 4479 4480

	u8         start_flow_index[0x20];

4481
	u8         reserved_at_100[0x20];
4482 4483 4484

	u8         end_flow_index[0x20];

4485
	u8         reserved_at_140[0xa0];
4486

4487
	u8         reserved_at_1e0[0x18];
4488 4489 4490 4491
	u8         match_criteria_enable[0x8];

	struct mlx5_ifc_fte_match_param_bits match_criteria;

4492
	u8         reserved_at_1200[0xe00];
4493 4494 4495 4496
};

struct mlx5_ifc_query_flow_group_in_bits {
	u8         opcode[0x10];
4497
	u8         reserved_at_10[0x10];
4498

4499
	u8         reserved_at_20[0x10];
4500 4501
	u8         op_mod[0x10];

4502
	u8         reserved_at_40[0x40];
4503 4504

	u8         table_type[0x8];
4505
	u8         reserved_at_88[0x18];
4506

4507
	u8         reserved_at_a0[0x8];
4508 4509 4510 4511
	u8         table_id[0x18];

	u8         group_id[0x20];

4512
	u8         reserved_at_e0[0x120];
4513 4514
};

4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538
struct mlx5_ifc_query_flow_counter_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];

	struct mlx5_ifc_traffic_counter_bits flow_statistics[0];
};

struct mlx5_ifc_query_flow_counter_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x80];

	u8         clear[0x1];
	u8         reserved_at_c1[0xf];
	u8         num_of_counters[0x10];

4539
	u8         flow_counter_id[0x20];
4540 4541
};

4542 4543
struct mlx5_ifc_query_esw_vport_context_out_bits {
	u8         status[0x8];
4544
	u8         reserved_at_8[0x18];
4545 4546 4547

	u8         syndrome[0x20];

4548
	u8         reserved_at_40[0x40];
4549 4550 4551 4552 4553 4554

	struct mlx5_ifc_esw_vport_context_bits esw_vport_context;
};

struct mlx5_ifc_query_esw_vport_context_in_bits {
	u8         opcode[0x10];
4555
	u8         reserved_at_10[0x10];
4556

4557
	u8         reserved_at_20[0x10];
4558 4559 4560
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4561
	u8         reserved_at_41[0xf];
4562 4563
	u8         vport_number[0x10];

4564
	u8         reserved_at_60[0x20];
4565 4566 4567 4568
};

struct mlx5_ifc_modify_esw_vport_context_out_bits {
	u8         status[0x8];
4569
	u8         reserved_at_8[0x18];
4570 4571 4572

	u8         syndrome[0x20];

4573
	u8         reserved_at_40[0x40];
4574 4575 4576
};

struct mlx5_ifc_esw_vport_context_fields_select_bits {
4577
	u8         reserved_at_0[0x1c];
4578 4579 4580 4581 4582 4583 4584 4585
	u8         vport_cvlan_insert[0x1];
	u8         vport_svlan_insert[0x1];
	u8         vport_cvlan_strip[0x1];
	u8         vport_svlan_strip[0x1];
};

struct mlx5_ifc_modify_esw_vport_context_in_bits {
	u8         opcode[0x10];
4586
	u8         reserved_at_10[0x10];
4587

4588
	u8         reserved_at_20[0x10];
4589 4590 4591
	u8         op_mod[0x10];

	u8         other_vport[0x1];
4592
	u8         reserved_at_41[0xf];
4593 4594 4595 4596 4597 4598 4599
	u8         vport_number[0x10];

	struct mlx5_ifc_esw_vport_context_fields_select_bits field_select;

	struct mlx5_ifc_esw_vport_context_bits esw_vport_context;
};

4600 4601
struct mlx5_ifc_query_eq_out_bits {
	u8         status[0x8];
4602
	u8         reserved_at_8[0x18];
4603 4604 4605

	u8         syndrome[0x20];

4606
	u8         reserved_at_40[0x40];
4607 4608 4609

	struct mlx5_ifc_eqc_bits eq_context_entry;

4610
	u8         reserved_at_280[0x40];
4611 4612 4613

	u8         event_bitmask[0x40];

4614
	u8         reserved_at_300[0x580];
4615 4616 4617 4618 4619 4620

	u8         pas[0][0x40];
};

struct mlx5_ifc_query_eq_in_bits {
	u8         opcode[0x10];
4621
	u8         reserved_at_10[0x10];
4622

4623
	u8         reserved_at_20[0x10];
4624 4625
	u8         op_mod[0x10];

4626
	u8         reserved_at_40[0x18];
4627 4628
	u8         eq_number[0x8];

4629
	u8         reserved_at_60[0x20];
4630 4631
};

4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710
struct mlx5_ifc_encap_header_in_bits {
	u8         reserved_at_0[0x5];
	u8         header_type[0x3];
	u8         reserved_at_8[0xe];
	u8         encap_header_size[0xa];

	u8         reserved_at_20[0x10];
	u8         encap_header[2][0x8];

	u8         more_encap_header[0][0x8];
};

struct mlx5_ifc_query_encap_header_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0xa0];

	struct mlx5_ifc_encap_header_in_bits encap_header[0];
};

struct mlx5_ifc_query_encap_header_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         encap_id[0x20];

	u8         reserved_at_60[0xa0];
};

struct mlx5_ifc_alloc_encap_header_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         encap_id[0x20];

	u8         reserved_at_60[0x20];
};

struct mlx5_ifc_alloc_encap_header_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0xa0];

	struct mlx5_ifc_encap_header_in_bits encap_header;
};

struct mlx5_ifc_dealloc_encap_header_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_dealloc_encap_header_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_20[0x10];
	u8         op_mod[0x10];

	u8         encap_id[0x20];

	u8         reserved_60[0x20];
};

4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763
struct mlx5_ifc_set_action_in_bits {
	u8         action_type[0x4];
	u8         field[0xc];
	u8         reserved_at_10[0x3];
	u8         offset[0x5];
	u8         reserved_at_18[0x3];
	u8         length[0x5];

	u8         data[0x20];
};

struct mlx5_ifc_add_action_in_bits {
	u8         action_type[0x4];
	u8         field[0xc];
	u8         reserved_at_10[0x10];

	u8         data[0x20];
};

union mlx5_ifc_set_action_in_add_action_in_auto_bits {
	struct mlx5_ifc_set_action_in_bits set_action_in;
	struct mlx5_ifc_add_action_in_bits add_action_in;
	u8         reserved_at_0[0x40];
};

enum {
	MLX5_ACTION_TYPE_SET   = 0x1,
	MLX5_ACTION_TYPE_ADD   = 0x2,
};

enum {
	MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16    = 0x1,
	MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0     = 0x2,
	MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE     = 0x3,
	MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16    = 0x4,
	MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0     = 0x5,
	MLX5_ACTION_IN_FIELD_OUT_IP_DSCP       = 0x6,
	MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS     = 0x7,
	MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT     = 0x8,
	MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT     = 0x9,
	MLX5_ACTION_IN_FIELD_OUT_IP_TTL        = 0xa,
	MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT     = 0xb,
	MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT     = 0xc,
	MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96  = 0xd,
	MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64   = 0xe,
	MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32   = 0xf,
	MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0    = 0x10,
	MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96  = 0x11,
	MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64   = 0x12,
	MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32   = 0x13,
	MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0    = 0x14,
	MLX5_ACTION_IN_FIELD_OUT_SIPV4         = 0x15,
	MLX5_ACTION_IN_FIELD_OUT_DIPV4         = 0x16,
4764
	MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT = 0x47,
4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814
};

struct mlx5_ifc_alloc_modify_header_context_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         modify_header_id[0x20];

	u8         reserved_at_60[0x20];
};

struct mlx5_ifc_alloc_modify_header_context_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x20];

	u8         table_type[0x8];
	u8         reserved_at_68[0x10];
	u8         num_of_actions[0x8];

	union mlx5_ifc_set_action_in_add_action_in_auto_bits actions[0];
};

struct mlx5_ifc_dealloc_modify_header_context_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_dealloc_modify_header_context_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         modify_header_id[0x20];

	u8         reserved_at_60[0x20];
};

4815 4816
struct mlx5_ifc_query_dct_out_bits {
	u8         status[0x8];
4817
	u8         reserved_at_8[0x18];
4818 4819 4820

	u8         syndrome[0x20];

4821
	u8         reserved_at_40[0x40];
4822 4823 4824

	struct mlx5_ifc_dctc_bits dct_context_entry;

4825
	u8         reserved_at_280[0x180];
4826 4827 4828 4829
};

struct mlx5_ifc_query_dct_in_bits {
	u8         opcode[0x10];
4830
	u8         reserved_at_10[0x10];
4831

4832
	u8         reserved_at_20[0x10];
4833 4834
	u8         op_mod[0x10];

4835
	u8         reserved_at_40[0x8];
4836 4837
	u8         dctn[0x18];

4838
	u8         reserved_at_60[0x20];
4839 4840 4841 4842
};

struct mlx5_ifc_query_cq_out_bits {
	u8         status[0x8];
4843
	u8         reserved_at_8[0x18];
4844 4845 4846

	u8         syndrome[0x20];

4847
	u8         reserved_at_40[0x40];
4848 4849 4850

	struct mlx5_ifc_cqc_bits cq_context;

4851
	u8         reserved_at_280[0x600];
4852 4853 4854 4855 4856 4857

	u8         pas[0][0x40];
};

struct mlx5_ifc_query_cq_in_bits {
	u8         opcode[0x10];
4858
	u8         reserved_at_10[0x10];
4859

4860
	u8         reserved_at_20[0x10];
4861 4862
	u8         op_mod[0x10];

4863
	u8         reserved_at_40[0x8];
4864 4865
	u8         cqn[0x18];

4866
	u8         reserved_at_60[0x20];
4867 4868 4869 4870
};

struct mlx5_ifc_query_cong_status_out_bits {
	u8         status[0x8];
4871
	u8         reserved_at_8[0x18];
4872 4873 4874

	u8         syndrome[0x20];

4875
	u8         reserved_at_40[0x20];
4876 4877 4878

	u8         enable[0x1];
	u8         tag_enable[0x1];
4879
	u8         reserved_at_62[0x1e];
4880 4881 4882 4883
};

struct mlx5_ifc_query_cong_status_in_bits {
	u8         opcode[0x10];
4884
	u8         reserved_at_10[0x10];
4885

4886
	u8         reserved_at_20[0x10];
4887 4888
	u8         op_mod[0x10];

4889
	u8         reserved_at_40[0x18];
4890 4891 4892
	u8         priority[0x4];
	u8         cong_protocol[0x4];

4893
	u8         reserved_at_60[0x20];
4894 4895 4896 4897
};

struct mlx5_ifc_query_cong_statistics_out_bits {
	u8         status[0x8];
4898
	u8         reserved_at_8[0x18];
4899 4900 4901

	u8         syndrome[0x20];

4902
	u8         reserved_at_40[0x40];
4903

4904
	u8         rp_cur_flows[0x20];
4905 4906 4907

	u8         sum_flows[0x20];

4908
	u8         rp_cnp_ignored_high[0x20];
4909

4910
	u8         rp_cnp_ignored_low[0x20];
4911

4912
	u8         rp_cnp_handled_high[0x20];
4913

4914
	u8         rp_cnp_handled_low[0x20];
4915

4916
	u8         reserved_at_140[0x100];
4917 4918 4919 4920 4921 4922 4923

	u8         time_stamp_high[0x20];

	u8         time_stamp_low[0x20];

	u8         accumulators_period[0x20];

4924
	u8         np_ecn_marked_roce_packets_high[0x20];
4925

4926
	u8         np_ecn_marked_roce_packets_low[0x20];
4927

4928
	u8         np_cnp_sent_high[0x20];
4929

4930
	u8         np_cnp_sent_low[0x20];
4931

4932
	u8         reserved_at_320[0x560];
4933 4934 4935 4936
};

struct mlx5_ifc_query_cong_statistics_in_bits {
	u8         opcode[0x10];
4937
	u8         reserved_at_10[0x10];
4938

4939
	u8         reserved_at_20[0x10];
4940 4941 4942
	u8         op_mod[0x10];

	u8         clear[0x1];
4943
	u8         reserved_at_41[0x1f];
4944

4945
	u8         reserved_at_60[0x20];
4946 4947 4948 4949
};

struct mlx5_ifc_query_cong_params_out_bits {
	u8         status[0x8];
4950
	u8         reserved_at_8[0x18];
4951 4952 4953

	u8         syndrome[0x20];

4954
	u8         reserved_at_40[0x40];
4955 4956 4957 4958 4959 4960

	union mlx5_ifc_cong_control_roce_ecn_auto_bits congestion_parameters;
};

struct mlx5_ifc_query_cong_params_in_bits {
	u8         opcode[0x10];
4961
	u8         reserved_at_10[0x10];
4962

4963
	u8         reserved_at_20[0x10];
4964 4965
	u8         op_mod[0x10];

4966
	u8         reserved_at_40[0x1c];
4967 4968
	u8         cong_protocol[0x4];

4969
	u8         reserved_at_60[0x20];
4970 4971 4972 4973
};

struct mlx5_ifc_query_adapter_out_bits {
	u8         status[0x8];
4974
	u8         reserved_at_8[0x18];
4975 4976 4977

	u8         syndrome[0x20];

4978
	u8         reserved_at_40[0x40];
4979 4980 4981 4982 4983 4984

	struct mlx5_ifc_query_adapter_param_block_bits query_adapter_struct;
};

struct mlx5_ifc_query_adapter_in_bits {
	u8         opcode[0x10];
4985
	u8         reserved_at_10[0x10];
4986

4987
	u8         reserved_at_20[0x10];
4988 4989
	u8         op_mod[0x10];

4990
	u8         reserved_at_40[0x40];
4991 4992 4993 4994
};

struct mlx5_ifc_qp_2rst_out_bits {
	u8         status[0x8];
4995
	u8         reserved_at_8[0x18];
4996 4997 4998

	u8         syndrome[0x20];

4999
	u8         reserved_at_40[0x40];
5000 5001 5002 5003
};

struct mlx5_ifc_qp_2rst_in_bits {
	u8         opcode[0x10];
5004
	u8         reserved_at_10[0x10];
5005

5006
	u8         reserved_at_20[0x10];
5007 5008
	u8         op_mod[0x10];

5009
	u8         reserved_at_40[0x8];
5010 5011
	u8         qpn[0x18];

5012
	u8         reserved_at_60[0x20];
5013 5014 5015 5016
};

struct mlx5_ifc_qp_2err_out_bits {
	u8         status[0x8];
5017
	u8         reserved_at_8[0x18];
5018 5019 5020

	u8         syndrome[0x20];

5021
	u8         reserved_at_40[0x40];
5022 5023 5024 5025
};

struct mlx5_ifc_qp_2err_in_bits {
	u8         opcode[0x10];
5026
	u8         reserved_at_10[0x10];
5027

5028
	u8         reserved_at_20[0x10];
5029 5030
	u8         op_mod[0x10];

5031
	u8         reserved_at_40[0x8];
5032 5033
	u8         qpn[0x18];

5034
	u8         reserved_at_60[0x20];
5035 5036 5037 5038
};

struct mlx5_ifc_page_fault_resume_out_bits {
	u8         status[0x8];
5039
	u8         reserved_at_8[0x18];
5040 5041 5042

	u8         syndrome[0x20];

5043
	u8         reserved_at_40[0x40];
5044 5045 5046 5047
};

struct mlx5_ifc_page_fault_resume_in_bits {
	u8         opcode[0x10];
5048
	u8         reserved_at_10[0x10];
5049

5050
	u8         reserved_at_20[0x10];
5051 5052 5053
	u8         op_mod[0x10];

	u8         error[0x1];
5054
	u8         reserved_at_41[0x4];
5055 5056
	u8         page_fault_type[0x3];
	u8         wq_number[0x18];
5057

5058 5059
	u8         reserved_at_60[0x8];
	u8         token[0x18];
5060 5061 5062 5063
};

struct mlx5_ifc_nop_out_bits {
	u8         status[0x8];
5064
	u8         reserved_at_8[0x18];
5065 5066 5067

	u8         syndrome[0x20];

5068
	u8         reserved_at_40[0x40];
5069 5070 5071 5072
};

struct mlx5_ifc_nop_in_bits {
	u8         opcode[0x10];
5073
	u8         reserved_at_10[0x10];
5074

5075
	u8         reserved_at_20[0x10];
5076 5077
	u8         op_mod[0x10];

5078
	u8         reserved_at_40[0x40];
5079 5080 5081 5082
};

struct mlx5_ifc_modify_vport_state_out_bits {
	u8         status[0x8];
5083
	u8         reserved_at_8[0x18];
5084 5085 5086

	u8         syndrome[0x20];

5087
	u8         reserved_at_40[0x40];
5088 5089 5090 5091
};

struct mlx5_ifc_modify_vport_state_in_bits {
	u8         opcode[0x10];
5092
	u8         reserved_at_10[0x10];
5093

5094
	u8         reserved_at_20[0x10];
5095 5096 5097
	u8         op_mod[0x10];

	u8         other_vport[0x1];
5098
	u8         reserved_at_41[0xf];
5099 5100
	u8         vport_number[0x10];

5101
	u8         reserved_at_60[0x18];
5102
	u8         admin_state[0x4];
5103
	u8         reserved_at_7c[0x4];
5104 5105 5106 5107
};

struct mlx5_ifc_modify_tis_out_bits {
	u8         status[0x8];
5108
	u8         reserved_at_8[0x18];
5109 5110 5111

	u8         syndrome[0x20];

5112
	u8         reserved_at_40[0x40];
5113 5114
};

5115
struct mlx5_ifc_modify_tis_bitmask_bits {
5116
	u8         reserved_at_0[0x20];
5117

5118 5119 5120
	u8         reserved_at_20[0x1d];
	u8         lag_tx_port_affinity[0x1];
	u8         strict_lag_tx_port_affinity[0x1];
5121 5122 5123
	u8         prio[0x1];
};

5124 5125
struct mlx5_ifc_modify_tis_in_bits {
	u8         opcode[0x10];
5126
	u8         reserved_at_10[0x10];
5127

5128
	u8         reserved_at_20[0x10];
5129 5130
	u8         op_mod[0x10];

5131
	u8         reserved_at_40[0x8];
5132 5133
	u8         tisn[0x18];

5134
	u8         reserved_at_60[0x20];
5135

5136
	struct mlx5_ifc_modify_tis_bitmask_bits bitmask;
5137

5138
	u8         reserved_at_c0[0x40];
5139 5140 5141 5142

	struct mlx5_ifc_tisc_bits ctx;
};

5143
struct mlx5_ifc_modify_tir_bitmask_bits {
5144
	u8	   reserved_at_0[0x20];
5145

5146
	u8         reserved_at_20[0x1b];
5147
	u8         self_lb_en[0x1];
5148 5149 5150
	u8         reserved_at_3c[0x1];
	u8         hash[0x1];
	u8         reserved_at_3e[0x1];
5151 5152 5153
	u8         lro[0x1];
};

5154 5155
struct mlx5_ifc_modify_tir_out_bits {
	u8         status[0x8];
5156
	u8         reserved_at_8[0x18];
5157 5158 5159

	u8         syndrome[0x20];

5160
	u8         reserved_at_40[0x40];
5161 5162 5163 5164
};

struct mlx5_ifc_modify_tir_in_bits {
	u8         opcode[0x10];
5165
	u8         reserved_at_10[0x10];
5166

5167
	u8         reserved_at_20[0x10];
5168 5169
	u8         op_mod[0x10];

5170
	u8         reserved_at_40[0x8];
5171 5172
	u8         tirn[0x18];

5173
	u8         reserved_at_60[0x20];
5174

5175
	struct mlx5_ifc_modify_tir_bitmask_bits bitmask;
5176

5177
	u8         reserved_at_c0[0x40];
5178 5179 5180 5181 5182 5183

	struct mlx5_ifc_tirc_bits ctx;
};

struct mlx5_ifc_modify_sq_out_bits {
	u8         status[0x8];
5184
	u8         reserved_at_8[0x18];
5185 5186 5187

	u8         syndrome[0x20];

5188
	u8         reserved_at_40[0x40];
5189 5190 5191 5192
};

struct mlx5_ifc_modify_sq_in_bits {
	u8         opcode[0x10];
5193
	u8         reserved_at_10[0x10];
5194

5195
	u8         reserved_at_20[0x10];
5196 5197 5198
	u8         op_mod[0x10];

	u8         sq_state[0x4];
5199
	u8         reserved_at_44[0x4];
5200 5201
	u8         sqn[0x18];

5202
	u8         reserved_at_60[0x20];
5203 5204 5205

	u8         modify_bitmask[0x40];

5206
	u8         reserved_at_c0[0x40];
5207 5208 5209 5210

	struct mlx5_ifc_sqc_bits ctx;
};

5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247
struct mlx5_ifc_modify_scheduling_element_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x1c0];
};

enum {
	MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_BW_SHARE = 0x1,
	MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_MAX_AVERAGE_BW = 0x2,
};

struct mlx5_ifc_modify_scheduling_element_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         scheduling_hierarchy[0x8];
	u8         reserved_at_48[0x18];

	u8         scheduling_element_id[0x20];

	u8         reserved_at_80[0x20];

	u8         modify_bitmask[0x20];

	u8         reserved_at_c0[0x40];

	struct mlx5_ifc_scheduling_context_bits scheduling_context;

	u8         reserved_at_300[0x100];
};

5248 5249
struct mlx5_ifc_modify_rqt_out_bits {
	u8         status[0x8];
5250
	u8         reserved_at_8[0x18];
5251 5252 5253

	u8         syndrome[0x20];

5254
	u8         reserved_at_40[0x40];
5255 5256
};

5257
struct mlx5_ifc_rqt_bitmask_bits {
5258
	u8	   reserved_at_0[0x20];
5259

5260
	u8         reserved_at_20[0x1f];
5261 5262 5263
	u8         rqn_list[0x1];
};

5264 5265
struct mlx5_ifc_modify_rqt_in_bits {
	u8         opcode[0x10];
5266
	u8         reserved_at_10[0x10];
5267

5268
	u8         reserved_at_20[0x10];
5269 5270
	u8         op_mod[0x10];

5271
	u8         reserved_at_40[0x8];
5272 5273
	u8         rqtn[0x18];

5274
	u8         reserved_at_60[0x20];
5275

5276
	struct mlx5_ifc_rqt_bitmask_bits bitmask;
5277

5278
	u8         reserved_at_c0[0x40];
5279 5280 5281 5282 5283 5284

	struct mlx5_ifc_rqtc_bits ctx;
};

struct mlx5_ifc_modify_rq_out_bits {
	u8         status[0x8];
5285
	u8         reserved_at_8[0x18];
5286 5287 5288

	u8         syndrome[0x20];

5289
	u8         reserved_at_40[0x40];
5290 5291
};

5292 5293
enum {
	MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_VSD = 1ULL << 1,
5294
	MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_SCATTER_FCS = 1ULL << 2,
5295
	MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_RQ_COUNTER_SET_ID = 1ULL << 3,
5296 5297
};

5298 5299
struct mlx5_ifc_modify_rq_in_bits {
	u8         opcode[0x10];
5300
	u8         reserved_at_10[0x10];
5301

5302
	u8         reserved_at_20[0x10];
5303 5304 5305
	u8         op_mod[0x10];

	u8         rq_state[0x4];
5306
	u8         reserved_at_44[0x4];
5307 5308
	u8         rqn[0x18];

5309
	u8         reserved_at_60[0x20];
5310 5311 5312

	u8         modify_bitmask[0x40];

5313
	u8         reserved_at_c0[0x40];
5314 5315 5316 5317 5318 5319

	struct mlx5_ifc_rqc_bits ctx;
};

struct mlx5_ifc_modify_rmp_out_bits {
	u8         status[0x8];
5320
	u8         reserved_at_8[0x18];
5321 5322 5323

	u8         syndrome[0x20];

5324
	u8         reserved_at_40[0x40];
5325 5326
};

5327
struct mlx5_ifc_rmp_bitmask_bits {
5328
	u8	   reserved_at_0[0x20];
5329

5330
	u8         reserved_at_20[0x1f];
5331 5332 5333
	u8         lwm[0x1];
};

5334 5335
struct mlx5_ifc_modify_rmp_in_bits {
	u8         opcode[0x10];
5336
	u8         reserved_at_10[0x10];
5337

5338
	u8         reserved_at_20[0x10];
5339 5340 5341
	u8         op_mod[0x10];

	u8         rmp_state[0x4];
5342
	u8         reserved_at_44[0x4];
5343 5344
	u8         rmpn[0x18];

5345
	u8         reserved_at_60[0x20];
5346

5347
	struct mlx5_ifc_rmp_bitmask_bits bitmask;
5348

5349
	u8         reserved_at_c0[0x40];
5350 5351 5352 5353 5354 5355

	struct mlx5_ifc_rmpc_bits ctx;
};

struct mlx5_ifc_modify_nic_vport_context_out_bits {
	u8         status[0x8];
5356
	u8         reserved_at_8[0x18];
5357 5358 5359

	u8         syndrome[0x20];

5360
	u8         reserved_at_40[0x40];
5361 5362 5363
};

struct mlx5_ifc_modify_nic_vport_field_select_bits {
5364 5365 5366
	u8         reserved_at_0[0x12];
	u8	   affiliation[0x1];
	u8	   reserved_at_e[0x1];
5367 5368
	u8         disable_uc_local_lb[0x1];
	u8         disable_mc_local_lb[0x1];
5369 5370
	u8         node_guid[0x1];
	u8         port_guid[0x1];
5371
	u8         min_inline[0x1];
5372 5373 5374
	u8         mtu[0x1];
	u8         change_event[0x1];
	u8         promisc[0x1];
5375 5376 5377
	u8         permanent_address[0x1];
	u8         addresses_list[0x1];
	u8         roce_en[0x1];
5378
	u8         reserved_at_1f[0x1];
5379 5380 5381 5382
};

struct mlx5_ifc_modify_nic_vport_context_in_bits {
	u8         opcode[0x10];
5383
	u8         reserved_at_10[0x10];
5384

5385
	u8         reserved_at_20[0x10];
5386 5387 5388
	u8         op_mod[0x10];

	u8         other_vport[0x1];
5389
	u8         reserved_at_41[0xf];
5390 5391 5392 5393
	u8         vport_number[0x10];

	struct mlx5_ifc_modify_nic_vport_field_select_bits field_select;

5394
	u8         reserved_at_80[0x780];
5395 5396 5397 5398 5399 5400

	struct mlx5_ifc_nic_vport_context_bits nic_vport_context;
};

struct mlx5_ifc_modify_hca_vport_context_out_bits {
	u8         status[0x8];
5401
	u8         reserved_at_8[0x18];
5402 5403 5404

	u8         syndrome[0x20];

5405
	u8         reserved_at_40[0x40];
5406 5407 5408 5409
};

struct mlx5_ifc_modify_hca_vport_context_in_bits {
	u8         opcode[0x10];
5410
	u8         reserved_at_10[0x10];
5411

5412
	u8         reserved_at_20[0x10];
5413 5414 5415
	u8         op_mod[0x10];

	u8         other_vport[0x1];
5416
	u8         reserved_at_41[0xb];
5417
	u8         port_num[0x4];
5418 5419
	u8         vport_number[0x10];

5420
	u8         reserved_at_60[0x20];
5421 5422 5423 5424 5425 5426

	struct mlx5_ifc_hca_vport_context_bits hca_vport_context;
};

struct mlx5_ifc_modify_cq_out_bits {
	u8         status[0x8];
5427
	u8         reserved_at_8[0x18];
5428 5429 5430

	u8         syndrome[0x20];

5431
	u8         reserved_at_40[0x40];
5432 5433 5434 5435 5436 5437 5438 5439 5440
};

enum {
	MLX5_MODIFY_CQ_IN_OP_MOD_MODIFY_CQ  = 0x0,
	MLX5_MODIFY_CQ_IN_OP_MOD_RESIZE_CQ  = 0x1,
};

struct mlx5_ifc_modify_cq_in_bits {
	u8         opcode[0x10];
5441
	u8         reserved_at_10[0x10];
5442

5443
	u8         reserved_at_20[0x10];
5444 5445
	u8         op_mod[0x10];

5446
	u8         reserved_at_40[0x8];
5447 5448 5449 5450 5451 5452
	u8         cqn[0x18];

	union mlx5_ifc_modify_field_select_resize_field_select_auto_bits modify_field_select_resize_field_select;

	struct mlx5_ifc_cqc_bits cq_context;

5453
	u8         reserved_at_280[0x600];
5454 5455 5456 5457 5458 5459

	u8         pas[0][0x40];
};

struct mlx5_ifc_modify_cong_status_out_bits {
	u8         status[0x8];
5460
	u8         reserved_at_8[0x18];
5461 5462 5463

	u8         syndrome[0x20];

5464
	u8         reserved_at_40[0x40];
5465 5466 5467 5468
};

struct mlx5_ifc_modify_cong_status_in_bits {
	u8         opcode[0x10];
5469
	u8         reserved_at_10[0x10];
5470

5471
	u8         reserved_at_20[0x10];
5472 5473
	u8         op_mod[0x10];

5474
	u8         reserved_at_40[0x18];
5475 5476 5477 5478 5479
	u8         priority[0x4];
	u8         cong_protocol[0x4];

	u8         enable[0x1];
	u8         tag_enable[0x1];
5480
	u8         reserved_at_62[0x1e];
5481 5482 5483 5484
};

struct mlx5_ifc_modify_cong_params_out_bits {
	u8         status[0x8];
5485
	u8         reserved_at_8[0x18];
5486 5487 5488

	u8         syndrome[0x20];

5489
	u8         reserved_at_40[0x40];
5490 5491 5492 5493
};

struct mlx5_ifc_modify_cong_params_in_bits {
	u8         opcode[0x10];
5494
	u8         reserved_at_10[0x10];
5495

5496
	u8         reserved_at_20[0x10];
5497 5498
	u8         op_mod[0x10];

5499
	u8         reserved_at_40[0x1c];
5500 5501 5502 5503
	u8         cong_protocol[0x4];

	union mlx5_ifc_field_select_802_1_r_roce_auto_bits field_select;

5504
	u8         reserved_at_80[0x80];
5505 5506 5507 5508 5509 5510

	union mlx5_ifc_cong_control_roce_ecn_auto_bits congestion_parameters;
};

struct mlx5_ifc_manage_pages_out_bits {
	u8         status[0x8];
5511
	u8         reserved_at_8[0x18];
5512 5513 5514 5515 5516

	u8         syndrome[0x20];

	u8         output_num_entries[0x20];

5517
	u8         reserved_at_60[0x20];
5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529

	u8         pas[0][0x40];
};

enum {
	MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_FAIL     = 0x0,
	MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_SUCCESS  = 0x1,
	MLX5_MANAGE_PAGES_IN_OP_MOD_HCA_RETURN_PAGES    = 0x2,
};

struct mlx5_ifc_manage_pages_in_bits {
	u8         opcode[0x10];
5530
	u8         reserved_at_10[0x10];
5531

5532
	u8         reserved_at_20[0x10];
5533 5534
	u8         op_mod[0x10];

5535
	u8         reserved_at_40[0x10];
5536 5537 5538 5539 5540 5541 5542 5543 5544
	u8         function_id[0x10];

	u8         input_num_entries[0x20];

	u8         pas[0][0x40];
};

struct mlx5_ifc_mad_ifc_out_bits {
	u8         status[0x8];
5545
	u8         reserved_at_8[0x18];
5546 5547 5548

	u8         syndrome[0x20];

5549
	u8         reserved_at_40[0x40];
5550 5551 5552 5553 5554 5555

	u8         response_mad_packet[256][0x8];
};

struct mlx5_ifc_mad_ifc_in_bits {
	u8         opcode[0x10];
5556
	u8         reserved_at_10[0x10];
5557

5558
	u8         reserved_at_20[0x10];
5559 5560 5561
	u8         op_mod[0x10];

	u8         remote_lid[0x10];
5562
	u8         reserved_at_50[0x8];
5563 5564
	u8         port[0x8];

5565
	u8         reserved_at_60[0x20];
5566 5567 5568 5569 5570 5571

	u8         mad[256][0x8];
};

struct mlx5_ifc_init_hca_out_bits {
	u8         status[0x8];
5572
	u8         reserved_at_8[0x18];
5573 5574 5575

	u8         syndrome[0x20];

5576
	u8         reserved_at_40[0x40];
5577 5578 5579 5580
};

struct mlx5_ifc_init_hca_in_bits {
	u8         opcode[0x10];
5581
	u8         reserved_at_10[0x10];
5582

5583
	u8         reserved_at_20[0x10];
5584 5585
	u8         op_mod[0x10];

5586
	u8         reserved_at_40[0x40];
5587
	u8	   sw_owner_id[4][0x20];
5588 5589 5590 5591
};

struct mlx5_ifc_init2rtr_qp_out_bits {
	u8         status[0x8];
5592
	u8         reserved_at_8[0x18];
5593 5594 5595

	u8         syndrome[0x20];

5596
	u8         reserved_at_40[0x40];
5597 5598 5599 5600
};

struct mlx5_ifc_init2rtr_qp_in_bits {
	u8         opcode[0x10];
5601
	u8         reserved_at_10[0x10];
5602

5603
	u8         reserved_at_20[0x10];
5604 5605
	u8         op_mod[0x10];

5606
	u8         reserved_at_40[0x8];
5607 5608
	u8         qpn[0x18];

5609
	u8         reserved_at_60[0x20];
5610 5611 5612

	u8         opt_param_mask[0x20];

5613
	u8         reserved_at_a0[0x20];
5614 5615 5616

	struct mlx5_ifc_qpc_bits qpc;

5617
	u8         reserved_at_800[0x80];
5618 5619 5620 5621
};

struct mlx5_ifc_init2init_qp_out_bits {
	u8         status[0x8];
5622
	u8         reserved_at_8[0x18];
5623 5624 5625

	u8         syndrome[0x20];

5626
	u8         reserved_at_40[0x40];
5627 5628 5629 5630
};

struct mlx5_ifc_init2init_qp_in_bits {
	u8         opcode[0x10];
5631
	u8         reserved_at_10[0x10];
5632

5633
	u8         reserved_at_20[0x10];
5634 5635
	u8         op_mod[0x10];

5636
	u8         reserved_at_40[0x8];
5637 5638
	u8         qpn[0x18];

5639
	u8         reserved_at_60[0x20];
5640 5641 5642

	u8         opt_param_mask[0x20];

5643
	u8         reserved_at_a0[0x20];
5644 5645 5646

	struct mlx5_ifc_qpc_bits qpc;

5647
	u8         reserved_at_800[0x80];
5648 5649 5650 5651
};

struct mlx5_ifc_get_dropped_packet_log_out_bits {
	u8         status[0x8];
5652
	u8         reserved_at_8[0x18];
5653 5654 5655

	u8         syndrome[0x20];

5656
	u8         reserved_at_40[0x40];
5657 5658 5659 5660 5661 5662 5663 5664

	u8         packet_headers_log[128][0x8];

	u8         packet_syndrome[64][0x8];
};

struct mlx5_ifc_get_dropped_packet_log_in_bits {
	u8         opcode[0x10];
5665
	u8         reserved_at_10[0x10];
5666

5667
	u8         reserved_at_20[0x10];
5668 5669
	u8         op_mod[0x10];

5670
	u8         reserved_at_40[0x40];
5671 5672 5673 5674
};

struct mlx5_ifc_gen_eqe_in_bits {
	u8         opcode[0x10];
5675
	u8         reserved_at_10[0x10];
5676

5677
	u8         reserved_at_20[0x10];
5678 5679
	u8         op_mod[0x10];

5680
	u8         reserved_at_40[0x18];
5681 5682
	u8         eq_number[0x8];

5683
	u8         reserved_at_60[0x20];
5684 5685 5686 5687 5688 5689

	u8         eqe[64][0x8];
};

struct mlx5_ifc_gen_eq_out_bits {
	u8         status[0x8];
5690
	u8         reserved_at_8[0x18];
5691 5692 5693

	u8         syndrome[0x20];

5694
	u8         reserved_at_40[0x40];
5695 5696 5697 5698
};

struct mlx5_ifc_enable_hca_out_bits {
	u8         status[0x8];
5699
	u8         reserved_at_8[0x18];
5700 5701 5702

	u8         syndrome[0x20];

5703
	u8         reserved_at_40[0x20];
5704 5705 5706 5707
};

struct mlx5_ifc_enable_hca_in_bits {
	u8         opcode[0x10];
5708
	u8         reserved_at_10[0x10];
5709

5710
	u8         reserved_at_20[0x10];
5711 5712
	u8         op_mod[0x10];

5713
	u8         reserved_at_40[0x10];
5714 5715
	u8         function_id[0x10];

5716
	u8         reserved_at_60[0x20];
5717 5718 5719 5720
};

struct mlx5_ifc_drain_dct_out_bits {
	u8         status[0x8];
5721
	u8         reserved_at_8[0x18];
5722 5723 5724

	u8         syndrome[0x20];

5725
	u8         reserved_at_40[0x40];
5726 5727 5728 5729
};

struct mlx5_ifc_drain_dct_in_bits {
	u8         opcode[0x10];
5730
	u8         reserved_at_10[0x10];
5731

5732
	u8         reserved_at_20[0x10];
5733 5734
	u8         op_mod[0x10];

5735
	u8         reserved_at_40[0x8];
5736 5737
	u8         dctn[0x18];

5738
	u8         reserved_at_60[0x20];
5739 5740 5741 5742
};

struct mlx5_ifc_disable_hca_out_bits {
	u8         status[0x8];
5743
	u8         reserved_at_8[0x18];
5744 5745 5746

	u8         syndrome[0x20];

5747
	u8         reserved_at_40[0x20];
5748 5749 5750 5751
};

struct mlx5_ifc_disable_hca_in_bits {
	u8         opcode[0x10];
5752
	u8         reserved_at_10[0x10];
5753

5754
	u8         reserved_at_20[0x10];
5755 5756
	u8         op_mod[0x10];

5757
	u8         reserved_at_40[0x10];
5758 5759
	u8         function_id[0x10];

5760
	u8         reserved_at_60[0x20];
5761 5762 5763 5764
};

struct mlx5_ifc_detach_from_mcg_out_bits {
	u8         status[0x8];
5765
	u8         reserved_at_8[0x18];
5766 5767 5768

	u8         syndrome[0x20];

5769
	u8         reserved_at_40[0x40];
5770 5771 5772 5773
};

struct mlx5_ifc_detach_from_mcg_in_bits {
	u8         opcode[0x10];
5774
	u8         reserved_at_10[0x10];
5775

5776
	u8         reserved_at_20[0x10];
5777 5778
	u8         op_mod[0x10];

5779
	u8         reserved_at_40[0x8];
5780 5781
	u8         qpn[0x18];

5782
	u8         reserved_at_60[0x20];
5783 5784 5785 5786

	u8         multicast_gid[16][0x8];
};

S
Saeed Mahameed 已提交
5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808
struct mlx5_ifc_destroy_xrq_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_destroy_xrq_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x8];
	u8         xrqn[0x18];

	u8         reserved_at_60[0x20];
};

5809 5810
struct mlx5_ifc_destroy_xrc_srq_out_bits {
	u8         status[0x8];
5811
	u8         reserved_at_8[0x18];
5812 5813 5814

	u8         syndrome[0x20];

5815
	u8         reserved_at_40[0x40];
5816 5817 5818 5819
};

struct mlx5_ifc_destroy_xrc_srq_in_bits {
	u8         opcode[0x10];
5820
	u8         reserved_at_10[0x10];
5821

5822
	u8         reserved_at_20[0x10];
5823 5824
	u8         op_mod[0x10];

5825
	u8         reserved_at_40[0x8];
5826 5827
	u8         xrc_srqn[0x18];

5828
	u8         reserved_at_60[0x20];
5829 5830 5831 5832
};

struct mlx5_ifc_destroy_tis_out_bits {
	u8         status[0x8];
5833
	u8         reserved_at_8[0x18];
5834 5835 5836

	u8         syndrome[0x20];

5837
	u8         reserved_at_40[0x40];
5838 5839 5840 5841
};

struct mlx5_ifc_destroy_tis_in_bits {
	u8         opcode[0x10];
5842
	u8         reserved_at_10[0x10];
5843

5844
	u8         reserved_at_20[0x10];
5845 5846
	u8         op_mod[0x10];

5847
	u8         reserved_at_40[0x8];
5848 5849
	u8         tisn[0x18];

5850
	u8         reserved_at_60[0x20];
5851 5852 5853 5854
};

struct mlx5_ifc_destroy_tir_out_bits {
	u8         status[0x8];
5855
	u8         reserved_at_8[0x18];
5856 5857 5858

	u8         syndrome[0x20];

5859
	u8         reserved_at_40[0x40];
5860 5861 5862 5863
};

struct mlx5_ifc_destroy_tir_in_bits {
	u8         opcode[0x10];
5864
	u8         reserved_at_10[0x10];
5865

5866
	u8         reserved_at_20[0x10];
5867 5868
	u8         op_mod[0x10];

5869
	u8         reserved_at_40[0x8];
5870 5871
	u8         tirn[0x18];

5872
	u8         reserved_at_60[0x20];
5873 5874 5875 5876
};

struct mlx5_ifc_destroy_srq_out_bits {
	u8         status[0x8];
5877
	u8         reserved_at_8[0x18];
5878 5879 5880

	u8         syndrome[0x20];

5881
	u8         reserved_at_40[0x40];
5882 5883 5884 5885
};

struct mlx5_ifc_destroy_srq_in_bits {
	u8         opcode[0x10];
5886
	u8         reserved_at_10[0x10];
5887

5888
	u8         reserved_at_20[0x10];
5889 5890
	u8         op_mod[0x10];

5891
	u8         reserved_at_40[0x8];
5892 5893
	u8         srqn[0x18];

5894
	u8         reserved_at_60[0x20];
5895 5896 5897 5898
};

struct mlx5_ifc_destroy_sq_out_bits {
	u8         status[0x8];
5899
	u8         reserved_at_8[0x18];
5900 5901 5902

	u8         syndrome[0x20];

5903
	u8         reserved_at_40[0x40];
5904 5905 5906 5907
};

struct mlx5_ifc_destroy_sq_in_bits {
	u8         opcode[0x10];
5908
	u8         reserved_at_10[0x10];
5909

5910
	u8         reserved_at_20[0x10];
5911 5912
	u8         op_mod[0x10];

5913
	u8         reserved_at_40[0x8];
5914 5915
	u8         sqn[0x18];

5916
	u8         reserved_at_60[0x20];
5917 5918
};

5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942
struct mlx5_ifc_destroy_scheduling_element_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x1c0];
};

struct mlx5_ifc_destroy_scheduling_element_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         scheduling_hierarchy[0x8];
	u8         reserved_at_48[0x18];

	u8         scheduling_element_id[0x20];

	u8         reserved_at_80[0x180];
};

5943 5944
struct mlx5_ifc_destroy_rqt_out_bits {
	u8         status[0x8];
5945
	u8         reserved_at_8[0x18];
5946 5947 5948

	u8         syndrome[0x20];

5949
	u8         reserved_at_40[0x40];
5950 5951 5952 5953
};

struct mlx5_ifc_destroy_rqt_in_bits {
	u8         opcode[0x10];
5954
	u8         reserved_at_10[0x10];
5955

5956
	u8         reserved_at_20[0x10];
5957 5958
	u8         op_mod[0x10];

5959
	u8         reserved_at_40[0x8];
5960 5961
	u8         rqtn[0x18];

5962
	u8         reserved_at_60[0x20];
5963 5964 5965 5966
};

struct mlx5_ifc_destroy_rq_out_bits {
	u8         status[0x8];
5967
	u8         reserved_at_8[0x18];
5968 5969 5970

	u8         syndrome[0x20];

5971
	u8         reserved_at_40[0x40];
5972 5973 5974 5975
};

struct mlx5_ifc_destroy_rq_in_bits {
	u8         opcode[0x10];
5976
	u8         reserved_at_10[0x10];
5977

5978
	u8         reserved_at_20[0x10];
5979 5980
	u8         op_mod[0x10];

5981
	u8         reserved_at_40[0x8];
5982 5983
	u8         rqn[0x18];

5984
	u8         reserved_at_60[0x20];
5985 5986
};

5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008
struct mlx5_ifc_set_delay_drop_params_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x20];

	u8         reserved_at_60[0x10];
	u8         delay_drop_timeout[0x10];
};

struct mlx5_ifc_set_delay_drop_params_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

6009 6010
struct mlx5_ifc_destroy_rmp_out_bits {
	u8         status[0x8];
6011
	u8         reserved_at_8[0x18];
6012 6013 6014

	u8         syndrome[0x20];

6015
	u8         reserved_at_40[0x40];
6016 6017 6018 6019
};

struct mlx5_ifc_destroy_rmp_in_bits {
	u8         opcode[0x10];
6020
	u8         reserved_at_10[0x10];
6021

6022
	u8         reserved_at_20[0x10];
6023 6024
	u8         op_mod[0x10];

6025
	u8         reserved_at_40[0x8];
6026 6027
	u8         rmpn[0x18];

6028
	u8         reserved_at_60[0x20];
6029 6030 6031 6032
};

struct mlx5_ifc_destroy_qp_out_bits {
	u8         status[0x8];
6033
	u8         reserved_at_8[0x18];
6034 6035 6036

	u8         syndrome[0x20];

6037
	u8         reserved_at_40[0x40];
6038 6039 6040 6041
};

struct mlx5_ifc_destroy_qp_in_bits {
	u8         opcode[0x10];
6042
	u8         reserved_at_10[0x10];
6043

6044
	u8         reserved_at_20[0x10];
6045 6046
	u8         op_mod[0x10];

6047
	u8         reserved_at_40[0x8];
6048 6049
	u8         qpn[0x18];

6050
	u8         reserved_at_60[0x20];
6051 6052 6053 6054
};

struct mlx5_ifc_destroy_psv_out_bits {
	u8         status[0x8];
6055
	u8         reserved_at_8[0x18];
6056 6057 6058

	u8         syndrome[0x20];

6059
	u8         reserved_at_40[0x40];
6060 6061 6062 6063
};

struct mlx5_ifc_destroy_psv_in_bits {
	u8         opcode[0x10];
6064
	u8         reserved_at_10[0x10];
6065

6066
	u8         reserved_at_20[0x10];
6067 6068
	u8         op_mod[0x10];

6069
	u8         reserved_at_40[0x8];
6070 6071
	u8         psvn[0x18];

6072
	u8         reserved_at_60[0x20];
6073 6074 6075 6076
};

struct mlx5_ifc_destroy_mkey_out_bits {
	u8         status[0x8];
6077
	u8         reserved_at_8[0x18];
6078 6079 6080

	u8         syndrome[0x20];

6081
	u8         reserved_at_40[0x40];
6082 6083 6084 6085
};

struct mlx5_ifc_destroy_mkey_in_bits {
	u8         opcode[0x10];
6086
	u8         reserved_at_10[0x10];
6087

6088
	u8         reserved_at_20[0x10];
6089 6090
	u8         op_mod[0x10];

6091
	u8         reserved_at_40[0x8];
6092 6093
	u8         mkey_index[0x18];

6094
	u8         reserved_at_60[0x20];
6095 6096 6097 6098
};

struct mlx5_ifc_destroy_flow_table_out_bits {
	u8         status[0x8];
6099
	u8         reserved_at_8[0x18];
6100 6101 6102

	u8         syndrome[0x20];

6103
	u8         reserved_at_40[0x40];
6104 6105 6106 6107
};

struct mlx5_ifc_destroy_flow_table_in_bits {
	u8         opcode[0x10];
6108
	u8         reserved_at_10[0x10];
6109

6110
	u8         reserved_at_20[0x10];
6111 6112
	u8         op_mod[0x10];

6113 6114 6115 6116 6117
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
6118 6119

	u8         table_type[0x8];
6120
	u8         reserved_at_88[0x18];
6121

6122
	u8         reserved_at_a0[0x8];
6123 6124
	u8         table_id[0x18];

6125
	u8         reserved_at_c0[0x140];
6126 6127 6128 6129
};

struct mlx5_ifc_destroy_flow_group_out_bits {
	u8         status[0x8];
6130
	u8         reserved_at_8[0x18];
6131 6132 6133

	u8         syndrome[0x20];

6134
	u8         reserved_at_40[0x40];
6135 6136 6137 6138
};

struct mlx5_ifc_destroy_flow_group_in_bits {
	u8         opcode[0x10];
6139
	u8         reserved_at_10[0x10];
6140

6141
	u8         reserved_at_20[0x10];
6142 6143
	u8         op_mod[0x10];

6144 6145 6146 6147 6148
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
6149 6150

	u8         table_type[0x8];
6151
	u8         reserved_at_88[0x18];
6152

6153
	u8         reserved_at_a0[0x8];
6154 6155 6156 6157
	u8         table_id[0x18];

	u8         group_id[0x20];

6158
	u8         reserved_at_e0[0x120];
6159 6160 6161 6162
};

struct mlx5_ifc_destroy_eq_out_bits {
	u8         status[0x8];
6163
	u8         reserved_at_8[0x18];
6164 6165 6166

	u8         syndrome[0x20];

6167
	u8         reserved_at_40[0x40];
6168 6169 6170 6171
};

struct mlx5_ifc_destroy_eq_in_bits {
	u8         opcode[0x10];
6172
	u8         reserved_at_10[0x10];
6173

6174
	u8         reserved_at_20[0x10];
6175 6176
	u8         op_mod[0x10];

6177
	u8         reserved_at_40[0x18];
6178 6179
	u8         eq_number[0x8];

6180
	u8         reserved_at_60[0x20];
6181 6182 6183 6184
};

struct mlx5_ifc_destroy_dct_out_bits {
	u8         status[0x8];
6185
	u8         reserved_at_8[0x18];
6186 6187 6188

	u8         syndrome[0x20];

6189
	u8         reserved_at_40[0x40];
6190 6191 6192 6193
};

struct mlx5_ifc_destroy_dct_in_bits {
	u8         opcode[0x10];
6194
	u8         reserved_at_10[0x10];
6195

6196
	u8         reserved_at_20[0x10];
6197 6198
	u8         op_mod[0x10];

6199
	u8         reserved_at_40[0x8];
6200 6201
	u8         dctn[0x18];

6202
	u8         reserved_at_60[0x20];
6203 6204 6205 6206
};

struct mlx5_ifc_destroy_cq_out_bits {
	u8         status[0x8];
6207
	u8         reserved_at_8[0x18];
6208 6209 6210

	u8         syndrome[0x20];

6211
	u8         reserved_at_40[0x40];
6212 6213 6214 6215
};

struct mlx5_ifc_destroy_cq_in_bits {
	u8         opcode[0x10];
6216
	u8         reserved_at_10[0x10];
6217

6218
	u8         reserved_at_20[0x10];
6219 6220
	u8         op_mod[0x10];

6221
	u8         reserved_at_40[0x8];
6222 6223
	u8         cqn[0x18];

6224
	u8         reserved_at_60[0x20];
6225 6226 6227 6228
};

struct mlx5_ifc_delete_vxlan_udp_dport_out_bits {
	u8         status[0x8];
6229
	u8         reserved_at_8[0x18];
6230 6231 6232

	u8         syndrome[0x20];

6233
	u8         reserved_at_40[0x40];
6234 6235 6236 6237
};

struct mlx5_ifc_delete_vxlan_udp_dport_in_bits {
	u8         opcode[0x10];
6238
	u8         reserved_at_10[0x10];
6239

6240
	u8         reserved_at_20[0x10];
6241 6242
	u8         op_mod[0x10];

6243
	u8         reserved_at_40[0x20];
6244

6245
	u8         reserved_at_60[0x10];
6246 6247 6248 6249 6250
	u8         vxlan_udp_port[0x10];
};

struct mlx5_ifc_delete_l2_table_entry_out_bits {
	u8         status[0x8];
6251
	u8         reserved_at_8[0x18];
6252 6253 6254

	u8         syndrome[0x20];

6255
	u8         reserved_at_40[0x40];
6256 6257 6258 6259
};

struct mlx5_ifc_delete_l2_table_entry_in_bits {
	u8         opcode[0x10];
6260
	u8         reserved_at_10[0x10];
6261

6262
	u8         reserved_at_20[0x10];
6263 6264
	u8         op_mod[0x10];

6265
	u8         reserved_at_40[0x60];
6266

6267
	u8         reserved_at_a0[0x8];
6268 6269
	u8         table_index[0x18];

6270
	u8         reserved_at_c0[0x140];
6271 6272 6273 6274
};

struct mlx5_ifc_delete_fte_out_bits {
	u8         status[0x8];
6275
	u8         reserved_at_8[0x18];
6276 6277 6278

	u8         syndrome[0x20];

6279
	u8         reserved_at_40[0x40];
6280 6281 6282 6283
};

struct mlx5_ifc_delete_fte_in_bits {
	u8         opcode[0x10];
6284
	u8         reserved_at_10[0x10];
6285

6286
	u8         reserved_at_20[0x10];
6287 6288
	u8         op_mod[0x10];

6289 6290 6291 6292 6293
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
6294 6295

	u8         table_type[0x8];
6296
	u8         reserved_at_88[0x18];
6297

6298
	u8         reserved_at_a0[0x8];
6299 6300
	u8         table_id[0x18];

6301
	u8         reserved_at_c0[0x40];
6302 6303 6304

	u8         flow_index[0x20];

6305
	u8         reserved_at_120[0xe0];
6306 6307 6308 6309
};

struct mlx5_ifc_dealloc_xrcd_out_bits {
	u8         status[0x8];
6310
	u8         reserved_at_8[0x18];
6311 6312 6313

	u8         syndrome[0x20];

6314
	u8         reserved_at_40[0x40];
6315 6316 6317 6318
};

struct mlx5_ifc_dealloc_xrcd_in_bits {
	u8         opcode[0x10];
6319
	u8         reserved_at_10[0x10];
6320

6321
	u8         reserved_at_20[0x10];
6322 6323
	u8         op_mod[0x10];

6324
	u8         reserved_at_40[0x8];
6325 6326
	u8         xrcd[0x18];

6327
	u8         reserved_at_60[0x20];
6328 6329 6330 6331
};

struct mlx5_ifc_dealloc_uar_out_bits {
	u8         status[0x8];
6332
	u8         reserved_at_8[0x18];
6333 6334 6335

	u8         syndrome[0x20];

6336
	u8         reserved_at_40[0x40];
6337 6338 6339 6340
};

struct mlx5_ifc_dealloc_uar_in_bits {
	u8         opcode[0x10];
6341
	u8         reserved_at_10[0x10];
6342

6343
	u8         reserved_at_20[0x10];
6344 6345
	u8         op_mod[0x10];

6346
	u8         reserved_at_40[0x8];
6347 6348
	u8         uar[0x18];

6349
	u8         reserved_at_60[0x20];
6350 6351 6352 6353
};

struct mlx5_ifc_dealloc_transport_domain_out_bits {
	u8         status[0x8];
6354
	u8         reserved_at_8[0x18];
6355 6356 6357

	u8         syndrome[0x20];

6358
	u8         reserved_at_40[0x40];
6359 6360 6361 6362
};

struct mlx5_ifc_dealloc_transport_domain_in_bits {
	u8         opcode[0x10];
6363
	u8         reserved_at_10[0x10];
6364

6365
	u8         reserved_at_20[0x10];
6366 6367
	u8         op_mod[0x10];

6368
	u8         reserved_at_40[0x8];
6369 6370
	u8         transport_domain[0x18];

6371
	u8         reserved_at_60[0x20];
6372 6373 6374 6375
};

struct mlx5_ifc_dealloc_q_counter_out_bits {
	u8         status[0x8];
6376
	u8         reserved_at_8[0x18];
6377 6378 6379

	u8         syndrome[0x20];

6380
	u8         reserved_at_40[0x40];
6381 6382 6383 6384
};

struct mlx5_ifc_dealloc_q_counter_in_bits {
	u8         opcode[0x10];
6385
	u8         reserved_at_10[0x10];
6386

6387
	u8         reserved_at_20[0x10];
6388 6389
	u8         op_mod[0x10];

6390
	u8         reserved_at_40[0x18];
6391 6392
	u8         counter_set_id[0x8];

6393
	u8         reserved_at_60[0x20];
6394 6395 6396 6397
};

struct mlx5_ifc_dealloc_pd_out_bits {
	u8         status[0x8];
6398
	u8         reserved_at_8[0x18];
6399 6400 6401

	u8         syndrome[0x20];

6402
	u8         reserved_at_40[0x40];
6403 6404 6405 6406
};

struct mlx5_ifc_dealloc_pd_in_bits {
	u8         opcode[0x10];
6407
	u8         reserved_at_10[0x10];
6408

6409
	u8         reserved_at_20[0x10];
6410 6411
	u8         op_mod[0x10];

6412
	u8         reserved_at_40[0x8];
6413 6414
	u8         pd[0x18];

6415
	u8         reserved_at_60[0x20];
6416 6417
};

6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433
struct mlx5_ifc_dealloc_flow_counter_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_dealloc_flow_counter_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

6434
	u8         flow_counter_id[0x20];
6435 6436 6437 6438

	u8         reserved_at_60[0x20];
};

S
Saeed Mahameed 已提交
6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462
struct mlx5_ifc_create_xrq_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x8];
	u8         xrqn[0x18];

	u8         reserved_at_60[0x20];
};

struct mlx5_ifc_create_xrq_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];

	struct mlx5_ifc_xrqc_bits xrq_context;
};

6463 6464
struct mlx5_ifc_create_xrc_srq_out_bits {
	u8         status[0x8];
6465
	u8         reserved_at_8[0x18];
6466 6467 6468

	u8         syndrome[0x20];

6469
	u8         reserved_at_40[0x8];
6470 6471
	u8         xrc_srqn[0x18];

6472
	u8         reserved_at_60[0x20];
6473 6474 6475 6476
};

struct mlx5_ifc_create_xrc_srq_in_bits {
	u8         opcode[0x10];
6477
	u8         reserved_at_10[0x10];
6478

6479
	u8         reserved_at_20[0x10];
6480 6481
	u8         op_mod[0x10];

6482
	u8         reserved_at_40[0x40];
6483 6484 6485

	struct mlx5_ifc_xrc_srqc_bits xrc_srq_context_entry;

6486
	u8         reserved_at_280[0x600];
6487 6488 6489 6490 6491 6492

	u8         pas[0][0x40];
};

struct mlx5_ifc_create_tis_out_bits {
	u8         status[0x8];
6493
	u8         reserved_at_8[0x18];
6494 6495 6496

	u8         syndrome[0x20];

6497
	u8         reserved_at_40[0x8];
6498 6499
	u8         tisn[0x18];

6500
	u8         reserved_at_60[0x20];
6501 6502 6503 6504
};

struct mlx5_ifc_create_tis_in_bits {
	u8         opcode[0x10];
6505
	u8         reserved_at_10[0x10];
6506

6507
	u8         reserved_at_20[0x10];
6508 6509
	u8         op_mod[0x10];

6510
	u8         reserved_at_40[0xc0];
6511 6512 6513 6514 6515 6516

	struct mlx5_ifc_tisc_bits ctx;
};

struct mlx5_ifc_create_tir_out_bits {
	u8         status[0x8];
6517
	u8         reserved_at_8[0x18];
6518 6519 6520

	u8         syndrome[0x20];

6521
	u8         reserved_at_40[0x8];
6522 6523
	u8         tirn[0x18];

6524
	u8         reserved_at_60[0x20];
6525 6526 6527 6528
};

struct mlx5_ifc_create_tir_in_bits {
	u8         opcode[0x10];
6529
	u8         reserved_at_10[0x10];
6530

6531
	u8         reserved_at_20[0x10];
6532 6533
	u8         op_mod[0x10];

6534
	u8         reserved_at_40[0xc0];
6535 6536 6537 6538 6539 6540

	struct mlx5_ifc_tirc_bits ctx;
};

struct mlx5_ifc_create_srq_out_bits {
	u8         status[0x8];
6541
	u8         reserved_at_8[0x18];
6542 6543 6544

	u8         syndrome[0x20];

6545
	u8         reserved_at_40[0x8];
6546 6547
	u8         srqn[0x18];

6548
	u8         reserved_at_60[0x20];
6549 6550 6551 6552
};

struct mlx5_ifc_create_srq_in_bits {
	u8         opcode[0x10];
6553
	u8         reserved_at_10[0x10];
6554

6555
	u8         reserved_at_20[0x10];
6556 6557
	u8         op_mod[0x10];

6558
	u8         reserved_at_40[0x40];
6559 6560 6561

	struct mlx5_ifc_srqc_bits srq_context_entry;

6562
	u8         reserved_at_280[0x600];
6563 6564 6565 6566 6567 6568

	u8         pas[0][0x40];
};

struct mlx5_ifc_create_sq_out_bits {
	u8         status[0x8];
6569
	u8         reserved_at_8[0x18];
6570 6571 6572

	u8         syndrome[0x20];

6573
	u8         reserved_at_40[0x8];
6574 6575
	u8         sqn[0x18];

6576
	u8         reserved_at_60[0x20];
6577 6578 6579 6580
};

struct mlx5_ifc_create_sq_in_bits {
	u8         opcode[0x10];
6581
	u8         reserved_at_10[0x10];
6582

6583
	u8         reserved_at_20[0x10];
6584 6585
	u8         op_mod[0x10];

6586
	u8         reserved_at_40[0xc0];
6587 6588 6589 6590

	struct mlx5_ifc_sqc_bits ctx;
};

6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620
struct mlx5_ifc_create_scheduling_element_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];

	u8         scheduling_element_id[0x20];

	u8         reserved_at_a0[0x160];
};

struct mlx5_ifc_create_scheduling_element_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         scheduling_hierarchy[0x8];
	u8         reserved_at_48[0x18];

	u8         reserved_at_60[0xa0];

	struct mlx5_ifc_scheduling_context_bits scheduling_context;

	u8         reserved_at_300[0x100];
};

6621 6622
struct mlx5_ifc_create_rqt_out_bits {
	u8         status[0x8];
6623
	u8         reserved_at_8[0x18];
6624 6625 6626

	u8         syndrome[0x20];

6627
	u8         reserved_at_40[0x8];
6628 6629
	u8         rqtn[0x18];

6630
	u8         reserved_at_60[0x20];
6631 6632 6633 6634
};

struct mlx5_ifc_create_rqt_in_bits {
	u8         opcode[0x10];
6635
	u8         reserved_at_10[0x10];
6636

6637
	u8         reserved_at_20[0x10];
6638 6639
	u8         op_mod[0x10];

6640
	u8         reserved_at_40[0xc0];
6641 6642 6643 6644 6645 6646

	struct mlx5_ifc_rqtc_bits rqt_context;
};

struct mlx5_ifc_create_rq_out_bits {
	u8         status[0x8];
6647
	u8         reserved_at_8[0x18];
6648 6649 6650

	u8         syndrome[0x20];

6651
	u8         reserved_at_40[0x8];
6652 6653
	u8         rqn[0x18];

6654
	u8         reserved_at_60[0x20];
6655 6656 6657 6658
};

struct mlx5_ifc_create_rq_in_bits {
	u8         opcode[0x10];
6659
	u8         reserved_at_10[0x10];
6660

6661
	u8         reserved_at_20[0x10];
6662 6663
	u8         op_mod[0x10];

6664
	u8         reserved_at_40[0xc0];
6665 6666 6667 6668 6669 6670

	struct mlx5_ifc_rqc_bits ctx;
};

struct mlx5_ifc_create_rmp_out_bits {
	u8         status[0x8];
6671
	u8         reserved_at_8[0x18];
6672 6673 6674

	u8         syndrome[0x20];

6675
	u8         reserved_at_40[0x8];
6676 6677
	u8         rmpn[0x18];

6678
	u8         reserved_at_60[0x20];
6679 6680 6681 6682
};

struct mlx5_ifc_create_rmp_in_bits {
	u8         opcode[0x10];
6683
	u8         reserved_at_10[0x10];
6684

6685
	u8         reserved_at_20[0x10];
6686 6687
	u8         op_mod[0x10];

6688
	u8         reserved_at_40[0xc0];
6689 6690 6691 6692 6693 6694

	struct mlx5_ifc_rmpc_bits ctx;
};

struct mlx5_ifc_create_qp_out_bits {
	u8         status[0x8];
6695
	u8         reserved_at_8[0x18];
6696 6697 6698

	u8         syndrome[0x20];

6699
	u8         reserved_at_40[0x8];
6700 6701
	u8         qpn[0x18];

6702
	u8         reserved_at_60[0x20];
6703 6704 6705 6706
};

struct mlx5_ifc_create_qp_in_bits {
	u8         opcode[0x10];
6707
	u8         reserved_at_10[0x10];
6708

6709
	u8         reserved_at_20[0x10];
6710 6711
	u8         op_mod[0x10];

6712
	u8         reserved_at_40[0x40];
6713 6714 6715

	u8         opt_param_mask[0x20];

6716
	u8         reserved_at_a0[0x20];
6717 6718 6719

	struct mlx5_ifc_qpc_bits qpc;

6720
	u8         reserved_at_800[0x80];
6721 6722 6723 6724 6725 6726

	u8         pas[0][0x40];
};

struct mlx5_ifc_create_psv_out_bits {
	u8         status[0x8];
6727
	u8         reserved_at_8[0x18];
6728 6729 6730

	u8         syndrome[0x20];

6731
	u8         reserved_at_40[0x40];
6732

6733
	u8         reserved_at_80[0x8];
6734 6735
	u8         psv0_index[0x18];

6736
	u8         reserved_at_a0[0x8];
6737 6738
	u8         psv1_index[0x18];

6739
	u8         reserved_at_c0[0x8];
6740 6741
	u8         psv2_index[0x18];

6742
	u8         reserved_at_e0[0x8];
6743 6744 6745 6746 6747
	u8         psv3_index[0x18];
};

struct mlx5_ifc_create_psv_in_bits {
	u8         opcode[0x10];
6748
	u8         reserved_at_10[0x10];
6749

6750
	u8         reserved_at_20[0x10];
6751 6752 6753
	u8         op_mod[0x10];

	u8         num_psv[0x4];
6754
	u8         reserved_at_44[0x4];
6755 6756
	u8         pd[0x18];

6757
	u8         reserved_at_60[0x20];
6758 6759 6760 6761
};

struct mlx5_ifc_create_mkey_out_bits {
	u8         status[0x8];
6762
	u8         reserved_at_8[0x18];
6763 6764 6765

	u8         syndrome[0x20];

6766
	u8         reserved_at_40[0x8];
6767 6768
	u8         mkey_index[0x18];

6769
	u8         reserved_at_60[0x20];
6770 6771 6772 6773
};

struct mlx5_ifc_create_mkey_in_bits {
	u8         opcode[0x10];
6774
	u8         reserved_at_10[0x10];
6775

6776
	u8         reserved_at_20[0x10];
6777 6778
	u8         op_mod[0x10];

6779
	u8         reserved_at_40[0x20];
6780 6781

	u8         pg_access[0x1];
6782
	u8         reserved_at_61[0x1f];
6783 6784 6785

	struct mlx5_ifc_mkc_bits memory_key_mkey_entry;

6786
	u8         reserved_at_280[0x80];
6787 6788 6789

	u8         translations_octword_actual_size[0x20];

6790
	u8         reserved_at_320[0x560];
6791 6792 6793 6794 6795 6796

	u8         klm_pas_mtt[0][0x20];
};

struct mlx5_ifc_create_flow_table_out_bits {
	u8         status[0x8];
6797
	u8         reserved_at_8[0x18];
6798 6799 6800

	u8         syndrome[0x20];

6801
	u8         reserved_at_40[0x8];
6802 6803
	u8         table_id[0x18];

6804
	u8         reserved_at_60[0x20];
6805 6806
};

6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824
struct mlx5_ifc_flow_table_context_bits {
	u8         encap_en[0x1];
	u8         decap_en[0x1];
	u8         reserved_at_2[0x2];
	u8         table_miss_action[0x4];
	u8         level[0x8];
	u8         reserved_at_10[0x8];
	u8         log_size[0x8];

	u8         reserved_at_20[0x8];
	u8         table_miss_id[0x18];

	u8         reserved_at_40[0x8];
	u8         lag_master_next_table_id[0x18];

	u8         reserved_at_60[0xe0];
};

6825 6826
struct mlx5_ifc_create_flow_table_in_bits {
	u8         opcode[0x10];
6827
	u8         reserved_at_10[0x10];
6828

6829
	u8         reserved_at_20[0x10];
6830 6831
	u8         op_mod[0x10];

6832 6833 6834 6835 6836
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
6837 6838

	u8         table_type[0x8];
6839
	u8         reserved_at_88[0x18];
6840

6841
	u8         reserved_at_a0[0x20];
6842

6843
	struct mlx5_ifc_flow_table_context_bits flow_table_context;
6844 6845 6846 6847
};

struct mlx5_ifc_create_flow_group_out_bits {
	u8         status[0x8];
6848
	u8         reserved_at_8[0x18];
6849 6850 6851

	u8         syndrome[0x20];

6852
	u8         reserved_at_40[0x8];
6853 6854
	u8         group_id[0x18];

6855
	u8         reserved_at_60[0x20];
6856 6857 6858 6859 6860 6861 6862 6863 6864 6865
};

enum {
	MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_OUTER_HEADERS    = 0x0,
	MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS  = 0x1,
	MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_INNER_HEADERS    = 0x2,
};

struct mlx5_ifc_create_flow_group_in_bits {
	u8         opcode[0x10];
6866
	u8         reserved_at_10[0x10];
6867

6868
	u8         reserved_at_20[0x10];
6869 6870
	u8         op_mod[0x10];

6871 6872 6873 6874 6875
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
6876 6877

	u8         table_type[0x8];
6878
	u8         reserved_at_88[0x18];
6879

6880
	u8         reserved_at_a0[0x8];
6881 6882
	u8         table_id[0x18];

6883
	u8         reserved_at_c0[0x20];
6884 6885 6886

	u8         start_flow_index[0x20];

6887
	u8         reserved_at_100[0x20];
6888 6889 6890

	u8         end_flow_index[0x20];

6891
	u8         reserved_at_140[0xa0];
6892

6893
	u8         reserved_at_1e0[0x18];
6894 6895 6896 6897
	u8         match_criteria_enable[0x8];

	struct mlx5_ifc_fte_match_param_bits match_criteria;

6898
	u8         reserved_at_1200[0xe00];
6899 6900 6901 6902
};

struct mlx5_ifc_create_eq_out_bits {
	u8         status[0x8];
6903
	u8         reserved_at_8[0x18];
6904 6905 6906

	u8         syndrome[0x20];

6907
	u8         reserved_at_40[0x18];
6908 6909
	u8         eq_number[0x8];

6910
	u8         reserved_at_60[0x20];
6911 6912 6913 6914
};

struct mlx5_ifc_create_eq_in_bits {
	u8         opcode[0x10];
6915
	u8         reserved_at_10[0x10];
6916

6917
	u8         reserved_at_20[0x10];
6918 6919
	u8         op_mod[0x10];

6920
	u8         reserved_at_40[0x40];
6921 6922 6923

	struct mlx5_ifc_eqc_bits eq_context_entry;

6924
	u8         reserved_at_280[0x40];
6925 6926 6927

	u8         event_bitmask[0x40];

6928
	u8         reserved_at_300[0x580];
6929 6930 6931 6932 6933 6934

	u8         pas[0][0x40];
};

struct mlx5_ifc_create_dct_out_bits {
	u8         status[0x8];
6935
	u8         reserved_at_8[0x18];
6936 6937 6938

	u8         syndrome[0x20];

6939
	u8         reserved_at_40[0x8];
6940 6941
	u8         dctn[0x18];

6942
	u8         reserved_at_60[0x20];
6943 6944 6945 6946
};

struct mlx5_ifc_create_dct_in_bits {
	u8         opcode[0x10];
6947
	u8         reserved_at_10[0x10];
6948

6949
	u8         reserved_at_20[0x10];
6950 6951
	u8         op_mod[0x10];

6952
	u8         reserved_at_40[0x40];
6953 6954 6955

	struct mlx5_ifc_dctc_bits dct_context_entry;

6956
	u8         reserved_at_280[0x180];
6957 6958 6959 6960
};

struct mlx5_ifc_create_cq_out_bits {
	u8         status[0x8];
6961
	u8         reserved_at_8[0x18];
6962 6963 6964

	u8         syndrome[0x20];

6965
	u8         reserved_at_40[0x8];
6966 6967
	u8         cqn[0x18];

6968
	u8         reserved_at_60[0x20];
6969 6970 6971 6972
};

struct mlx5_ifc_create_cq_in_bits {
	u8         opcode[0x10];
6973
	u8         reserved_at_10[0x10];
6974

6975
	u8         reserved_at_20[0x10];
6976 6977
	u8         op_mod[0x10];

6978
	u8         reserved_at_40[0x40];
6979 6980 6981

	struct mlx5_ifc_cqc_bits cq_context;

6982
	u8         reserved_at_280[0x600];
6983 6984 6985 6986 6987 6988

	u8         pas[0][0x40];
};

struct mlx5_ifc_config_int_moderation_out_bits {
	u8         status[0x8];
6989
	u8         reserved_at_8[0x18];
6990 6991 6992

	u8         syndrome[0x20];

6993
	u8         reserved_at_40[0x4];
6994 6995 6996
	u8         min_delay[0xc];
	u8         int_vector[0x10];

6997
	u8         reserved_at_60[0x20];
6998 6999 7000 7001 7002 7003 7004 7005 7006
};

enum {
	MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_WRITE  = 0x0,
	MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_READ   = 0x1,
};

struct mlx5_ifc_config_int_moderation_in_bits {
	u8         opcode[0x10];
7007
	u8         reserved_at_10[0x10];
7008

7009
	u8         reserved_at_20[0x10];
7010 7011
	u8         op_mod[0x10];

7012
	u8         reserved_at_40[0x4];
7013 7014 7015
	u8         min_delay[0xc];
	u8         int_vector[0x10];

7016
	u8         reserved_at_60[0x20];
7017 7018 7019 7020
};

struct mlx5_ifc_attach_to_mcg_out_bits {
	u8         status[0x8];
7021
	u8         reserved_at_8[0x18];
7022 7023 7024

	u8         syndrome[0x20];

7025
	u8         reserved_at_40[0x40];
7026 7027 7028 7029
};

struct mlx5_ifc_attach_to_mcg_in_bits {
	u8         opcode[0x10];
7030
	u8         reserved_at_10[0x10];
7031

7032
	u8         reserved_at_20[0x10];
7033 7034
	u8         op_mod[0x10];

7035
	u8         reserved_at_40[0x8];
7036 7037
	u8         qpn[0x18];

7038
	u8         reserved_at_60[0x20];
7039 7040 7041 7042

	u8         multicast_gid[16][0x8];
};

S
Saeed Mahameed 已提交
7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065
struct mlx5_ifc_arm_xrq_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_arm_xrq_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x8];
	u8         xrqn[0x18];

	u8         reserved_at_60[0x10];
	u8         lwm[0x10];
};

7066 7067
struct mlx5_ifc_arm_xrc_srq_out_bits {
	u8         status[0x8];
7068
	u8         reserved_at_8[0x18];
7069 7070 7071

	u8         syndrome[0x20];

7072
	u8         reserved_at_40[0x40];
7073 7074 7075 7076 7077 7078 7079 7080
};

enum {
	MLX5_ARM_XRC_SRQ_IN_OP_MOD_XRC_SRQ  = 0x1,
};

struct mlx5_ifc_arm_xrc_srq_in_bits {
	u8         opcode[0x10];
7081
	u8         reserved_at_10[0x10];
7082

7083
	u8         reserved_at_20[0x10];
7084 7085
	u8         op_mod[0x10];

7086
	u8         reserved_at_40[0x8];
7087 7088
	u8         xrc_srqn[0x18];

7089
	u8         reserved_at_60[0x10];
7090 7091 7092 7093 7094
	u8         lwm[0x10];
};

struct mlx5_ifc_arm_rq_out_bits {
	u8         status[0x8];
7095
	u8         reserved_at_8[0x18];
7096 7097 7098

	u8         syndrome[0x20];

7099
	u8         reserved_at_40[0x40];
7100 7101 7102
};

enum {
S
Saeed Mahameed 已提交
7103 7104
	MLX5_ARM_RQ_IN_OP_MOD_SRQ = 0x1,
	MLX5_ARM_RQ_IN_OP_MOD_XRQ = 0x2,
7105 7106 7107 7108
};

struct mlx5_ifc_arm_rq_in_bits {
	u8         opcode[0x10];
7109
	u8         reserved_at_10[0x10];
7110

7111
	u8         reserved_at_20[0x10];
7112 7113
	u8         op_mod[0x10];

7114
	u8         reserved_at_40[0x8];
7115 7116
	u8         srq_number[0x18];

7117
	u8         reserved_at_60[0x10];
7118 7119 7120 7121 7122
	u8         lwm[0x10];
};

struct mlx5_ifc_arm_dct_out_bits {
	u8         status[0x8];
7123
	u8         reserved_at_8[0x18];
7124 7125 7126

	u8         syndrome[0x20];

7127
	u8         reserved_at_40[0x40];
7128 7129 7130 7131
};

struct mlx5_ifc_arm_dct_in_bits {
	u8         opcode[0x10];
7132
	u8         reserved_at_10[0x10];
7133

7134
	u8         reserved_at_20[0x10];
7135 7136
	u8         op_mod[0x10];

7137
	u8         reserved_at_40[0x8];
7138 7139
	u8         dct_number[0x18];

7140
	u8         reserved_at_60[0x20];
7141 7142 7143 7144
};

struct mlx5_ifc_alloc_xrcd_out_bits {
	u8         status[0x8];
7145
	u8         reserved_at_8[0x18];
7146 7147 7148

	u8         syndrome[0x20];

7149
	u8         reserved_at_40[0x8];
7150 7151
	u8         xrcd[0x18];

7152
	u8         reserved_at_60[0x20];
7153 7154 7155 7156
};

struct mlx5_ifc_alloc_xrcd_in_bits {
	u8         opcode[0x10];
7157
	u8         reserved_at_10[0x10];
7158

7159
	u8         reserved_at_20[0x10];
7160 7161
	u8         op_mod[0x10];

7162
	u8         reserved_at_40[0x40];
7163 7164 7165 7166
};

struct mlx5_ifc_alloc_uar_out_bits {
	u8         status[0x8];
7167
	u8         reserved_at_8[0x18];
7168 7169 7170

	u8         syndrome[0x20];

7171
	u8         reserved_at_40[0x8];
7172 7173
	u8         uar[0x18];

7174
	u8         reserved_at_60[0x20];
7175 7176 7177 7178
};

struct mlx5_ifc_alloc_uar_in_bits {
	u8         opcode[0x10];
7179
	u8         reserved_at_10[0x10];
7180

7181
	u8         reserved_at_20[0x10];
7182 7183
	u8         op_mod[0x10];

7184
	u8         reserved_at_40[0x40];
7185 7186 7187 7188
};

struct mlx5_ifc_alloc_transport_domain_out_bits {
	u8         status[0x8];
7189
	u8         reserved_at_8[0x18];
7190 7191 7192

	u8         syndrome[0x20];

7193
	u8         reserved_at_40[0x8];
7194 7195
	u8         transport_domain[0x18];

7196
	u8         reserved_at_60[0x20];
7197 7198 7199 7200
};

struct mlx5_ifc_alloc_transport_domain_in_bits {
	u8         opcode[0x10];
7201
	u8         reserved_at_10[0x10];
7202

7203
	u8         reserved_at_20[0x10];
7204 7205
	u8         op_mod[0x10];

7206
	u8         reserved_at_40[0x40];
7207 7208 7209 7210
};

struct mlx5_ifc_alloc_q_counter_out_bits {
	u8         status[0x8];
7211
	u8         reserved_at_8[0x18];
7212 7213 7214

	u8         syndrome[0x20];

7215
	u8         reserved_at_40[0x18];
7216 7217
	u8         counter_set_id[0x8];

7218
	u8         reserved_at_60[0x20];
7219 7220 7221 7222
};

struct mlx5_ifc_alloc_q_counter_in_bits {
	u8         opcode[0x10];
7223
	u8         reserved_at_10[0x10];
7224

7225
	u8         reserved_at_20[0x10];
7226 7227
	u8         op_mod[0x10];

7228
	u8         reserved_at_40[0x40];
7229 7230 7231 7232
};

struct mlx5_ifc_alloc_pd_out_bits {
	u8         status[0x8];
7233
	u8         reserved_at_8[0x18];
7234 7235 7236

	u8         syndrome[0x20];

7237
	u8         reserved_at_40[0x8];
7238 7239
	u8         pd[0x18];

7240
	u8         reserved_at_60[0x20];
7241 7242 7243
};

struct mlx5_ifc_alloc_pd_in_bits {
7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_alloc_flow_counter_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

7259
	u8         flow_counter_id[0x20];
7260 7261 7262 7263 7264

	u8         reserved_at_60[0x20];
};

struct mlx5_ifc_alloc_flow_counter_in_bits {
7265
	u8         opcode[0x10];
7266
	u8         reserved_at_10[0x10];
7267

7268
	u8         reserved_at_20[0x10];
7269 7270
	u8         op_mod[0x10];

7271
	u8         reserved_at_40[0x40];
7272 7273 7274 7275
};

struct mlx5_ifc_add_vxlan_udp_dport_out_bits {
	u8         status[0x8];
7276
	u8         reserved_at_8[0x18];
7277 7278 7279

	u8         syndrome[0x20];

7280
	u8         reserved_at_40[0x40];
7281 7282 7283 7284
};

struct mlx5_ifc_add_vxlan_udp_dport_in_bits {
	u8         opcode[0x10];
7285
	u8         reserved_at_10[0x10];
7286

7287
	u8         reserved_at_20[0x10];
7288 7289
	u8         op_mod[0x10];

7290
	u8         reserved_at_40[0x20];
7291

7292
	u8         reserved_at_60[0x10];
7293 7294 7295
	u8         vxlan_udp_port[0x10];
};

7296
struct mlx5_ifc_set_pp_rate_limit_out_bits {
S
Saeed Mahameed 已提交
7297 7298 7299 7300 7301 7302 7303 7304
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

7305
struct mlx5_ifc_set_pp_rate_limit_in_bits {
S
Saeed Mahameed 已提交
7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x10];
	u8         rate_limit_index[0x10];

	u8         reserved_at_60[0x20];

	u8         rate_limit[0x20];
7318

7319 7320 7321 7322 7323 7324
	u8	   burst_upper_bound[0x20];

	u8         reserved_at_c0[0x10];
	u8	   typical_packet_size[0x10];

	u8         reserved_at_e0[0x120];
S
Saeed Mahameed 已提交
7325 7326
};

7327 7328
struct mlx5_ifc_access_register_out_bits {
	u8         status[0x8];
7329
	u8         reserved_at_8[0x18];
7330 7331 7332

	u8         syndrome[0x20];

7333
	u8         reserved_at_40[0x40];
7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344

	u8         register_data[0][0x20];
};

enum {
	MLX5_ACCESS_REGISTER_IN_OP_MOD_WRITE  = 0x0,
	MLX5_ACCESS_REGISTER_IN_OP_MOD_READ   = 0x1,
};

struct mlx5_ifc_access_register_in_bits {
	u8         opcode[0x10];
7345
	u8         reserved_at_10[0x10];
7346

7347
	u8         reserved_at_20[0x10];
7348 7349
	u8         op_mod[0x10];

7350
	u8         reserved_at_40[0x10];
7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362
	u8         register_id[0x10];

	u8         argument[0x20];

	u8         register_data[0][0x20];
};

struct mlx5_ifc_sltp_reg_bits {
	u8         status[0x4];
	u8         version[0x4];
	u8         local_port[0x8];
	u8         pnat[0x2];
7363
	u8         reserved_at_12[0x2];
7364
	u8         lane[0x4];
7365
	u8         reserved_at_18[0x8];
7366

7367
	u8         reserved_at_20[0x20];
7368

7369
	u8         reserved_at_40[0x7];
7370 7371 7372 7373 7374
	u8         polarity[0x1];
	u8         ob_tap0[0x8];
	u8         ob_tap1[0x8];
	u8         ob_tap2[0x8];

7375
	u8         reserved_at_60[0xc];
7376 7377 7378 7379
	u8         ob_preemp_mode[0x4];
	u8         ob_reg[0x8];
	u8         ob_bias[0x8];

7380
	u8         reserved_at_80[0x20];
7381 7382 7383 7384 7385 7386 7387
};

struct mlx5_ifc_slrg_reg_bits {
	u8         status[0x4];
	u8         version[0x4];
	u8         local_port[0x8];
	u8         pnat[0x2];
7388
	u8         reserved_at_12[0x2];
7389
	u8         lane[0x4];
7390
	u8         reserved_at_18[0x8];
7391 7392

	u8         time_to_link_up[0x10];
7393
	u8         reserved_at_30[0xc];
7394 7395 7396 7397 7398
	u8         grade_lane_speed[0x4];

	u8         grade_version[0x8];
	u8         grade[0x18];

7399
	u8         reserved_at_60[0x4];
7400 7401 7402 7403 7404 7405
	u8         height_grade_type[0x4];
	u8         height_grade[0x18];

	u8         height_dz[0x10];
	u8         height_dv[0x10];

7406
	u8         reserved_at_a0[0x10];
7407 7408
	u8         height_sigma[0x10];

7409
	u8         reserved_at_c0[0x20];
7410

7411
	u8         reserved_at_e0[0x4];
7412 7413 7414
	u8         phase_grade_type[0x4];
	u8         phase_grade[0x18];

7415
	u8         reserved_at_100[0x8];
7416
	u8         phase_eo_pos[0x8];
7417
	u8         reserved_at_110[0x8];
7418 7419 7420 7421 7422 7423 7424
	u8         phase_eo_neg[0x8];

	u8         ffe_set_tested[0x10];
	u8         test_errors_per_lane[0x10];
};

struct mlx5_ifc_pvlc_reg_bits {
7425
	u8         reserved_at_0[0x8];
7426
	u8         local_port[0x8];
7427
	u8         reserved_at_10[0x10];
7428

7429
	u8         reserved_at_20[0x1c];
7430 7431
	u8         vl_hw_cap[0x4];

7432
	u8         reserved_at_40[0x1c];
7433 7434
	u8         vl_admin[0x4];

7435
	u8         reserved_at_60[0x1c];
7436 7437 7438 7439 7440 7441
	u8         vl_operational[0x4];
};

struct mlx5_ifc_pude_reg_bits {
	u8         swid[0x8];
	u8         local_port[0x8];
7442
	u8         reserved_at_10[0x4];
7443
	u8         admin_status[0x4];
7444
	u8         reserved_at_18[0x4];
7445 7446
	u8         oper_status[0x4];

7447
	u8         reserved_at_20[0x60];
7448 7449 7450
};

struct mlx5_ifc_ptys_reg_bits {
7451
	u8         reserved_at_0[0x1];
S
Saeed Mahameed 已提交
7452
	u8         an_disable_admin[0x1];
7453 7454
	u8         an_disable_cap[0x1];
	u8         reserved_at_3[0x5];
7455
	u8         local_port[0x8];
7456
	u8         reserved_at_10[0xd];
7457 7458
	u8         proto_mask[0x3];

S
Saeed Mahameed 已提交
7459 7460
	u8         an_status[0x4];
	u8         reserved_at_24[0x3c];
7461 7462 7463 7464 7465 7466

	u8         eth_proto_capability[0x20];

	u8         ib_link_width_capability[0x10];
	u8         ib_proto_capability[0x10];

7467
	u8         reserved_at_a0[0x20];
7468 7469 7470 7471 7472 7473

	u8         eth_proto_admin[0x20];

	u8         ib_link_width_admin[0x10];
	u8         ib_proto_admin[0x10];

7474
	u8         reserved_at_100[0x20];
7475 7476 7477 7478 7479 7480

	u8         eth_proto_oper[0x20];

	u8         ib_link_width_oper[0x10];
	u8         ib_proto_oper[0x10];

7481 7482
	u8         reserved_at_160[0x1c];
	u8         connector_type[0x4];
7483 7484 7485

	u8         eth_proto_lp_advertise[0x20];

7486
	u8         reserved_at_1a0[0x60];
7487 7488
};

7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499
struct mlx5_ifc_mlcr_reg_bits {
	u8         reserved_at_0[0x8];
	u8         local_port[0x8];
	u8         reserved_at_10[0x20];

	u8         beacon_duration[0x10];
	u8         reserved_at_40[0x10];

	u8         beacon_remain[0x10];
};

7500
struct mlx5_ifc_ptas_reg_bits {
7501
	u8         reserved_at_0[0x20];
7502 7503

	u8         algorithm_options[0x10];
7504
	u8         reserved_at_30[0x4];
7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529
	u8         repetitions_mode[0x4];
	u8         num_of_repetitions[0x8];

	u8         grade_version[0x8];
	u8         height_grade_type[0x4];
	u8         phase_grade_type[0x4];
	u8         height_grade_weight[0x8];
	u8         phase_grade_weight[0x8];

	u8         gisim_measure_bits[0x10];
	u8         adaptive_tap_measure_bits[0x10];

	u8         ber_bath_high_error_threshold[0x10];
	u8         ber_bath_mid_error_threshold[0x10];

	u8         ber_bath_low_error_threshold[0x10];
	u8         one_ratio_high_threshold[0x10];

	u8         one_ratio_high_mid_threshold[0x10];
	u8         one_ratio_low_mid_threshold[0x10];

	u8         one_ratio_low_threshold[0x10];
	u8         ndeo_error_threshold[0x10];

	u8         mixer_offset_step_size[0x10];
7530
	u8         reserved_at_110[0x8];
7531 7532 7533 7534 7535
	u8         mix90_phase_for_voltage_bath[0x8];

	u8         mixer_offset_start[0x10];
	u8         mixer_offset_end[0x10];

7536
	u8         reserved_at_140[0x15];
7537 7538 7539 7540 7541 7542 7543
	u8         ber_test_time[0xb];
};

struct mlx5_ifc_pspa_reg_bits {
	u8         swid[0x8];
	u8         local_port[0x8];
	u8         sub_port[0x8];
7544
	u8         reserved_at_18[0x8];
7545

7546
	u8         reserved_at_20[0x20];
7547 7548 7549
};

struct mlx5_ifc_pqdr_reg_bits {
7550
	u8         reserved_at_0[0x8];
7551
	u8         local_port[0x8];
7552
	u8         reserved_at_10[0x5];
7553
	u8         prio[0x3];
7554
	u8         reserved_at_18[0x6];
7555 7556
	u8         mode[0x2];

7557
	u8         reserved_at_20[0x20];
7558

7559
	u8         reserved_at_40[0x10];
7560 7561
	u8         min_threshold[0x10];

7562
	u8         reserved_at_60[0x10];
7563 7564
	u8         max_threshold[0x10];

7565
	u8         reserved_at_80[0x10];
7566 7567
	u8         mark_probability_denominator[0x10];

7568
	u8         reserved_at_a0[0x60];
7569 7570 7571
};

struct mlx5_ifc_ppsc_reg_bits {
7572
	u8         reserved_at_0[0x8];
7573
	u8         local_port[0x8];
7574
	u8         reserved_at_10[0x10];
7575

7576
	u8         reserved_at_20[0x60];
7577

7578
	u8         reserved_at_80[0x1c];
7579 7580
	u8         wrps_admin[0x4];

7581
	u8         reserved_at_a0[0x1c];
7582 7583
	u8         wrps_status[0x4];

7584
	u8         reserved_at_c0[0x8];
7585
	u8         up_threshold[0x8];
7586
	u8         reserved_at_d0[0x8];
7587 7588
	u8         down_threshold[0x8];

7589
	u8         reserved_at_e0[0x20];
7590

7591
	u8         reserved_at_100[0x1c];
7592 7593
	u8         srps_admin[0x4];

7594
	u8         reserved_at_120[0x1c];
7595 7596
	u8         srps_status[0x4];

7597
	u8         reserved_at_140[0x40];
7598 7599 7600
};

struct mlx5_ifc_pplr_reg_bits {
7601
	u8         reserved_at_0[0x8];
7602
	u8         local_port[0x8];
7603
	u8         reserved_at_10[0x10];
7604

7605
	u8         reserved_at_20[0x8];
7606
	u8         lb_cap[0x8];
7607
	u8         reserved_at_30[0x8];
7608 7609 7610 7611
	u8         lb_en[0x8];
};

struct mlx5_ifc_pplm_reg_bits {
7612
	u8         reserved_at_0[0x8];
7613
	u8         local_port[0x8];
7614
	u8         reserved_at_10[0x10];
7615

7616
	u8         reserved_at_20[0x20];
7617 7618 7619 7620

	u8         port_profile_mode[0x8];
	u8         static_port_profile[0x8];
	u8         active_port_profile[0x8];
7621
	u8         reserved_at_58[0x8];
7622 7623 7624 7625

	u8         retransmission_active[0x8];
	u8         fec_mode_active[0x18];

7626
	u8         reserved_at_80[0x20];
7627 7628 7629 7630 7631 7632
};

struct mlx5_ifc_ppcnt_reg_bits {
	u8         swid[0x8];
	u8         local_port[0x8];
	u8         pnat[0x2];
7633
	u8         reserved_at_12[0x8];
7634 7635 7636
	u8         grp[0x6];

	u8         clr[0x1];
7637
	u8         reserved_at_21[0x1c];
7638 7639 7640 7641 7642
	u8         prio_tc[0x3];

	union mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits counter_set;
};

7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654
struct mlx5_ifc_mpcnt_reg_bits {
	u8         reserved_at_0[0x8];
	u8         pcie_index[0x8];
	u8         reserved_at_10[0xa];
	u8         grp[0x6];

	u8         clr[0x1];
	u8         reserved_at_21[0x1f];

	union mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits counter_set;
};

7655
struct mlx5_ifc_ppad_reg_bits {
7656
	u8         reserved_at_0[0x3];
7657
	u8         single_mac[0x1];
7658
	u8         reserved_at_4[0x4];
7659 7660 7661 7662 7663
	u8         local_port[0x8];
	u8         mac_47_32[0x10];

	u8         mac_31_0[0x20];

7664
	u8         reserved_at_40[0x40];
7665 7666 7667
};

struct mlx5_ifc_pmtu_reg_bits {
7668
	u8         reserved_at_0[0x8];
7669
	u8         local_port[0x8];
7670
	u8         reserved_at_10[0x10];
7671 7672

	u8         max_mtu[0x10];
7673
	u8         reserved_at_30[0x10];
7674 7675

	u8         admin_mtu[0x10];
7676
	u8         reserved_at_50[0x10];
7677 7678

	u8         oper_mtu[0x10];
7679
	u8         reserved_at_70[0x10];
7680 7681 7682
};

struct mlx5_ifc_pmpr_reg_bits {
7683
	u8         reserved_at_0[0x8];
7684
	u8         module[0x8];
7685
	u8         reserved_at_10[0x10];
7686

7687
	u8         reserved_at_20[0x18];
7688 7689
	u8         attenuation_5g[0x8];

7690
	u8         reserved_at_40[0x18];
7691 7692
	u8         attenuation_7g[0x8];

7693
	u8         reserved_at_60[0x18];
7694 7695 7696 7697
	u8         attenuation_12g[0x8];
};

struct mlx5_ifc_pmpe_reg_bits {
7698
	u8         reserved_at_0[0x8];
7699
	u8         module[0x8];
7700
	u8         reserved_at_10[0xc];
7701 7702
	u8         module_status[0x4];

7703
	u8         reserved_at_20[0x60];
7704 7705 7706 7707 7708 7709 7710
};

struct mlx5_ifc_pmpc_reg_bits {
	u8         module_state_updated[32][0x8];
};

struct mlx5_ifc_pmlpn_reg_bits {
7711
	u8         reserved_at_0[0x4];
7712 7713
	u8         mlpn_status[0x4];
	u8         local_port[0x8];
7714
	u8         reserved_at_10[0x10];
7715 7716

	u8         e[0x1];
7717
	u8         reserved_at_21[0x1f];
7718 7719 7720 7721
};

struct mlx5_ifc_pmlp_reg_bits {
	u8         rxtx[0x1];
7722
	u8         reserved_at_1[0x7];
7723
	u8         local_port[0x8];
7724
	u8         reserved_at_10[0x8];
7725 7726 7727 7728 7729 7730 7731 7732 7733 7734
	u8         width[0x8];

	u8         lane0_module_mapping[0x20];

	u8         lane1_module_mapping[0x20];

	u8         lane2_module_mapping[0x20];

	u8         lane3_module_mapping[0x20];

7735
	u8         reserved_at_a0[0x160];
7736 7737 7738
};

struct mlx5_ifc_pmaos_reg_bits {
7739
	u8         reserved_at_0[0x8];
7740
	u8         module[0x8];
7741
	u8         reserved_at_10[0x4];
7742
	u8         admin_status[0x4];
7743
	u8         reserved_at_18[0x4];
7744 7745 7746 7747
	u8         oper_status[0x4];

	u8         ase[0x1];
	u8         ee[0x1];
7748
	u8         reserved_at_22[0x1c];
7749 7750
	u8         e[0x2];

7751
	u8         reserved_at_40[0x40];
7752 7753 7754
};

struct mlx5_ifc_plpc_reg_bits {
7755
	u8         reserved_at_0[0x4];
7756
	u8         profile_id[0xc];
7757
	u8         reserved_at_10[0x4];
7758
	u8         proto_mask[0x4];
7759
	u8         reserved_at_18[0x8];
7760

7761
	u8         reserved_at_20[0x10];
7762 7763
	u8         lane_speed[0x10];

7764
	u8         reserved_at_40[0x17];
7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776
	u8         lpbf[0x1];
	u8         fec_mode_policy[0x8];

	u8         retransmission_capability[0x8];
	u8         fec_mode_capability[0x18];

	u8         retransmission_support_admin[0x8];
	u8         fec_mode_support_admin[0x18];

	u8         retransmission_request_admin[0x8];
	u8         fec_mode_request_admin[0x18];

7777
	u8         reserved_at_c0[0x80];
7778 7779 7780
};

struct mlx5_ifc_plib_reg_bits {
7781
	u8         reserved_at_0[0x8];
7782
	u8         local_port[0x8];
7783
	u8         reserved_at_10[0x8];
7784 7785
	u8         ib_port[0x8];

7786
	u8         reserved_at_20[0x60];
7787 7788 7789
};

struct mlx5_ifc_plbf_reg_bits {
7790
	u8         reserved_at_0[0x8];
7791
	u8         local_port[0x8];
7792
	u8         reserved_at_10[0xd];
7793 7794
	u8         lbf_mode[0x3];

7795
	u8         reserved_at_20[0x20];
7796 7797 7798
};

struct mlx5_ifc_pipg_reg_bits {
7799
	u8         reserved_at_0[0x8];
7800
	u8         local_port[0x8];
7801
	u8         reserved_at_10[0x10];
7802 7803

	u8         dic[0x1];
7804
	u8         reserved_at_21[0x19];
7805
	u8         ipg[0x4];
7806
	u8         reserved_at_3e[0x2];
7807 7808 7809
};

struct mlx5_ifc_pifr_reg_bits {
7810
	u8         reserved_at_0[0x8];
7811
	u8         local_port[0x8];
7812
	u8         reserved_at_10[0x10];
7813

7814
	u8         reserved_at_20[0xe0];
7815 7816 7817 7818 7819 7820 7821

	u8         port_filter[8][0x20];

	u8         port_filter_update_en[8][0x20];
};

struct mlx5_ifc_pfcc_reg_bits {
7822
	u8         reserved_at_0[0x8];
7823
	u8         local_port[0x8];
7824
	u8         reserved_at_10[0x10];
7825 7826

	u8         ppan[0x4];
7827
	u8         reserved_at_24[0x4];
7828
	u8         prio_mask_tx[0x8];
7829
	u8         reserved_at_30[0x8];
7830 7831 7832 7833
	u8         prio_mask_rx[0x8];

	u8         pptx[0x1];
	u8         aptx[0x1];
7834
	u8         reserved_at_42[0x6];
7835
	u8         pfctx[0x8];
7836
	u8         reserved_at_50[0x10];
7837 7838 7839

	u8         pprx[0x1];
	u8         aprx[0x1];
7840
	u8         reserved_at_62[0x6];
7841
	u8         pfcrx[0x8];
7842
	u8         reserved_at_70[0x10];
7843

7844
	u8         reserved_at_80[0x80];
7845 7846 7847 7848
};

struct mlx5_ifc_pelc_reg_bits {
	u8         op[0x4];
7849
	u8         reserved_at_4[0x4];
7850
	u8         local_port[0x8];
7851
	u8         reserved_at_10[0x10];
7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865

	u8         op_admin[0x8];
	u8         op_capability[0x8];
	u8         op_request[0x8];
	u8         op_active[0x8];

	u8         admin[0x40];

	u8         capability[0x40];

	u8         request[0x40];

	u8         active[0x40];

7866
	u8         reserved_at_140[0x80];
7867 7868 7869
};

struct mlx5_ifc_peir_reg_bits {
7870
	u8         reserved_at_0[0x8];
7871
	u8         local_port[0x8];
7872
	u8         reserved_at_10[0x10];
7873

7874
	u8         reserved_at_20[0xc];
7875
	u8         error_count[0x4];
7876
	u8         reserved_at_30[0x10];
7877

7878
	u8         reserved_at_40[0xc];
7879
	u8         lane[0x4];
7880
	u8         reserved_at_50[0x8];
7881 7882 7883
	u8         error_type[0x8];
};

7884
struct mlx5_ifc_pcam_enhanced_features_bits {
7885
	u8         reserved_at_0[0x7b];
7886

7887
	u8         rx_buffer_fullness_counters[0x1];
7888 7889
	u8         ptys_connector_type[0x1];
	u8         reserved_at_7d[0x1];
7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916
	u8         ppcnt_discard_group[0x1];
	u8         ppcnt_statistical_group[0x1];
};

struct mlx5_ifc_pcam_reg_bits {
	u8         reserved_at_0[0x8];
	u8         feature_group[0x8];
	u8         reserved_at_10[0x8];
	u8         access_reg_group[0x8];

	u8         reserved_at_20[0x20];

	union {
		u8         reserved_at_0[0x80];
	} port_access_reg_cap_mask;

	u8         reserved_at_c0[0x80];

	union {
		struct mlx5_ifc_pcam_enhanced_features_bits enhanced_features;
		u8         reserved_at_0[0x80];
	} feature_cap_mask;

	u8         reserved_at_1c0[0xc0];
};

struct mlx5_ifc_mcam_enhanced_features_bits {
7917 7918
	u8         reserved_at_0[0x7b];
	u8         pcie_outbound_stalled[0x1];
7919
	u8         tx_overflow_buffer_pkt[0x1];
7920 7921
	u8         mtpps_enh_out_per_adj[0x1];
	u8         mtpps_fs[0x1];
7922 7923 7924
	u8         pcie_performance_group[0x1];
};

7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936
struct mlx5_ifc_mcam_access_reg_bits {
	u8         reserved_at_0[0x1c];
	u8         mcda[0x1];
	u8         mcc[0x1];
	u8         mcqi[0x1];
	u8         reserved_at_1f[0x1];

	u8         regs_95_to_64[0x20];
	u8         regs_63_to_32[0x20];
	u8         regs_31_to_0[0x20];
};

7937 7938 7939 7940 7941 7942 7943 7944 7945
struct mlx5_ifc_mcam_reg_bits {
	u8         reserved_at_0[0x8];
	u8         feature_group[0x8];
	u8         reserved_at_10[0x8];
	u8         access_reg_group[0x8];

	u8         reserved_at_20[0x20];

	union {
7946
		struct mlx5_ifc_mcam_access_reg_bits access_regs;
7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959
		u8         reserved_at_0[0x80];
	} mng_access_reg_cap_mask;

	u8         reserved_at_c0[0x80];

	union {
		struct mlx5_ifc_mcam_enhanced_features_bits enhanced_features;
		u8         reserved_at_0[0x80];
	} mng_feature_cap_mask;

	u8         reserved_at_1c0[0x80];
};

7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996
struct mlx5_ifc_qcam_access_reg_cap_mask {
	u8         qcam_access_reg_cap_mask_127_to_20[0x6C];
	u8         qpdpm[0x1];
	u8         qcam_access_reg_cap_mask_18_to_4[0x0F];
	u8         qdpm[0x1];
	u8         qpts[0x1];
	u8         qcap[0x1];
	u8         qcam_access_reg_cap_mask_0[0x1];
};

struct mlx5_ifc_qcam_qos_feature_cap_mask {
	u8         qcam_qos_feature_cap_mask_127_to_1[0x7F];
	u8         qpts_trust_both[0x1];
};

struct mlx5_ifc_qcam_reg_bits {
	u8         reserved_at_0[0x8];
	u8         feature_group[0x8];
	u8         reserved_at_10[0x8];
	u8         access_reg_group[0x8];
	u8         reserved_at_20[0x20];

	union {
		struct mlx5_ifc_qcam_access_reg_cap_mask reg_cap;
		u8  reserved_at_0[0x80];
	} qos_access_reg_cap_mask;

	u8         reserved_at_c0[0x80];

	union {
		struct mlx5_ifc_qcam_qos_feature_cap_mask feature_cap;
		u8  reserved_at_0[0x80];
	} qos_feature_cap_mask;

	u8         reserved_at_1c0[0x80];
};

7997
struct mlx5_ifc_pcap_reg_bits {
7998
	u8         reserved_at_0[0x8];
7999
	u8         local_port[0x8];
8000
	u8         reserved_at_10[0x10];
8001 8002 8003 8004 8005 8006 8007

	u8         port_capability_mask[4][0x20];
};

struct mlx5_ifc_paos_reg_bits {
	u8         swid[0x8];
	u8         local_port[0x8];
8008
	u8         reserved_at_10[0x4];
8009
	u8         admin_status[0x4];
8010
	u8         reserved_at_18[0x4];
8011 8012 8013 8014
	u8         oper_status[0x4];

	u8         ase[0x1];
	u8         ee[0x1];
8015
	u8         reserved_at_22[0x1c];
8016 8017
	u8         e[0x2];

8018
	u8         reserved_at_40[0x40];
8019 8020 8021
};

struct mlx5_ifc_pamp_reg_bits {
8022
	u8         reserved_at_0[0x8];
8023
	u8         opamp_group[0x8];
8024
	u8         reserved_at_10[0xc];
8025 8026 8027
	u8         opamp_group_type[0x4];

	u8         start_index[0x10];
8028
	u8         reserved_at_30[0x4];
8029 8030 8031 8032 8033
	u8         num_of_indices[0xc];

	u8         index_data[18][0x10];
};

8034 8035 8036 8037 8038 8039 8040 8041 8042 8043
struct mlx5_ifc_pcmr_reg_bits {
	u8         reserved_at_0[0x8];
	u8         local_port[0x8];
	u8         reserved_at_10[0x2e];
	u8         fcs_cap[0x1];
	u8         reserved_at_3f[0x1f];
	u8         fcs_chk[0x1];
	u8         reserved_at_5f[0x1];
};

8044
struct mlx5_ifc_lane_2_module_mapping_bits {
8045
	u8         reserved_at_0[0x6];
8046
	u8         rx_lane[0x2];
8047
	u8         reserved_at_8[0x6];
8048
	u8         tx_lane[0x2];
8049
	u8         reserved_at_10[0x8];
8050 8051 8052 8053
	u8         module[0x8];
};

struct mlx5_ifc_bufferx_reg_bits {
8054
	u8         reserved_at_0[0x6];
8055 8056
	u8         lossy[0x1];
	u8         epsb[0x1];
8057
	u8         reserved_at_8[0xc];
8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068
	u8         size[0xc];

	u8         xoff_threshold[0x10];
	u8         xon_threshold[0x10];
};

struct mlx5_ifc_set_node_in_bits {
	u8         node_description[64][0x8];
};

struct mlx5_ifc_register_power_settings_bits {
8069
	u8         reserved_at_0[0x18];
8070 8071
	u8         power_settings_level[0x8];

8072
	u8         reserved_at_20[0x60];
8073 8074 8075 8076
};

struct mlx5_ifc_register_host_endianness_bits {
	u8         he[0x1];
8077
	u8         reserved_at_1[0x1f];
8078

8079
	u8         reserved_at_20[0x60];
8080 8081 8082
};

struct mlx5_ifc_umr_pointer_desc_argument_bits {
8083
	u8         reserved_at_0[0x20];
8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095

	u8         mkey[0x20];

	u8         addressh_63_32[0x20];

	u8         addressl_31_0[0x20];
};

struct mlx5_ifc_ud_adrs_vector_bits {
	u8         dc_key[0x40];

	u8         ext[0x1];
8096
	u8         reserved_at_41[0x7];
8097 8098 8099 8100 8101 8102 8103 8104
	u8         destination_qp_dct[0x18];

	u8         static_rate[0x4];
	u8         sl_eth_prio[0x4];
	u8         fl[0x1];
	u8         mlid[0x7];
	u8         rlid_udp_sport[0x10];

8105
	u8         reserved_at_80[0x20];
8106 8107 8108 8109 8110 8111 8112

	u8         rmac_47_16[0x20];

	u8         rmac_15_0[0x10];
	u8         tclass[0x8];
	u8         hop_limit[0x8];

8113
	u8         reserved_at_e0[0x1];
8114
	u8         grh[0x1];
8115
	u8         reserved_at_e2[0x2];
8116 8117 8118 8119 8120 8121 8122
	u8         src_addr_index[0x8];
	u8         flow_label[0x14];

	u8         rgid_rip[16][0x8];
};

struct mlx5_ifc_pages_req_event_bits {
8123
	u8         reserved_at_0[0x10];
8124 8125 8126 8127
	u8         function_id[0x10];

	u8         num_pages[0x20];

8128
	u8         reserved_at_40[0xa0];
8129 8130 8131
};

struct mlx5_ifc_eqe_bits {
8132
	u8         reserved_at_0[0x8];
8133
	u8         event_type[0x8];
8134
	u8         reserved_at_10[0x8];
8135 8136
	u8         event_sub_type[0x8];

8137
	u8         reserved_at_20[0xe0];
8138 8139 8140

	union mlx5_ifc_event_auto_bits event_data;

8141
	u8         reserved_at_1e0[0x10];
8142
	u8         signature[0x8];
8143
	u8         reserved_at_1f8[0x7];
8144 8145 8146 8147 8148 8149 8150 8151 8152
	u8         owner[0x1];
};

enum {
	MLX5_CMD_QUEUE_ENTRY_TYPE_PCIE_CMD_IF_TRANSPORT  = 0x7,
};

struct mlx5_ifc_cmd_queue_entry_bits {
	u8         type[0x8];
8153
	u8         reserved_at_8[0x18];
8154 8155 8156 8157 8158 8159

	u8         input_length[0x20];

	u8         input_mailbox_pointer_63_32[0x20];

	u8         input_mailbox_pointer_31_9[0x17];
8160
	u8         reserved_at_77[0x9];
8161 8162 8163 8164 8165 8166 8167 8168

	u8         command_input_inline_data[16][0x8];

	u8         command_output_inline_data[16][0x8];

	u8         output_mailbox_pointer_63_32[0x20];

	u8         output_mailbox_pointer_31_9[0x17];
8169
	u8         reserved_at_1b7[0x9];
8170 8171 8172 8173 8174

	u8         output_length[0x20];

	u8         token[0x8];
	u8         signature[0x8];
8175
	u8         reserved_at_1f0[0x8];
8176 8177 8178 8179 8180 8181
	u8         status[0x7];
	u8         ownership[0x1];
};

struct mlx5_ifc_cmd_out_bits {
	u8         status[0x8];
8182
	u8         reserved_at_8[0x18];
8183 8184 8185 8186 8187 8188 8189 8190

	u8         syndrome[0x20];

	u8         command_output[0x20];
};

struct mlx5_ifc_cmd_in_bits {
	u8         opcode[0x10];
8191
	u8         reserved_at_10[0x10];
8192

8193
	u8         reserved_at_20[0x10];
8194 8195 8196 8197 8198 8199 8200 8201
	u8         op_mod[0x10];

	u8         command[0][0x20];
};

struct mlx5_ifc_cmd_if_box_bits {
	u8         mailbox_data[512][0x8];

8202
	u8         reserved_at_1000[0x180];
8203 8204 8205 8206

	u8         next_pointer_63_32[0x20];

	u8         next_pointer_31_10[0x16];
8207
	u8         reserved_at_11b6[0xa];
8208 8209 8210

	u8         block_number[0x20];

8211
	u8         reserved_at_11e0[0x8];
8212 8213 8214 8215 8216 8217 8218 8219 8220
	u8         token[0x8];
	u8         ctrl_signature[0x8];
	u8         signature[0x8];
};

struct mlx5_ifc_mtt_bits {
	u8         ptag_63_32[0x20];

	u8         ptag_31_8[0x18];
8221
	u8         reserved_at_38[0x6];
8222 8223 8224 8225
	u8         wr_en[0x1];
	u8         rd_en[0x1];
};

T
Tariq Toukan 已提交
8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273
struct mlx5_ifc_query_wol_rol_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x10];
	u8         rol_mode[0x8];
	u8         wol_mode[0x8];

	u8         reserved_at_60[0x20];
};

struct mlx5_ifc_query_wol_rol_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_set_wol_rol_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_set_wol_rol_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         rol_mode_valid[0x1];
	u8         wol_mode_valid[0x1];
	u8         reserved_at_42[0xe];
	u8         rol_mode[0x8];
	u8         wol_mode[0x8];

	u8         reserved_at_60[0x20];
};

8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306
enum {
	MLX5_INITIAL_SEG_NIC_INTERFACE_FULL_DRIVER  = 0x0,
	MLX5_INITIAL_SEG_NIC_INTERFACE_DISABLED     = 0x1,
	MLX5_INITIAL_SEG_NIC_INTERFACE_NO_DRAM_NIC  = 0x2,
};

enum {
	MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_FULL_DRIVER  = 0x0,
	MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_DISABLED     = 0x1,
	MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_NO_DRAM_NIC  = 0x2,
};

enum {
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_INTERNAL_ERR              = 0x1,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_DEAD_IRISC                   = 0x7,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_HW_FATAL_ERR                 = 0x8,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_CRC_ERR                   = 0x9,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_FETCH_PCI_ERR            = 0xa,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_PAGE_ERR                 = 0xb,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_ASYNCHRONOUS_EQ_BUF_OVERRUN  = 0xc,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_IN_ERR                    = 0xd,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_INV                       = 0xe,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_FFSER_ERR                    = 0xf,
	MLX5_INITIAL_SEG_HEALTH_SYNDROME_HIGH_TEMP_ERR                = 0x10,
};

struct mlx5_ifc_initial_seg_bits {
	u8         fw_rev_minor[0x10];
	u8         fw_rev_major[0x10];

	u8         cmd_interface_rev[0x10];
	u8         fw_rev_subminor[0x10];

8307
	u8         reserved_at_40[0x40];
8308 8309 8310 8311

	u8         cmdq_phy_addr_63_32[0x20];

	u8         cmdq_phy_addr_31_12[0x14];
8312
	u8         reserved_at_b4[0x2];
8313 8314 8315 8316 8317 8318
	u8         nic_interface[0x2];
	u8         log_cmdq_size[0x4];
	u8         log_cmdq_stride[0x4];

	u8         command_doorbell_vector[0x20];

8319
	u8         reserved_at_e0[0xf00];
8320 8321

	u8         initializing[0x1];
8322
	u8         reserved_at_fe1[0x4];
8323
	u8         nic_interface_supported[0x3];
8324
	u8         reserved_at_fe8[0x18];
8325 8326 8327 8328 8329

	struct mlx5_ifc_health_buffer_bits health_buffer;

	u8         no_dram_nic_offset[0x20];

8330
	u8         reserved_at_1220[0x6e40];
8331

8332
	u8         reserved_at_8060[0x1f];
8333 8334 8335 8336 8337
	u8         clear_int[0x1];

	u8         health_syndrome[0x8];
	u8         health_counter[0x18];

8338
	u8         reserved_at_80a0[0x17fc0];
8339 8340
};

8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366
struct mlx5_ifc_mtpps_reg_bits {
	u8         reserved_at_0[0xc];
	u8         cap_number_of_pps_pins[0x4];
	u8         reserved_at_10[0x4];
	u8         cap_max_num_of_pps_in_pins[0x4];
	u8         reserved_at_18[0x4];
	u8         cap_max_num_of_pps_out_pins[0x4];

	u8         reserved_at_20[0x24];
	u8         cap_pin_3_mode[0x4];
	u8         reserved_at_48[0x4];
	u8         cap_pin_2_mode[0x4];
	u8         reserved_at_50[0x4];
	u8         cap_pin_1_mode[0x4];
	u8         reserved_at_58[0x4];
	u8         cap_pin_0_mode[0x4];

	u8         reserved_at_60[0x4];
	u8         cap_pin_7_mode[0x4];
	u8         reserved_at_68[0x4];
	u8         cap_pin_6_mode[0x4];
	u8         reserved_at_70[0x4];
	u8         cap_pin_5_mode[0x4];
	u8         reserved_at_78[0x4];
	u8         cap_pin_4_mode[0x4];

8367 8368
	u8         field_select[0x20];
	u8         reserved_at_a0[0x60];
8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382

	u8         enable[0x1];
	u8         reserved_at_101[0xb];
	u8         pattern[0x4];
	u8         reserved_at_110[0x4];
	u8         pin_mode[0x4];
	u8         pin[0x8];

	u8         reserved_at_120[0x20];

	u8         time_stamp[0x40];

	u8         out_pulse_duration[0x10];
	u8         out_periodic_adjustment[0x10];
8383
	u8         enhanced_out_periodic_adjustment[0x20];
8384

8385
	u8         reserved_at_1c0[0x20];
8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396
};

struct mlx5_ifc_mtppse_reg_bits {
	u8         reserved_at_0[0x18];
	u8         pin[0x8];
	u8         event_arm[0x1];
	u8         reserved_at_21[0x1b];
	u8         event_generation_mode[0x4];
	u8         reserved_at_40[0x40];
};

8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475
struct mlx5_ifc_mcqi_cap_bits {
	u8         supported_info_bitmask[0x20];

	u8         component_size[0x20];

	u8         max_component_size[0x20];

	u8         log_mcda_word_size[0x4];
	u8         reserved_at_64[0xc];
	u8         mcda_max_write_size[0x10];

	u8         rd_en[0x1];
	u8         reserved_at_81[0x1];
	u8         match_chip_id[0x1];
	u8         match_psid[0x1];
	u8         check_user_timestamp[0x1];
	u8         match_base_guid_mac[0x1];
	u8         reserved_at_86[0x1a];
};

struct mlx5_ifc_mcqi_reg_bits {
	u8         read_pending_component[0x1];
	u8         reserved_at_1[0xf];
	u8         component_index[0x10];

	u8         reserved_at_20[0x20];

	u8         reserved_at_40[0x1b];
	u8         info_type[0x5];

	u8         info_size[0x20];

	u8         offset[0x20];

	u8         reserved_at_a0[0x10];
	u8         data_size[0x10];

	u8         data[0][0x20];
};

struct mlx5_ifc_mcc_reg_bits {
	u8         reserved_at_0[0x4];
	u8         time_elapsed_since_last_cmd[0xc];
	u8         reserved_at_10[0x8];
	u8         instruction[0x8];

	u8         reserved_at_20[0x10];
	u8         component_index[0x10];

	u8         reserved_at_40[0x8];
	u8         update_handle[0x18];

	u8         handle_owner_type[0x4];
	u8         handle_owner_host_id[0x4];
	u8         reserved_at_68[0x1];
	u8         control_progress[0x7];
	u8         error_code[0x8];
	u8         reserved_at_78[0x4];
	u8         control_state[0x4];

	u8         component_size[0x20];

	u8         reserved_at_a0[0x60];
};

struct mlx5_ifc_mcda_reg_bits {
	u8         reserved_at_0[0x8];
	u8         update_handle[0x18];

	u8         offset[0x20];

	u8         reserved_at_40[0x10];
	u8         size[0x10];

	u8         reserved_at_60[0x20];

	u8         data[0][0x20];
};

8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491
union mlx5_ifc_ports_control_registers_document_bits {
	struct mlx5_ifc_bufferx_reg_bits bufferx_reg;
	struct mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits eth_2819_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits eth_2863_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits eth_3635_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits eth_802_3_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits eth_extended_cntrs_grp_data_layout;
	struct mlx5_ifc_eth_per_prio_grp_data_layout_bits eth_per_prio_grp_data_layout;
	struct mlx5_ifc_eth_per_traffic_grp_data_layout_bits eth_per_traffic_grp_data_layout;
	struct mlx5_ifc_lane_2_module_mapping_bits lane_2_module_mapping;
	struct mlx5_ifc_pamp_reg_bits pamp_reg;
	struct mlx5_ifc_paos_reg_bits paos_reg;
	struct mlx5_ifc_pcap_reg_bits pcap_reg;
	struct mlx5_ifc_peir_reg_bits peir_reg;
	struct mlx5_ifc_pelc_reg_bits pelc_reg;
	struct mlx5_ifc_pfcc_reg_bits pfcc_reg;
8492
	struct mlx5_ifc_ib_port_cntrs_grp_data_layout_bits ib_port_cntrs_grp_data_layout;
8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507
	struct mlx5_ifc_phys_layer_cntrs_bits phys_layer_cntrs;
	struct mlx5_ifc_pifr_reg_bits pifr_reg;
	struct mlx5_ifc_pipg_reg_bits pipg_reg;
	struct mlx5_ifc_plbf_reg_bits plbf_reg;
	struct mlx5_ifc_plib_reg_bits plib_reg;
	struct mlx5_ifc_plpc_reg_bits plpc_reg;
	struct mlx5_ifc_pmaos_reg_bits pmaos_reg;
	struct mlx5_ifc_pmlp_reg_bits pmlp_reg;
	struct mlx5_ifc_pmlpn_reg_bits pmlpn_reg;
	struct mlx5_ifc_pmpc_reg_bits pmpc_reg;
	struct mlx5_ifc_pmpe_reg_bits pmpe_reg;
	struct mlx5_ifc_pmpr_reg_bits pmpr_reg;
	struct mlx5_ifc_pmtu_reg_bits pmtu_reg;
	struct mlx5_ifc_ppad_reg_bits ppad_reg;
	struct mlx5_ifc_ppcnt_reg_bits ppcnt_reg;
8508
	struct mlx5_ifc_mpcnt_reg_bits mpcnt_reg;
8509 8510 8511 8512 8513 8514 8515
	struct mlx5_ifc_pplm_reg_bits pplm_reg;
	struct mlx5_ifc_pplr_reg_bits pplr_reg;
	struct mlx5_ifc_ppsc_reg_bits ppsc_reg;
	struct mlx5_ifc_pqdr_reg_bits pqdr_reg;
	struct mlx5_ifc_pspa_reg_bits pspa_reg;
	struct mlx5_ifc_ptas_reg_bits ptas_reg;
	struct mlx5_ifc_ptys_reg_bits ptys_reg;
8516
	struct mlx5_ifc_mlcr_reg_bits mlcr_reg;
8517 8518 8519 8520
	struct mlx5_ifc_pude_reg_bits pude_reg;
	struct mlx5_ifc_pvlc_reg_bits pvlc_reg;
	struct mlx5_ifc_slrg_reg_bits slrg_reg;
	struct mlx5_ifc_sltp_reg_bits sltp_reg;
8521 8522
	struct mlx5_ifc_mtpps_reg_bits mtpps_reg;
	struct mlx5_ifc_mtppse_reg_bits mtppse_reg;
8523
	struct mlx5_ifc_fpga_access_reg_bits fpga_access_reg;
8524 8525
	struct mlx5_ifc_fpga_ctrl_bits fpga_ctrl_bits;
	struct mlx5_ifc_fpga_cap_bits fpga_cap_bits;
8526 8527 8528
	struct mlx5_ifc_mcqi_reg_bits mcqi_reg;
	struct mlx5_ifc_mcc_reg_bits mcc_reg;
	struct mlx5_ifc_mcda_reg_bits mcda_reg;
8529
	u8         reserved_at_0[0x60e0];
8530 8531 8532 8533
};

union mlx5_ifc_debug_enhancements_document_bits {
	struct mlx5_ifc_health_buffer_bits health_buffer;
8534
	u8         reserved_at_0[0x200];
8535 8536 8537 8538
};

union mlx5_ifc_uplink_pci_interface_document_bits {
	struct mlx5_ifc_initial_seg_bits initial_seg;
8539
	u8         reserved_at_0[0x20060];
8540 8541
};

8542 8543
struct mlx5_ifc_set_flow_table_root_out_bits {
	u8         status[0x8];
8544
	u8         reserved_at_8[0x18];
8545 8546 8547

	u8         syndrome[0x20];

8548
	u8         reserved_at_40[0x40];
8549 8550 8551 8552
};

struct mlx5_ifc_set_flow_table_root_in_bits {
	u8         opcode[0x10];
8553
	u8         reserved_at_10[0x10];
8554

8555
	u8         reserved_at_20[0x10];
8556 8557
	u8         op_mod[0x10];

8558 8559 8560 8561 8562
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];

	u8         reserved_at_60[0x20];
8563 8564

	u8         table_type[0x8];
8565
	u8         reserved_at_88[0x18];
8566

8567
	u8         reserved_at_a0[0x8];
8568 8569
	u8         table_id[0x18];

8570 8571 8572
	u8         reserved_at_c0[0x8];
	u8         underlay_qpn[0x18];
	u8         reserved_at_e0[0x120];
8573 8574
};

8575
enum {
8576 8577
	MLX5_MODIFY_FLOW_TABLE_MISS_TABLE_ID     = (1UL << 0),
	MLX5_MODIFY_FLOW_TABLE_LAG_NEXT_TABLE_ID = (1UL << 15),
8578 8579 8580 8581
};

struct mlx5_ifc_modify_flow_table_out_bits {
	u8         status[0x8];
8582
	u8         reserved_at_8[0x18];
8583 8584 8585

	u8         syndrome[0x20];

8586
	u8         reserved_at_40[0x40];
8587 8588 8589 8590
};

struct mlx5_ifc_modify_flow_table_in_bits {
	u8         opcode[0x10];
8591
	u8         reserved_at_10[0x10];
8592

8593
	u8         reserved_at_20[0x10];
8594 8595
	u8         op_mod[0x10];

8596 8597 8598
	u8         other_vport[0x1];
	u8         reserved_at_41[0xf];
	u8         vport_number[0x10];
8599

8600
	u8         reserved_at_60[0x10];
8601 8602 8603
	u8         modify_field_select[0x10];

	u8         table_type[0x8];
8604
	u8         reserved_at_88[0x18];
8605

8606
	u8         reserved_at_a0[0x8];
8607 8608
	u8         table_id[0x18];

8609
	struct mlx5_ifc_flow_table_context_bits flow_table_context;
8610 8611
};

8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646
struct mlx5_ifc_ets_tcn_config_reg_bits {
	u8         g[0x1];
	u8         b[0x1];
	u8         r[0x1];
	u8         reserved_at_3[0x9];
	u8         group[0x4];
	u8         reserved_at_10[0x9];
	u8         bw_allocation[0x7];

	u8         reserved_at_20[0xc];
	u8         max_bw_units[0x4];
	u8         reserved_at_30[0x8];
	u8         max_bw_value[0x8];
};

struct mlx5_ifc_ets_global_config_reg_bits {
	u8         reserved_at_0[0x2];
	u8         r[0x1];
	u8         reserved_at_3[0x1d];

	u8         reserved_at_20[0xc];
	u8         max_bw_units[0x4];
	u8         reserved_at_30[0x8];
	u8         max_bw_value[0x8];
};

struct mlx5_ifc_qetc_reg_bits {
	u8                                         reserved_at_0[0x8];
	u8                                         port_number[0x8];
	u8                                         reserved_at_10[0x30];

	struct mlx5_ifc_ets_tcn_config_reg_bits    tc_configuration[0x8];
	struct mlx5_ifc_ets_global_config_reg_bits global_configuration;
};

8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666
struct mlx5_ifc_qpdpm_dscp_reg_bits {
	u8         e[0x1];
	u8         reserved_at_01[0x0b];
	u8         prio[0x04];
};

struct mlx5_ifc_qpdpm_reg_bits {
	u8                                     reserved_at_0[0x8];
	u8                                     local_port[0x8];
	u8                                     reserved_at_10[0x10];
	struct mlx5_ifc_qpdpm_dscp_reg_bits    dscp[64];
};

struct mlx5_ifc_qpts_reg_bits {
	u8         reserved_at_0[0x8];
	u8         local_port[0x8];
	u8         reserved_at_10[0x2d];
	u8         trust_state[0x3];
};

8667 8668 8669 8670 8671 8672 8673 8674 8675 8676
struct mlx5_ifc_qtct_reg_bits {
	u8         reserved_at_0[0x8];
	u8         port_number[0x8];
	u8         reserved_at_10[0xd];
	u8         prio[0x3];

	u8         reserved_at_20[0x1d];
	u8         tclass[0x3];
};

8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706
struct mlx5_ifc_mcia_reg_bits {
	u8         l[0x1];
	u8         reserved_at_1[0x7];
	u8         module[0x8];
	u8         reserved_at_10[0x8];
	u8         status[0x8];

	u8         i2c_device_address[0x8];
	u8         page_number[0x8];
	u8         device_address[0x10];

	u8         reserved_at_40[0x10];
	u8         size[0x10];

	u8         reserved_at_60[0x20];

	u8         dword_0[0x20];
	u8         dword_1[0x20];
	u8         dword_2[0x20];
	u8         dword_3[0x20];
	u8         dword_4[0x20];
	u8         dword_5[0x20];
	u8         dword_6[0x20];
	u8         dword_7[0x20];
	u8         dword_8[0x20];
	u8         dword_9[0x20];
	u8         dword_10[0x20];
	u8         dword_11[0x20];
};

S
Saeed Mahameed 已提交
8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736
struct mlx5_ifc_dcbx_param_bits {
	u8         dcbx_cee_cap[0x1];
	u8         dcbx_ieee_cap[0x1];
	u8         dcbx_standby_cap[0x1];
	u8         reserved_at_0[0x5];
	u8         port_number[0x8];
	u8         reserved_at_10[0xa];
	u8         max_application_table_size[6];
	u8         reserved_at_20[0x15];
	u8         version_oper[0x3];
	u8         reserved_at_38[5];
	u8         version_admin[0x3];
	u8         willing_admin[0x1];
	u8         reserved_at_41[0x3];
	u8         pfc_cap_oper[0x4];
	u8         reserved_at_48[0x4];
	u8         pfc_cap_admin[0x4];
	u8         reserved_at_50[0x4];
	u8         num_of_tc_oper[0x4];
	u8         reserved_at_58[0x4];
	u8         num_of_tc_admin[0x4];
	u8         remote_willing[0x1];
	u8         reserved_at_61[3];
	u8         remote_pfc_cap[4];
	u8         reserved_at_68[0x14];
	u8         remote_num_of_tc[0x4];
	u8         reserved_at_80[0x18];
	u8         error[0x8];
	u8         reserved_at_a0[0x160];
};
8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866

struct mlx5_ifc_lagc_bits {
	u8         reserved_at_0[0x1d];
	u8         lag_state[0x3];

	u8         reserved_at_20[0x14];
	u8         tx_remap_affinity_2[0x4];
	u8         reserved_at_38[0x4];
	u8         tx_remap_affinity_1[0x4];
};

struct mlx5_ifc_create_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_create_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	struct mlx5_ifc_lagc_bits ctx;
};

struct mlx5_ifc_modify_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_modify_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x20];
	u8         field_select[0x20];

	struct mlx5_ifc_lagc_bits ctx;
};

struct mlx5_ifc_query_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];

	struct mlx5_ifc_lagc_bits ctx;
};

struct mlx5_ifc_query_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_destroy_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_destroy_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_create_vport_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_create_vport_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_destroy_vport_lag_out_bits {
	u8         status[0x8];
	u8         reserved_at_8[0x18];

	u8         syndrome[0x20];

	u8         reserved_at_40[0x40];
};

struct mlx5_ifc_destroy_vport_lag_in_bits {
	u8         opcode[0x10];
	u8         reserved_at_10[0x10];

	u8         reserved_at_20[0x10];
	u8         op_mod[0x10];

	u8         reserved_at_40[0x40];
};

8867
#endif /* MLX5_IFC_H */