# mypy: disable-error-code="empty-body"
from __future__ import annotations
import ctypes
from typing import Literal, TypeAlias
from tinygrad.runtime.support.c import _IO, _IOW, _IOR, _IOWR
from tinygrad.runtime.support import c
__u8: TypeAlias = ctypes.c_ubyte
@c.record
class struct_mlx5_cmd_layout(c.Struct):
  SIZE = 64
  type: int
  rsvd0: c.Array[ctypes.c_ubyte, Literal[3]]
  inlen: int
  in_ptr: int
  _in: c.Array[ctypes.c_uint32, Literal[4]]
  out: c.Array[ctypes.c_uint32, Literal[4]]
  out_ptr: int
  outlen: int
  token: int
  sig: int
  rsvd1: int
  status_own: int
struct_mlx5_cmd_layout.register_fields([('type', ctypes.c_ubyte, 0), ('rsvd0', c.Array[ctypes.c_ubyte, Literal[3]], 1), ('inlen', ctypes.c_uint32, 4), ('in_ptr', ctypes.c_uint64, 8), ('_in', c.Array[ctypes.c_uint32, Literal[4]], 16), ('out', c.Array[ctypes.c_uint32, Literal[4]], 32), ('out_ptr', ctypes.c_uint64, 48), ('outlen', ctypes.c_uint32, 56), ('token', ctypes.c_ubyte, 60), ('sig', ctypes.c_ubyte, 61), ('rsvd1', ctypes.c_ubyte, 62), ('status_own', ctypes.c_ubyte, 63)])
@c.record
class struct_mlx5_cmd_prot_block(c.Struct):
  SIZE = 576
  data: c.Array[ctypes.c_ubyte, Literal[512]]
  rsvd0: c.Array[ctypes.c_ubyte, Literal[48]]
  next: int
  block_num: int
  rsvd1: int
  token: int
  ctrl_sig: int
  sig: int
struct_mlx5_cmd_prot_block.register_fields([('data', c.Array[ctypes.c_ubyte, Literal[512]], 0), ('rsvd0', c.Array[ctypes.c_ubyte, Literal[48]], 512), ('next', ctypes.c_uint64, 560), ('block_num', ctypes.c_uint32, 568), ('rsvd1', ctypes.c_ubyte, 572), ('token', ctypes.c_ubyte, 573), ('ctrl_sig', ctypes.c_ubyte, 574), ('sig', ctypes.c_ubyte, 575)])
@c.record
class struct_mlx5_init_seg(c.Struct):
  SIZE = 512
  fw_rev: int
  cmdif_rev_fw_sub: int
  rsvd0: c.Array[ctypes.c_uint32, Literal[2]]
  cmdq_addr_h: int
  cmdq_addr_l_sz: int
  cmd_dbell: int
  rsvd1: c.Array[ctypes.c_uint32, Literal[120]]
  initializing: int
struct_mlx5_init_seg.register_fields([('fw_rev', ctypes.c_uint32, 0), ('cmdif_rev_fw_sub', ctypes.c_uint32, 4), ('rsvd0', c.Array[ctypes.c_uint32, Literal[2]], 8), ('cmdq_addr_h', ctypes.c_uint32, 16), ('cmdq_addr_l_sz', ctypes.c_uint32, 20), ('cmd_dbell', ctypes.c_uint32, 24), ('rsvd1', c.Array[ctypes.c_uint32, Literal[120]], 28), ('initializing', ctypes.c_uint32, 508)])
_anonenum0: dict[int, str] = {(MLX5_EVENT_TYPE_CODING_COMPLETION_EVENTS:=0): 'MLX5_EVENT_TYPE_CODING_COMPLETION_EVENTS', (MLX5_EVENT_TYPE_CODING_PATH_MIGRATED_SUCCEEDED:=1): 'MLX5_EVENT_TYPE_CODING_PATH_MIGRATED_SUCCEEDED', (MLX5_EVENT_TYPE_CODING_COMMUNICATION_ESTABLISHED:=2): 'MLX5_EVENT_TYPE_CODING_COMMUNICATION_ESTABLISHED', (MLX5_EVENT_TYPE_CODING_SEND_QUEUE_DRAINED:=3): 'MLX5_EVENT_TYPE_CODING_SEND_QUEUE_DRAINED', (MLX5_EVENT_TYPE_CODING_LAST_WQE_REACHED:=19): 'MLX5_EVENT_TYPE_CODING_LAST_WQE_REACHED', (MLX5_EVENT_TYPE_CODING_SRQ_LIMIT:=20): 'MLX5_EVENT_TYPE_CODING_SRQ_LIMIT', (MLX5_EVENT_TYPE_CODING_DCT_ALL_CONNECTIONS_CLOSED:=28): 'MLX5_EVENT_TYPE_CODING_DCT_ALL_CONNECTIONS_CLOSED', (MLX5_EVENT_TYPE_CODING_DCT_ACCESS_KEY_VIOLATION:=29): 'MLX5_EVENT_TYPE_CODING_DCT_ACCESS_KEY_VIOLATION', (MLX5_EVENT_TYPE_CODING_CQ_ERROR:=4): 'MLX5_EVENT_TYPE_CODING_CQ_ERROR', (MLX5_EVENT_TYPE_CODING_LOCAL_WQ_CATASTROPHIC_ERROR:=5): 'MLX5_EVENT_TYPE_CODING_LOCAL_WQ_CATASTROPHIC_ERROR', (MLX5_EVENT_TYPE_CODING_PATH_MIGRATION_FAILED:=7): 'MLX5_EVENT_TYPE_CODING_PATH_MIGRATION_FAILED', (MLX5_EVENT_TYPE_CODING_PAGE_FAULT_EVENT:=12): 'MLX5_EVENT_TYPE_CODING_PAGE_FAULT_EVENT', (MLX5_EVENT_TYPE_CODING_INVALID_REQUEST_LOCAL_WQ_ERROR:=16): 'MLX5_EVENT_TYPE_CODING_INVALID_REQUEST_LOCAL_WQ_ERROR', (MLX5_EVENT_TYPE_CODING_LOCAL_ACCESS_VIOLATION_WQ_ERROR:=17): 'MLX5_EVENT_TYPE_CODING_LOCAL_ACCESS_VIOLATION_WQ_ERROR', (MLX5_EVENT_TYPE_CODING_LOCAL_SRQ_CATASTROPHIC_ERROR:=18): 'MLX5_EVENT_TYPE_CODING_LOCAL_SRQ_CATASTROPHIC_ERROR', (MLX5_EVENT_TYPE_CODING_INTERNAL_ERROR:=8): 'MLX5_EVENT_TYPE_CODING_INTERNAL_ERROR', (MLX5_EVENT_TYPE_CODING_PORT_STATE_CHANGE:=9): 'MLX5_EVENT_TYPE_CODING_PORT_STATE_CHANGE', (MLX5_EVENT_TYPE_CODING_GPIO_EVENT:=21): 'MLX5_EVENT_TYPE_CODING_GPIO_EVENT', (MLX5_EVENT_TYPE_CODING_REMOTE_CONFIGURATION_PROTOCOL_EVENT:=25): 'MLX5_EVENT_TYPE_CODING_REMOTE_CONFIGURATION_PROTOCOL_EVENT', (MLX5_EVENT_TYPE_CODING_DOORBELL_BLUEFLAME_CONGESTION_EVENT:=26): 'MLX5_EVENT_TYPE_CODING_DOORBELL_BLUEFLAME_CONGESTION_EVENT', (MLX5_EVENT_TYPE_CODING_STALL_VL_EVENT:=27): 'MLX5_EVENT_TYPE_CODING_STALL_VL_EVENT', (MLX5_EVENT_TYPE_CODING_DROPPED_PACKET_LOGGED_EVENT:=31): 'MLX5_EVENT_TYPE_CODING_DROPPED_PACKET_LOGGED_EVENT', (MLX5_EVENT_TYPE_CODING_COMMAND_INTERFACE_COMPLETION:=10): 'MLX5_EVENT_TYPE_CODING_COMMAND_INTERFACE_COMPLETION', (MLX5_EVENT_TYPE_CODING_PAGE_REQUEST:=11): 'MLX5_EVENT_TYPE_CODING_PAGE_REQUEST', (MLX5_EVENT_TYPE_CODING_FPGA_ERROR:=32): 'MLX5_EVENT_TYPE_CODING_FPGA_ERROR', (MLX5_EVENT_TYPE_CODING_FPGA_QP_ERROR:=33): 'MLX5_EVENT_TYPE_CODING_FPGA_QP_ERROR'}
_anonenum1: dict[int, str] = {(MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE:=0): 'MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE', (MLX5_SET_HCA_CAP_OP_MOD_ETHERNET_OFFLOADS:=1): 'MLX5_SET_HCA_CAP_OP_MOD_ETHERNET_OFFLOADS', (MLX5_SET_HCA_CAP_OP_MOD_ODP:=2): 'MLX5_SET_HCA_CAP_OP_MOD_ODP', (MLX5_SET_HCA_CAP_OP_MOD_ATOMIC:=3): 'MLX5_SET_HCA_CAP_OP_MOD_ATOMIC', (MLX5_SET_HCA_CAP_OP_MOD_ROCE:=4): 'MLX5_SET_HCA_CAP_OP_MOD_ROCE', (MLX5_SET_HCA_CAP_OP_MOD_IPSEC:=21): 'MLX5_SET_HCA_CAP_OP_MOD_IPSEC', (MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE2:=32): 'MLX5_SET_HCA_CAP_OP_MOD_GENERAL_DEVICE2', (MLX5_SET_HCA_CAP_OP_MOD_PORT_SELECTION:=37): 'MLX5_SET_HCA_CAP_OP_MOD_PORT_SELECTION'}
_anonenum2: dict[int, str] = {(MLX5_SHARED_RESOURCE_UID:=65535): 'MLX5_SHARED_RESOURCE_UID'}
_anonenum3: dict[int, str] = {(MLX5_OBJ_TYPE_SW_ICM:=8): 'MLX5_OBJ_TYPE_SW_ICM', (MLX5_OBJ_TYPE_GENEVE_TLV_OPT:=11): 'MLX5_OBJ_TYPE_GENEVE_TLV_OPT', (MLX5_OBJ_TYPE_VIRTIO_NET_Q:=13): 'MLX5_OBJ_TYPE_VIRTIO_NET_Q', (MLX5_OBJ_TYPE_VIRTIO_Q_COUNTERS:=28): 'MLX5_OBJ_TYPE_VIRTIO_Q_COUNTERS', (MLX5_OBJ_TYPE_MATCH_DEFINER:=24): 'MLX5_OBJ_TYPE_MATCH_DEFINER', (MLX5_OBJ_TYPE_HEADER_MODIFY_ARGUMENT:=35): 'MLX5_OBJ_TYPE_HEADER_MODIFY_ARGUMENT', (MLX5_OBJ_TYPE_STC:=64): 'MLX5_OBJ_TYPE_STC', (MLX5_OBJ_TYPE_RTC:=65): 'MLX5_OBJ_TYPE_RTC', (MLX5_OBJ_TYPE_STE:=66): 'MLX5_OBJ_TYPE_STE', (MLX5_OBJ_TYPE_MODIFY_HDR_PATTERN:=67): 'MLX5_OBJ_TYPE_MODIFY_HDR_PATTERN', (MLX5_OBJ_TYPE_PAGE_TRACK:=70): 'MLX5_OBJ_TYPE_PAGE_TRACK', (MLX5_OBJ_TYPE_MKEY:=65281): 'MLX5_OBJ_TYPE_MKEY', (MLX5_OBJ_TYPE_QP:=65282): 'MLX5_OBJ_TYPE_QP', (MLX5_OBJ_TYPE_PSV:=65283): 'MLX5_OBJ_TYPE_PSV', (MLX5_OBJ_TYPE_RMP:=65284): 'MLX5_OBJ_TYPE_RMP', (MLX5_OBJ_TYPE_XRC_SRQ:=65285): 'MLX5_OBJ_TYPE_XRC_SRQ', (MLX5_OBJ_TYPE_RQ:=65286): 'MLX5_OBJ_TYPE_RQ', (MLX5_OBJ_TYPE_SQ:=65287): 'MLX5_OBJ_TYPE_SQ', (MLX5_OBJ_TYPE_TIR:=65288): 'MLX5_OBJ_TYPE_TIR', (MLX5_OBJ_TYPE_TIS:=65289): 'MLX5_OBJ_TYPE_TIS', (MLX5_OBJ_TYPE_DCT:=65290): 'MLX5_OBJ_TYPE_DCT', (MLX5_OBJ_TYPE_XRQ:=65291): 'MLX5_OBJ_TYPE_XRQ', (MLX5_OBJ_TYPE_RQT:=65294): 'MLX5_OBJ_TYPE_RQT', (MLX5_OBJ_TYPE_FLOW_COUNTER:=65295): 'MLX5_OBJ_TYPE_FLOW_COUNTER', (MLX5_OBJ_TYPE_CQ:=65296): 'MLX5_OBJ_TYPE_CQ', (MLX5_OBJ_TYPE_FT_ALIAS:=65301): 'MLX5_OBJ_TYPE_FT_ALIAS'}
_anonenum4: dict[int, str] = {(MLX5_GENERAL_OBJ_TYPES_CAP_SW_ICM:=256): 'MLX5_GENERAL_OBJ_TYPES_CAP_SW_ICM', (MLX5_GENERAL_OBJ_TYPES_CAP_GENEVE_TLV_OPT:=2048): 'MLX5_GENERAL_OBJ_TYPES_CAP_GENEVE_TLV_OPT', (MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q:=8192): 'MLX5_GENERAL_OBJ_TYPES_CAP_VIRTIO_NET_Q', (MLX5_GENERAL_OBJ_TYPES_CAP_HEADER_MODIFY_ARGUMENT:=34359738368): 'MLX5_GENERAL_OBJ_TYPES_CAP_HEADER_MODIFY_ARGUMENT', (MLX5_GENERAL_OBJ_TYPES_CAP_MACSEC_OFFLOAD:=549755813888): 'MLX5_GENERAL_OBJ_TYPES_CAP_MACSEC_OFFLOAD'}
_anonenum5: dict[int, str] = {(MLX5_CMD_OP_QUERY_HCA_CAP:=256): 'MLX5_CMD_OP_QUERY_HCA_CAP', (MLX5_CMD_OP_QUERY_ADAPTER:=257): 'MLX5_CMD_OP_QUERY_ADAPTER', (MLX5_CMD_OP_INIT_HCA:=258): 'MLX5_CMD_OP_INIT_HCA', (MLX5_CMD_OP_TEARDOWN_HCA:=259): 'MLX5_CMD_OP_TEARDOWN_HCA', (MLX5_CMD_OP_ENABLE_HCA:=260): 'MLX5_CMD_OP_ENABLE_HCA', (MLX5_CMD_OP_DISABLE_HCA:=261): 'MLX5_CMD_OP_DISABLE_HCA', (MLX5_CMD_OP_QUERY_PAGES:=263): 'MLX5_CMD_OP_QUERY_PAGES', (MLX5_CMD_OP_MANAGE_PAGES:=264): 'MLX5_CMD_OP_MANAGE_PAGES', (MLX5_CMD_OP_SET_HCA_CAP:=265): 'MLX5_CMD_OP_SET_HCA_CAP', (MLX5_CMD_OP_QUERY_ISSI:=266): 'MLX5_CMD_OP_QUERY_ISSI', (MLX5_CMD_OP_SET_ISSI:=267): 'MLX5_CMD_OP_SET_ISSI', (MLX5_CMD_OP_SET_DRIVER_VERSION:=269): 'MLX5_CMD_OP_SET_DRIVER_VERSION', (MLX5_CMD_OP_QUERY_SF_PARTITION:=273): 'MLX5_CMD_OP_QUERY_SF_PARTITION', (MLX5_CMD_OP_ALLOC_SF:=275): 'MLX5_CMD_OP_ALLOC_SF', (MLX5_CMD_OP_DEALLOC_SF:=276): 'MLX5_CMD_OP_DEALLOC_SF', (MLX5_CMD_OP_SUSPEND_VHCA:=277): 'MLX5_CMD_OP_SUSPEND_VHCA', (MLX5_CMD_OP_RESUME_VHCA:=278): 'MLX5_CMD_OP_RESUME_VHCA', (MLX5_CMD_OP_QUERY_VHCA_MIGRATION_STATE:=279): 'MLX5_CMD_OP_QUERY_VHCA_MIGRATION_STATE', (MLX5_CMD_OP_SAVE_VHCA_STATE:=280): 'MLX5_CMD_OP_SAVE_VHCA_STATE', (MLX5_CMD_OP_LOAD_VHCA_STATE:=281): 'MLX5_CMD_OP_LOAD_VHCA_STATE', (MLX5_CMD_OP_CREATE_MKEY:=512): 'MLX5_CMD_OP_CREATE_MKEY', (MLX5_CMD_OP_QUERY_MKEY:=513): 'MLX5_CMD_OP_QUERY_MKEY', (MLX5_CMD_OP_DESTROY_MKEY:=514): 'MLX5_CMD_OP_DESTROY_MKEY', (MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS:=515): 'MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS', (MLX5_CMD_OP_PAGE_FAULT_RESUME:=516): 'MLX5_CMD_OP_PAGE_FAULT_RESUME', (MLX5_CMD_OP_ALLOC_MEMIC:=517): 'MLX5_CMD_OP_ALLOC_MEMIC', (MLX5_CMD_OP_DEALLOC_MEMIC:=518): 'MLX5_CMD_OP_DEALLOC_MEMIC', (MLX5_CMD_OP_MODIFY_MEMIC:=519): 'MLX5_CMD_OP_MODIFY_MEMIC', (MLX5_CMD_OP_CREATE_EQ:=769): 'MLX5_CMD_OP_CREATE_EQ', (MLX5_CMD_OP_DESTROY_EQ:=770): 'MLX5_CMD_OP_DESTROY_EQ', (MLX5_CMD_OP_QUERY_EQ:=771): 'MLX5_CMD_OP_QUERY_EQ', (MLX5_CMD_OP_GEN_EQE:=772): 'MLX5_CMD_OP_GEN_EQE', (MLX5_CMD_OP_CREATE_CQ:=1024): 'MLX5_CMD_OP_CREATE_CQ', (MLX5_CMD_OP_DESTROY_CQ:=1025): 'MLX5_CMD_OP_DESTROY_CQ', (MLX5_CMD_OP_QUERY_CQ:=1026): 'MLX5_CMD_OP_QUERY_CQ', (MLX5_CMD_OP_MODIFY_CQ:=1027): 'MLX5_CMD_OP_MODIFY_CQ', (MLX5_CMD_OP_CREATE_QP:=1280): 'MLX5_CMD_OP_CREATE_QP', (MLX5_CMD_OP_DESTROY_QP:=1281): 'MLX5_CMD_OP_DESTROY_QP', (MLX5_CMD_OP_RST2INIT_QP:=1282): 'MLX5_CMD_OP_RST2INIT_QP', (MLX5_CMD_OP_INIT2RTR_QP:=1283): 'MLX5_CMD_OP_INIT2RTR_QP', (MLX5_CMD_OP_RTR2RTS_QP:=1284): 'MLX5_CMD_OP_RTR2RTS_QP', (MLX5_CMD_OP_RTS2RTS_QP:=1285): 'MLX5_CMD_OP_RTS2RTS_QP', (MLX5_CMD_OP_SQERR2RTS_QP:=1286): 'MLX5_CMD_OP_SQERR2RTS_QP', (MLX5_CMD_OP_2ERR_QP:=1287): 'MLX5_CMD_OP_2ERR_QP', (MLX5_CMD_OP_2RST_QP:=1290): 'MLX5_CMD_OP_2RST_QP', (MLX5_CMD_OP_QUERY_QP:=1291): 'MLX5_CMD_OP_QUERY_QP', (MLX5_CMD_OP_SQD_RTS_QP:=1292): 'MLX5_CMD_OP_SQD_RTS_QP', (MLX5_CMD_OP_INIT2INIT_QP:=1294): 'MLX5_CMD_OP_INIT2INIT_QP', (MLX5_CMD_OP_CREATE_PSV:=1536): 'MLX5_CMD_OP_CREATE_PSV', (MLX5_CMD_OP_DESTROY_PSV:=1537): 'MLX5_CMD_OP_DESTROY_PSV', (MLX5_CMD_OP_CREATE_SRQ:=1792): 'MLX5_CMD_OP_CREATE_SRQ', (MLX5_CMD_OP_DESTROY_SRQ:=1793): 'MLX5_CMD_OP_DESTROY_SRQ', (MLX5_CMD_OP_QUERY_SRQ:=1794): 'MLX5_CMD_OP_QUERY_SRQ', (MLX5_CMD_OP_ARM_RQ:=1795): 'MLX5_CMD_OP_ARM_RQ', (MLX5_CMD_OP_CREATE_XRC_SRQ:=1797): 'MLX5_CMD_OP_CREATE_XRC_SRQ', (MLX5_CMD_OP_DESTROY_XRC_SRQ:=1798): 'MLX5_CMD_OP_DESTROY_XRC_SRQ', (MLX5_CMD_OP_QUERY_XRC_SRQ:=1799): 'MLX5_CMD_OP_QUERY_XRC_SRQ', (MLX5_CMD_OP_ARM_XRC_SRQ:=1800): 'MLX5_CMD_OP_ARM_XRC_SRQ', (MLX5_CMD_OP_CREATE_DCT:=1808): 'MLX5_CMD_OP_CREATE_DCT', (MLX5_CMD_OP_DESTROY_DCT:=1809): 'MLX5_CMD_OP_DESTROY_DCT', (MLX5_CMD_OP_DRAIN_DCT:=1810): 'MLX5_CMD_OP_DRAIN_DCT', (MLX5_CMD_OP_QUERY_DCT:=1811): 'MLX5_CMD_OP_QUERY_DCT', (MLX5_CMD_OP_ARM_DCT_FOR_KEY_VIOLATION:=1812): 'MLX5_CMD_OP_ARM_DCT_FOR_KEY_VIOLATION', (MLX5_CMD_OP_CREATE_XRQ:=1815): 'MLX5_CMD_OP_CREATE_XRQ', (MLX5_CMD_OP_DESTROY_XRQ:=1816): 'MLX5_CMD_OP_DESTROY_XRQ', (MLX5_CMD_OP_QUERY_XRQ:=1817): 'MLX5_CMD_OP_QUERY_XRQ', (MLX5_CMD_OP_ARM_XRQ:=1818): 'MLX5_CMD_OP_ARM_XRQ', (MLX5_CMD_OP_QUERY_XRQ_DC_PARAMS_ENTRY:=1829): 'MLX5_CMD_OP_QUERY_XRQ_DC_PARAMS_ENTRY', (MLX5_CMD_OP_SET_XRQ_DC_PARAMS_ENTRY:=1830): 'MLX5_CMD_OP_SET_XRQ_DC_PARAMS_ENTRY', (MLX5_CMD_OP_QUERY_XRQ_ERROR_PARAMS:=1831): 'MLX5_CMD_OP_QUERY_XRQ_ERROR_PARAMS', (MLX5_CMD_OP_RELEASE_XRQ_ERROR:=1833): 'MLX5_CMD_OP_RELEASE_XRQ_ERROR', (MLX5_CMD_OP_MODIFY_XRQ:=1834): 'MLX5_CMD_OP_MODIFY_XRQ', (MLX5_CMD_OPCODE_QUERY_DELEGATED_VHCA:=1842): 'MLX5_CMD_OPCODE_QUERY_DELEGATED_VHCA', (MLX5_CMD_OPCODE_CREATE_ESW_VPORT:=1843): 'MLX5_CMD_OPCODE_CREATE_ESW_VPORT', (MLX5_CMD_OPCODE_DESTROY_ESW_VPORT:=1844): 'MLX5_CMD_OPCODE_DESTROY_ESW_VPORT', (MLX5_CMD_OP_QUERY_ESW_FUNCTIONS:=1856): 'MLX5_CMD_OP_QUERY_ESW_FUNCTIONS', (MLX5_CMD_OP_QUERY_VPORT_STATE:=1872): 'MLX5_CMD_OP_QUERY_VPORT_STATE', (MLX5_CMD_OP_MODIFY_VPORT_STATE:=1873): 'MLX5_CMD_OP_MODIFY_VPORT_STATE', (MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT:=1874): 'MLX5_CMD_OP_QUERY_ESW_VPORT_CONTEXT', (MLX5_CMD_OP_MODIFY_ESW_VPORT_CONTEXT:=1875): 'MLX5_CMD_OP_MODIFY_ESW_VPORT_CONTEXT', (MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT:=1876): 'MLX5_CMD_OP_QUERY_NIC_VPORT_CONTEXT', (MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT:=1877): 'MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT', (MLX5_CMD_OP_QUERY_ROCE_ADDRESS:=1888): 'MLX5_CMD_OP_QUERY_ROCE_ADDRESS', (MLX5_CMD_OP_SET_ROCE_ADDRESS:=1889): 'MLX5_CMD_OP_SET_ROCE_ADDRESS', (MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT:=1890): 'MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT', (MLX5_CMD_OP_MODIFY_HCA_VPORT_CONTEXT:=1891): 'MLX5_CMD_OP_MODIFY_HCA_VPORT_CONTEXT', (MLX5_CMD_OP_QUERY_HCA_VPORT_GID:=1892): 'MLX5_CMD_OP_QUERY_HCA_VPORT_GID', (MLX5_CMD_OP_QUERY_HCA_VPORT_PKEY:=1893): 'MLX5_CMD_OP_QUERY_HCA_VPORT_PKEY', (MLX5_CMD_OP_QUERY_VNIC_ENV:=1903): 'MLX5_CMD_OP_QUERY_VNIC_ENV', (MLX5_CMD_OP_QUERY_VPORT_COUNTER:=1904): 'MLX5_CMD_OP_QUERY_VPORT_COUNTER', (MLX5_CMD_OP_ALLOC_Q_COUNTER:=1905): 'MLX5_CMD_OP_ALLOC_Q_COUNTER', (MLX5_CMD_OP_DEALLOC_Q_COUNTER:=1906): 'MLX5_CMD_OP_DEALLOC_Q_COUNTER', (MLX5_CMD_OP_QUERY_Q_COUNTER:=1907): 'MLX5_CMD_OP_QUERY_Q_COUNTER', (MLX5_CMD_OP_SET_MONITOR_COUNTER:=1908): 'MLX5_CMD_OP_SET_MONITOR_COUNTER', (MLX5_CMD_OP_ARM_MONITOR_COUNTER:=1909): 'MLX5_CMD_OP_ARM_MONITOR_COUNTER', (MLX5_CMD_OP_SET_PP_RATE_LIMIT:=1920): 'MLX5_CMD_OP_SET_PP_RATE_LIMIT', (MLX5_CMD_OP_QUERY_RATE_LIMIT:=1921): 'MLX5_CMD_OP_QUERY_RATE_LIMIT', (MLX5_CMD_OP_CREATE_SCHEDULING_ELEMENT:=1922): 'MLX5_CMD_OP_CREATE_SCHEDULING_ELEMENT', (MLX5_CMD_OP_DESTROY_SCHEDULING_ELEMENT:=1923): 'MLX5_CMD_OP_DESTROY_SCHEDULING_ELEMENT', (MLX5_CMD_OP_QUERY_SCHEDULING_ELEMENT:=1924): 'MLX5_CMD_OP_QUERY_SCHEDULING_ELEMENT', (MLX5_CMD_OP_MODIFY_SCHEDULING_ELEMENT:=1925): 'MLX5_CMD_OP_MODIFY_SCHEDULING_ELEMENT', (MLX5_CMD_OP_CREATE_QOS_PARA_VPORT:=1926): 'MLX5_CMD_OP_CREATE_QOS_PARA_VPORT', (MLX5_CMD_OP_DESTROY_QOS_PARA_VPORT:=1927): 'MLX5_CMD_OP_DESTROY_QOS_PARA_VPORT', (MLX5_CMD_OP_ALLOC_PD:=2048): 'MLX5_CMD_OP_ALLOC_PD', (MLX5_CMD_OP_DEALLOC_PD:=2049): 'MLX5_CMD_OP_DEALLOC_PD', (MLX5_CMD_OP_ALLOC_UAR:=2050): 'MLX5_CMD_OP_ALLOC_UAR', (MLX5_CMD_OP_DEALLOC_UAR:=2051): 'MLX5_CMD_OP_DEALLOC_UAR', (MLX5_CMD_OP_CONFIG_INT_MODERATION:=2052): 'MLX5_CMD_OP_CONFIG_INT_MODERATION', (MLX5_CMD_OP_ACCESS_REG:=2053): 'MLX5_CMD_OP_ACCESS_REG', (MLX5_CMD_OP_ATTACH_TO_MCG:=2054): 'MLX5_CMD_OP_ATTACH_TO_MCG', (MLX5_CMD_OP_DETACH_FROM_MCG:=2055): 'MLX5_CMD_OP_DETACH_FROM_MCG', (MLX5_CMD_OP_GET_DROPPED_PACKET_LOG:=2058): 'MLX5_CMD_OP_GET_DROPPED_PACKET_LOG', (MLX5_CMD_OP_MAD_IFC:=1293): 'MLX5_CMD_OP_MAD_IFC', (MLX5_CMD_OP_QUERY_MAD_DEMUX:=2059): 'MLX5_CMD_OP_QUERY_MAD_DEMUX', (MLX5_CMD_OP_SET_MAD_DEMUX:=2060): 'MLX5_CMD_OP_SET_MAD_DEMUX', (MLX5_CMD_OP_NOP:=2061): 'MLX5_CMD_OP_NOP', (MLX5_CMD_OP_ALLOC_XRCD:=2062): 'MLX5_CMD_OP_ALLOC_XRCD', (MLX5_CMD_OP_DEALLOC_XRCD:=2063): 'MLX5_CMD_OP_DEALLOC_XRCD', (MLX5_CMD_OP_ALLOC_TRANSPORT_DOMAIN:=2070): 'MLX5_CMD_OP_ALLOC_TRANSPORT_DOMAIN', (MLX5_CMD_OP_DEALLOC_TRANSPORT_DOMAIN:=2071): 'MLX5_CMD_OP_DEALLOC_TRANSPORT_DOMAIN', (MLX5_CMD_OP_QUERY_CONG_STATUS:=2082): 'MLX5_CMD_OP_QUERY_CONG_STATUS', (MLX5_CMD_OP_MODIFY_CONG_STATUS:=2083): 'MLX5_CMD_OP_MODIFY_CONG_STATUS', (MLX5_CMD_OP_QUERY_CONG_PARAMS:=2084): 'MLX5_CMD_OP_QUERY_CONG_PARAMS', (MLX5_CMD_OP_MODIFY_CONG_PARAMS:=2085): 'MLX5_CMD_OP_MODIFY_CONG_PARAMS', (MLX5_CMD_OP_QUERY_CONG_STATISTICS:=2086): 'MLX5_CMD_OP_QUERY_CONG_STATISTICS', (MLX5_CMD_OP_ADD_VXLAN_UDP_DPORT:=2087): 'MLX5_CMD_OP_ADD_VXLAN_UDP_DPORT', (MLX5_CMD_OP_DELETE_VXLAN_UDP_DPORT:=2088): 'MLX5_CMD_OP_DELETE_VXLAN_UDP_DPORT', (MLX5_CMD_OP_SET_L2_TABLE_ENTRY:=2089): 'MLX5_CMD_OP_SET_L2_TABLE_ENTRY', (MLX5_CMD_OP_QUERY_L2_TABLE_ENTRY:=2090): 'MLX5_CMD_OP_QUERY_L2_TABLE_ENTRY', (MLX5_CMD_OP_DELETE_L2_TABLE_ENTRY:=2091): 'MLX5_CMD_OP_DELETE_L2_TABLE_ENTRY', (MLX5_CMD_OP_SET_WOL_ROL:=2096): 'MLX5_CMD_OP_SET_WOL_ROL', (MLX5_CMD_OP_QUERY_WOL_ROL:=2097): 'MLX5_CMD_OP_QUERY_WOL_ROL', (MLX5_CMD_OP_CREATE_LAG:=2112): 'MLX5_CMD_OP_CREATE_LAG', (MLX5_CMD_OP_MODIFY_LAG:=2113): 'MLX5_CMD_OP_MODIFY_LAG', (MLX5_CMD_OP_QUERY_LAG:=2114): 'MLX5_CMD_OP_QUERY_LAG', (MLX5_CMD_OP_DESTROY_LAG:=2115): 'MLX5_CMD_OP_DESTROY_LAG', (MLX5_CMD_OP_CREATE_VPORT_LAG:=2116): 'MLX5_CMD_OP_CREATE_VPORT_LAG', (MLX5_CMD_OP_DESTROY_VPORT_LAG:=2117): 'MLX5_CMD_OP_DESTROY_VPORT_LAG', (MLX5_CMD_OP_CREATE_TIR:=2304): 'MLX5_CMD_OP_CREATE_TIR', (MLX5_CMD_OP_MODIFY_TIR:=2305): 'MLX5_CMD_OP_MODIFY_TIR', (MLX5_CMD_OP_DESTROY_TIR:=2306): 'MLX5_CMD_OP_DESTROY_TIR', (MLX5_CMD_OP_QUERY_TIR:=2307): 'MLX5_CMD_OP_QUERY_TIR', (MLX5_CMD_OP_CREATE_SQ:=2308): 'MLX5_CMD_OP_CREATE_SQ', (MLX5_CMD_OP_MODIFY_SQ:=2309): 'MLX5_CMD_OP_MODIFY_SQ', (MLX5_CMD_OP_DESTROY_SQ:=2310): 'MLX5_CMD_OP_DESTROY_SQ', (MLX5_CMD_OP_QUERY_SQ:=2311): 'MLX5_CMD_OP_QUERY_SQ', (MLX5_CMD_OP_CREATE_RQ:=2312): 'MLX5_CMD_OP_CREATE_RQ', (MLX5_CMD_OP_MODIFY_RQ:=2313): 'MLX5_CMD_OP_MODIFY_RQ', (MLX5_CMD_OP_SET_DELAY_DROP_PARAMS:=2320): 'MLX5_CMD_OP_SET_DELAY_DROP_PARAMS', (MLX5_CMD_OP_DESTROY_RQ:=2314): 'MLX5_CMD_OP_DESTROY_RQ', (MLX5_CMD_OP_QUERY_RQ:=2315): 'MLX5_CMD_OP_QUERY_RQ', (MLX5_CMD_OP_CREATE_RMP:=2316): 'MLX5_CMD_OP_CREATE_RMP', (MLX5_CMD_OP_MODIFY_RMP:=2317): 'MLX5_CMD_OP_MODIFY_RMP', (MLX5_CMD_OP_DESTROY_RMP:=2318): 'MLX5_CMD_OP_DESTROY_RMP', (MLX5_CMD_OP_QUERY_RMP:=2319): 'MLX5_CMD_OP_QUERY_RMP', (MLX5_CMD_OP_CREATE_TIS:=2322): 'MLX5_CMD_OP_CREATE_TIS', (MLX5_CMD_OP_MODIFY_TIS:=2323): 'MLX5_CMD_OP_MODIFY_TIS', (MLX5_CMD_OP_DESTROY_TIS:=2324): 'MLX5_CMD_OP_DESTROY_TIS', (MLX5_CMD_OP_QUERY_TIS:=2325): 'MLX5_CMD_OP_QUERY_TIS', (MLX5_CMD_OP_CREATE_RQT:=2326): 'MLX5_CMD_OP_CREATE_RQT', (MLX5_CMD_OP_MODIFY_RQT:=2327): 'MLX5_CMD_OP_MODIFY_RQT', (MLX5_CMD_OP_DESTROY_RQT:=2328): 'MLX5_CMD_OP_DESTROY_RQT', (MLX5_CMD_OP_QUERY_RQT:=2329): 'MLX5_CMD_OP_QUERY_RQT', (MLX5_CMD_OP_SET_FLOW_TABLE_ROOT:=2351): 'MLX5_CMD_OP_SET_FLOW_TABLE_ROOT', (MLX5_CMD_OP_CREATE_FLOW_TABLE:=2352): 'MLX5_CMD_OP_CREATE_FLOW_TABLE', (MLX5_CMD_OP_DESTROY_FLOW_TABLE:=2353): 'MLX5_CMD_OP_DESTROY_FLOW_TABLE', (MLX5_CMD_OP_QUERY_FLOW_TABLE:=2354): 'MLX5_CMD_OP_QUERY_FLOW_TABLE', (MLX5_CMD_OP_CREATE_FLOW_GROUP:=2355): 'MLX5_CMD_OP_CREATE_FLOW_GROUP', (MLX5_CMD_OP_DESTROY_FLOW_GROUP:=2356): 'MLX5_CMD_OP_DESTROY_FLOW_GROUP', (MLX5_CMD_OP_QUERY_FLOW_GROUP:=2357): 'MLX5_CMD_OP_QUERY_FLOW_GROUP', (MLX5_CMD_OP_SET_FLOW_TABLE_ENTRY:=2358): 'MLX5_CMD_OP_SET_FLOW_TABLE_ENTRY', (MLX5_CMD_OP_QUERY_FLOW_TABLE_ENTRY:=2359): 'MLX5_CMD_OP_QUERY_FLOW_TABLE_ENTRY', (MLX5_CMD_OP_DELETE_FLOW_TABLE_ENTRY:=2360): 'MLX5_CMD_OP_DELETE_FLOW_TABLE_ENTRY', (MLX5_CMD_OP_ALLOC_FLOW_COUNTER:=2361): 'MLX5_CMD_OP_ALLOC_FLOW_COUNTER', (MLX5_CMD_OP_DEALLOC_FLOW_COUNTER:=2362): 'MLX5_CMD_OP_DEALLOC_FLOW_COUNTER', (MLX5_CMD_OP_QUERY_FLOW_COUNTER:=2363): 'MLX5_CMD_OP_QUERY_FLOW_COUNTER', (MLX5_CMD_OP_MODIFY_FLOW_TABLE:=2364): 'MLX5_CMD_OP_MODIFY_FLOW_TABLE', (MLX5_CMD_OP_ALLOC_PACKET_REFORMAT_CONTEXT:=2365): 'MLX5_CMD_OP_ALLOC_PACKET_REFORMAT_CONTEXT', (MLX5_CMD_OP_DEALLOC_PACKET_REFORMAT_CONTEXT:=2366): 'MLX5_CMD_OP_DEALLOC_PACKET_REFORMAT_CONTEXT', (MLX5_CMD_OP_QUERY_PACKET_REFORMAT_CONTEXT:=2367): 'MLX5_CMD_OP_QUERY_PACKET_REFORMAT_CONTEXT', (MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT:=2368): 'MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT', (MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT:=2369): 'MLX5_CMD_OP_DEALLOC_MODIFY_HEADER_CONTEXT', (MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT:=2370): 'MLX5_CMD_OP_QUERY_MODIFY_HEADER_CONTEXT', (MLX5_CMD_OP_FPGA_CREATE_QP:=2400): 'MLX5_CMD_OP_FPGA_CREATE_QP', (MLX5_CMD_OP_FPGA_MODIFY_QP:=2401): 'MLX5_CMD_OP_FPGA_MODIFY_QP', (MLX5_CMD_OP_FPGA_QUERY_QP:=2402): 'MLX5_CMD_OP_FPGA_QUERY_QP', (MLX5_CMD_OP_FPGA_DESTROY_QP:=2403): 'MLX5_CMD_OP_FPGA_DESTROY_QP', (MLX5_CMD_OP_FPGA_QUERY_QP_COUNTERS:=2404): 'MLX5_CMD_OP_FPGA_QUERY_QP_COUNTERS', (MLX5_CMD_OP_CREATE_GENERAL_OBJECT:=2560): 'MLX5_CMD_OP_CREATE_GENERAL_OBJECT', (MLX5_CMD_OP_MODIFY_GENERAL_OBJECT:=2561): 'MLX5_CMD_OP_MODIFY_GENERAL_OBJECT', (MLX5_CMD_OP_QUERY_GENERAL_OBJECT:=2562): 'MLX5_CMD_OP_QUERY_GENERAL_OBJECT', (MLX5_CMD_OP_DESTROY_GENERAL_OBJECT:=2563): 'MLX5_CMD_OP_DESTROY_GENERAL_OBJECT', (MLX5_CMD_OP_CREATE_UCTX:=2564): 'MLX5_CMD_OP_CREATE_UCTX', (MLX5_CMD_OP_DESTROY_UCTX:=2566): 'MLX5_CMD_OP_DESTROY_UCTX', (MLX5_CMD_OP_CREATE_UMEM:=2568): 'MLX5_CMD_OP_CREATE_UMEM', (MLX5_CMD_OP_DESTROY_UMEM:=2570): 'MLX5_CMD_OP_DESTROY_UMEM', (MLX5_CMD_OP_SYNC_STEERING:=2816): 'MLX5_CMD_OP_SYNC_STEERING', (MLX5_CMD_OP_PSP_GEN_SPI:=2832): 'MLX5_CMD_OP_PSP_GEN_SPI', (MLX5_CMD_OP_PSP_ROTATE_KEY:=2833): 'MLX5_CMD_OP_PSP_ROTATE_KEY', (MLX5_CMD_OP_QUERY_VHCA_STATE:=2829): 'MLX5_CMD_OP_QUERY_VHCA_STATE', (MLX5_CMD_OP_MODIFY_VHCA_STATE:=2830): 'MLX5_CMD_OP_MODIFY_VHCA_STATE', (MLX5_CMD_OP_SYNC_CRYPTO:=2834): 'MLX5_CMD_OP_SYNC_CRYPTO', (MLX5_CMD_OP_ALLOW_OTHER_VHCA_ACCESS:=2838): 'MLX5_CMD_OP_ALLOW_OTHER_VHCA_ACCESS', (MLX5_CMD_OP_GENERATE_WQE:=2839): 'MLX5_CMD_OP_GENERATE_WQE', (MLX5_CMD_OPCODE_QUERY_VUID:=2850): 'MLX5_CMD_OPCODE_QUERY_VUID', (MLX5_CMD_OP_MAX:=2851): 'MLX5_CMD_OP_MAX'}
_anonenum6: dict[int, str] = {(MLX5_CMD_OP_GENERAL_START:=2816): 'MLX5_CMD_OP_GENERAL_START', (MLX5_CMD_OP_GENERAL_END:=3328): 'MLX5_CMD_OP_GENERAL_END'}
_anonenum7: dict[int, str] = {(MLX5_FT_NIC_RX_2_NIC_RX_RDMA:=0): 'MLX5_FT_NIC_RX_2_NIC_RX_RDMA', (MLX5_FT_NIC_TX_RDMA_2_NIC_TX:=1): 'MLX5_FT_NIC_TX_RDMA_2_NIC_TX'}
_anonenum8: dict[int, str] = {(MLX5_CMD_OP_MOD_UPDATE_HEADER_MODIFY_ARGUMENT:=1): 'MLX5_CMD_OP_MOD_UPDATE_HEADER_MODIFY_ARGUMENT'}
@c.record
class struct_mlx5_ifc_flow_table_fields_supported_bits(c.Struct):
  SIZE = 128
  outer_dmac: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_smac: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ether_type: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_version: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_first_prio: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_first_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_first_vid: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ipv4_ttl: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_prio: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_vid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_b: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_sip: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_dip: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_frag: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_protocol: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_ecn: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_dscp: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_udp_sport: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_udp_dport: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_sport: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_dport: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_flags: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_gre_protocol: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_gre_key: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_vxlan_vni: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_geneve_vni: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_geneve_oam: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_geneve_protocol_type: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_geneve_opt_len: c.Array[ctypes.c_ubyte, Literal[1]]
  source_vhca_port: c.Array[ctypes.c_ubyte, Literal[1]]
  source_eswitch_port: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_dmac: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_smac: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ether_type: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ip_version: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_first_prio: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_first_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_first_vid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_27: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_prio: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_vid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2b: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_sip: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_dip: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_frag: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ip_protocol: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ip_ecn: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ip_dscp: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_udp_sport: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_udp_dport: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_tcp_sport: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_tcp_dport: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_tcp_flags: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_37: c.Array[ctypes.c_ubyte, Literal[9]]
  geneve_tlv_option_0_data: c.Array[ctypes.c_ubyte, Literal[1]]
  geneve_tlv_option_0_exist: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[3]]
  outer_first_mpls_over_udp: c.Array[ctypes.c_ubyte, Literal[4]]
  outer_first_mpls_over_gre: c.Array[ctypes.c_ubyte, Literal[4]]
  inner_first_mpls: c.Array[ctypes.c_ubyte, Literal[4]]
  outer_first_mpls: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_55: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_esp_spi: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[2]]
  bth_dst_qp: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5b: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[24]]
  metadata_reg_c_7: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_6: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_5: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_4: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_3: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_2: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_1: c.Array[ctypes.c_ubyte, Literal[1]]
  metadata_reg_c_0: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_flow_table_fields_supported_bits.register_fields([('outer_dmac', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('outer_smac', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('outer_ether_type', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('outer_ip_version', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('outer_first_prio', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('outer_first_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('outer_first_vid', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('outer_ipv4_ttl', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('outer_second_prio', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('outer_second_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('outer_second_vid', c.Array[ctypes.c_ubyte, Literal[1]], 10), ('reserved_at_b', c.Array[ctypes.c_ubyte, Literal[1]], 11), ('outer_sip', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('outer_dip', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('outer_frag', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('outer_ip_protocol', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('outer_ip_ecn', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('outer_ip_dscp', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('outer_udp_sport', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('outer_udp_dport', c.Array[ctypes.c_ubyte, Literal[1]], 19), ('outer_tcp_sport', c.Array[ctypes.c_ubyte, Literal[1]], 20), ('outer_tcp_dport', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('outer_tcp_flags', c.Array[ctypes.c_ubyte, Literal[1]], 22), ('outer_gre_protocol', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('outer_gre_key', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('outer_vxlan_vni', c.Array[ctypes.c_ubyte, Literal[1]], 25), ('outer_geneve_vni', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('outer_geneve_oam', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('outer_geneve_protocol_type', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('outer_geneve_opt_len', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('source_vhca_port', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('source_eswitch_port', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('inner_dmac', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('inner_smac', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('inner_ether_type', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('inner_ip_version', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('inner_first_prio', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('inner_first_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 37), ('inner_first_vid', c.Array[ctypes.c_ubyte, Literal[1]], 38), ('reserved_at_27', c.Array[ctypes.c_ubyte, Literal[1]], 39), ('inner_second_prio', c.Array[ctypes.c_ubyte, Literal[1]], 40), ('inner_second_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 41), ('inner_second_vid', c.Array[ctypes.c_ubyte, Literal[1]], 42), ('reserved_at_2b', c.Array[ctypes.c_ubyte, Literal[1]], 43), ('inner_sip', c.Array[ctypes.c_ubyte, Literal[1]], 44), ('inner_dip', c.Array[ctypes.c_ubyte, Literal[1]], 45), ('inner_frag', c.Array[ctypes.c_ubyte, Literal[1]], 46), ('inner_ip_protocol', c.Array[ctypes.c_ubyte, Literal[1]], 47), ('inner_ip_ecn', c.Array[ctypes.c_ubyte, Literal[1]], 48), ('inner_ip_dscp', c.Array[ctypes.c_ubyte, Literal[1]], 49), ('inner_udp_sport', c.Array[ctypes.c_ubyte, Literal[1]], 50), ('inner_udp_dport', c.Array[ctypes.c_ubyte, Literal[1]], 51), ('inner_tcp_sport', c.Array[ctypes.c_ubyte, Literal[1]], 52), ('inner_tcp_dport', c.Array[ctypes.c_ubyte, Literal[1]], 53), ('inner_tcp_flags', c.Array[ctypes.c_ubyte, Literal[1]], 54), ('reserved_at_37', c.Array[ctypes.c_ubyte, Literal[9]], 55), ('geneve_tlv_option_0_data', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('geneve_tlv_option_0_exist', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[3]], 66), ('outer_first_mpls_over_udp', c.Array[ctypes.c_ubyte, Literal[4]], 69), ('outer_first_mpls_over_gre', c.Array[ctypes.c_ubyte, Literal[4]], 73), ('inner_first_mpls', c.Array[ctypes.c_ubyte, Literal[4]], 77), ('outer_first_mpls', c.Array[ctypes.c_ubyte, Literal[4]], 81), ('reserved_at_55', c.Array[ctypes.c_ubyte, Literal[2]], 85), ('outer_esp_spi', c.Array[ctypes.c_ubyte, Literal[1]], 87), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[2]], 88), ('bth_dst_qp', c.Array[ctypes.c_ubyte, Literal[1]], 90), ('reserved_at_5b', c.Array[ctypes.c_ubyte, Literal[5]], 91), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[24]], 96), ('metadata_reg_c_7', c.Array[ctypes.c_ubyte, Literal[1]], 120), ('metadata_reg_c_6', c.Array[ctypes.c_ubyte, Literal[1]], 121), ('metadata_reg_c_5', c.Array[ctypes.c_ubyte, Literal[1]], 122), ('metadata_reg_c_4', c.Array[ctypes.c_ubyte, Literal[1]], 123), ('metadata_reg_c_3', c.Array[ctypes.c_ubyte, Literal[1]], 124), ('metadata_reg_c_2', c.Array[ctypes.c_ubyte, Literal[1]], 125), ('metadata_reg_c_1', c.Array[ctypes.c_ubyte, Literal[1]], 126), ('metadata_reg_c_0', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_flow_table_fields_supported_2_bits(c.Struct):
  SIZE = 128
  inner_l4_type_ext: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l4_type_ext: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_l4_type: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l4_type: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[10]]
  bth_opcode: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_header_0_1: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[15]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[15]]
  ipsec_next_header: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_flow_table_fields_supported_2_bits.register_fields([('inner_l4_type_ext', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('outer_l4_type_ext', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('inner_l4_type', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('outer_l4_type', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[10]], 4), ('bth_opcode', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('reserved_at_f', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('tunnel_header_0_1', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[15]], 17), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[15]], 32), ('ipsec_next_header', c.Array[ctypes.c_ubyte, Literal[1]], 47), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_flow_table_prop_layout_bits(c.Struct):
  SIZE = 512
  ft_support: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[1]]
  flow_counter: c.Array[ctypes.c_ubyte, Literal[1]]
  flow_modify_en: c.Array[ctypes.c_ubyte, Literal[1]]
  modify_root: c.Array[ctypes.c_ubyte, Literal[1]]
  identified_miss_table_mode: c.Array[ctypes.c_ubyte, Literal[1]]
  flow_table_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat: c.Array[ctypes.c_ubyte, Literal[1]]
  decap: c.Array[ctypes.c_ubyte, Literal[1]]
  reset_root_to_default: c.Array[ctypes.c_ubyte, Literal[1]]
  pop_vlan: c.Array[ctypes.c_ubyte, Literal[1]]
  push_vlan: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c: c.Array[ctypes.c_ubyte, Literal[1]]
  pop_vlan_2: c.Array[ctypes.c_ubyte, Literal[1]]
  push_vlan_2: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_and_vlan_action: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[1]]
  sw_owner: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l3_tunnel_to_l2: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l2_to_l3_tunnel: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_and_modify_action: c.Array[ctypes.c_ubyte, Literal[1]]
  ignore_flow_level: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_16: c.Array[ctypes.c_ubyte, Literal[1]]
  table_miss_action_domain: c.Array[ctypes.c_ubyte, Literal[1]]
  termination_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_and_fwd_to_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1a: c.Array[ctypes.c_ubyte, Literal[2]]
  ipsec_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  sw_owner_v2: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1f: c.Array[ctypes.c_ubyte, Literal[1]]
  termination_table_raw_traffic: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_ft_size: c.Array[ctypes.c_ubyte, Literal[6]]
  log_max_modify_header_context: c.Array[ctypes.c_ubyte, Literal[8]]
  max_modify_header_actions: c.Array[ctypes.c_ubyte, Literal[8]]
  max_ft_level: c.Array[ctypes.c_ubyte, Literal[8]]
  reformat_add_esp_trasport: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l2_to_l3_esp_tunnel: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_add_esp_transport_over_udp: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_del_esp_trasport: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l3_esp_tunnel_to_l2: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_del_esp_transport_over_udp: c.Array[ctypes.c_ubyte, Literal[1]]
  execute_aso: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_47: c.Array[ctypes.c_ubyte, Literal[25]]
  reformat_l2_to_l3_psp_tunnel: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l3_psp_tunnel_to_l2: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_remove: c.Array[ctypes.c_ubyte, Literal[1]]
  macsec_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  macsec_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_add_macsec: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_remove_macsec: c.Array[ctypes.c_ubyte, Literal[1]]
  reparse: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6b: c.Array[ctypes.c_ubyte, Literal[1]]
  cross_vhca_object: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l2_to_l3_audp_tunnel: c.Array[ctypes.c_ubyte, Literal[1]]
  reformat_l3_audp_tunnel_to_l2: c.Array[ctypes.c_ubyte, Literal[1]]
  ignore_flow_level_rtc_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_ft_num: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  log_max_flow_counter: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_destination: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[24]]
  log_max_flow: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ft_field_support: struct_mlx5_ifc_flow_table_fields_supported_bits
  ft_field_bitmask_support: struct_mlx5_ifc_flow_table_fields_supported_bits
struct_mlx5_ifc_flow_table_prop_layout_bits.register_fields([('ft_support', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('flow_counter', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('flow_modify_en', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('modify_root', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('identified_miss_table_mode', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('flow_table_modify', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reformat', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('decap', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('reset_root_to_default', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('pop_vlan', c.Array[ctypes.c_ubyte, Literal[1]], 10), ('push_vlan', c.Array[ctypes.c_ubyte, Literal[1]], 11), ('reserved_at_c', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('pop_vlan_2', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('push_vlan_2', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('reformat_and_vlan_action', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('sw_owner', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('reformat_l3_tunnel_to_l2', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('reformat_l2_to_l3_tunnel', c.Array[ctypes.c_ubyte, Literal[1]], 19), ('reformat_and_modify_action', c.Array[ctypes.c_ubyte, Literal[1]], 20), ('ignore_flow_level', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('reserved_at_16', c.Array[ctypes.c_ubyte, Literal[1]], 22), ('table_miss_action_domain', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('termination_table', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('reformat_and_fwd_to_table', c.Array[ctypes.c_ubyte, Literal[1]], 25), ('reserved_at_1a', c.Array[ctypes.c_ubyte, Literal[2]], 26), ('ipsec_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('ipsec_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('sw_owner_v2', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('reserved_at_1f', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('termination_table_raw_traffic', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('log_max_ft_size', c.Array[ctypes.c_ubyte, Literal[6]], 34), ('log_max_modify_header_context', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('max_modify_header_actions', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('max_ft_level', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('reformat_add_esp_trasport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reformat_l2_to_l3_esp_tunnel', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reformat_add_esp_transport_over_udp', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('reformat_del_esp_trasport', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('reformat_l3_esp_tunnel_to_l2', c.Array[ctypes.c_ubyte, Literal[1]], 68), ('reformat_del_esp_transport_over_udp', c.Array[ctypes.c_ubyte, Literal[1]], 69), ('execute_aso', c.Array[ctypes.c_ubyte, Literal[1]], 70), ('reserved_at_47', c.Array[ctypes.c_ubyte, Literal[25]], 71), ('reformat_l2_to_l3_psp_tunnel', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('reformat_l3_psp_tunnel_to_l2', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('reformat_insert', c.Array[ctypes.c_ubyte, Literal[1]], 98), ('reformat_remove', c.Array[ctypes.c_ubyte, Literal[1]], 99), ('macsec_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 100), ('macsec_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 101), ('psp_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 102), ('psp_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 103), ('reformat_add_macsec', c.Array[ctypes.c_ubyte, Literal[1]], 104), ('reformat_remove_macsec', c.Array[ctypes.c_ubyte, Literal[1]], 105), ('reparse', c.Array[ctypes.c_ubyte, Literal[1]], 106), ('reserved_at_6b', c.Array[ctypes.c_ubyte, Literal[1]], 107), ('cross_vhca_object', c.Array[ctypes.c_ubyte, Literal[1]], 108), ('reformat_l2_to_l3_audp_tunnel', c.Array[ctypes.c_ubyte, Literal[1]], 109), ('reformat_l3_audp_tunnel_to_l2', c.Array[ctypes.c_ubyte, Literal[1]], 110), ('ignore_flow_level_rtc_valid', c.Array[ctypes.c_ubyte, Literal[1]], 111), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[8]], 112), ('log_max_ft_num', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('log_max_flow_counter', c.Array[ctypes.c_ubyte, Literal[8]], 144), ('log_max_destination', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[24]], 160), ('log_max_flow', c.Array[ctypes.c_ubyte, Literal[8]], 184), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ft_field_support', struct_mlx5_ifc_flow_table_fields_supported_bits, 256), ('ft_field_bitmask_support', struct_mlx5_ifc_flow_table_fields_supported_bits, 384)])
@c.record
class struct_mlx5_ifc_odp_per_transport_service_cap_bits(c.Struct):
  SIZE = 32
  send: c.Array[ctypes.c_ubyte, Literal[1]]
  receive: c.Array[ctypes.c_ubyte, Literal[1]]
  write: c.Array[ctypes.c_ubyte, Literal[1]]
  read: c.Array[ctypes.c_ubyte, Literal[1]]
  atomic: c.Array[ctypes.c_ubyte, Literal[1]]
  srq_receive: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6: c.Array[ctypes.c_ubyte, Literal[26]]
struct_mlx5_ifc_odp_per_transport_service_cap_bits.register_fields([('send', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('receive', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('write', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('read', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('atomic', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('srq_receive', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('reserved_at_6', c.Array[ctypes.c_ubyte, Literal[26]], 6)])
@c.record
class struct_mlx5_ifc_ipv4_layout_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[96]]
  ipv4: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_ipv4_layout_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[96]], 0), ('ipv4', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_ipv6_layout_bits(c.Struct):
  SIZE = 128
  ipv6: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_ipv6_layout_bits.register_fields([('ipv6', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 0)])
@c.record
class struct_mlx5_ifc_ipv6_simple_layout_bits(c.Struct):
  SIZE = 128
  ipv6_127_96: c.Array[ctypes.c_ubyte, Literal[32]]
  ipv6_95_64: c.Array[ctypes.c_ubyte, Literal[32]]
  ipv6_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  ipv6_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_ipv6_simple_layout_bits.register_fields([('ipv6_127_96', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('ipv6_95_64', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('ipv6_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ipv6_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits(c.Struct):
  SIZE = 128
  ipv6_simple_layout: struct_mlx5_ifc_ipv6_simple_layout_bits
  ipv6_layout: struct_mlx5_ifc_ipv6_layout_bits
  ipv4_layout: struct_mlx5_ifc_ipv4_layout_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits.register_fields([('ipv6_simple_layout', struct_mlx5_ifc_ipv6_simple_layout_bits, 0), ('ipv6_layout', struct_mlx5_ifc_ipv6_layout_bits, 0), ('ipv4_layout', struct_mlx5_ifc_ipv4_layout_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
_anonenum9: dict[int, str] = {(MLX5_PACKET_L4_TYPE_NONE:=0): 'MLX5_PACKET_L4_TYPE_NONE', (MLX5_PACKET_L4_TYPE_TCP:=1): 'MLX5_PACKET_L4_TYPE_TCP', (MLX5_PACKET_L4_TYPE_UDP:=2): 'MLX5_PACKET_L4_TYPE_UDP'}
_anonenum10: dict[int, str] = {(MLX5_PACKET_L4_TYPE_EXT_NONE:=0): 'MLX5_PACKET_L4_TYPE_EXT_NONE', (MLX5_PACKET_L4_TYPE_EXT_TCP:=1): 'MLX5_PACKET_L4_TYPE_EXT_TCP', (MLX5_PACKET_L4_TYPE_EXT_UDP:=2): 'MLX5_PACKET_L4_TYPE_EXT_UDP', (MLX5_PACKET_L4_TYPE_EXT_ICMP:=3): 'MLX5_PACKET_L4_TYPE_EXT_ICMP'}
@c.record
class struct_mlx5_ifc_fte_match_set_lyr_2_4_bits(c.Struct):
  SIZE = 512
  smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  ethertype: c.Array[ctypes.c_ubyte, Literal[16]]
  dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  first_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  first_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  first_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  ip_protocol: c.Array[ctypes.c_ubyte, Literal[8]]
  ip_dscp: c.Array[ctypes.c_ubyte, Literal[6]]
  ip_ecn: c.Array[ctypes.c_ubyte, Literal[2]]
  cvlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  svlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  frag: c.Array[ctypes.c_ubyte, Literal[1]]
  ip_version: c.Array[ctypes.c_ubyte, Literal[4]]
  tcp_flags: c.Array[ctypes.c_ubyte, Literal[9]]
  tcp_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  tcp_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  l4_type: c.Array[ctypes.c_ubyte, Literal[2]]
  l4_type_ext: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c6: c.Array[ctypes.c_ubyte, Literal[10]]
  ipv4_ihl: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_d4: c.Array[ctypes.c_ubyte, Literal[4]]
  ttl_hoplimit: c.Array[ctypes.c_ubyte, Literal[8]]
  udp_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  udp_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  src_ipv4_src_ipv6: union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits
  dst_ipv4_dst_ipv6: union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits
struct_mlx5_ifc_fte_match_set_lyr_2_4_bits.register_fields([('smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('ethertype', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('first_prio', c.Array[ctypes.c_ubyte, Literal[3]], 112), ('first_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 115), ('first_vid', c.Array[ctypes.c_ubyte, Literal[12]], 116), ('ip_protocol', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('ip_dscp', c.Array[ctypes.c_ubyte, Literal[6]], 136), ('ip_ecn', c.Array[ctypes.c_ubyte, Literal[2]], 142), ('cvlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 144), ('svlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 145), ('frag', c.Array[ctypes.c_ubyte, Literal[1]], 146), ('ip_version', c.Array[ctypes.c_ubyte, Literal[4]], 147), ('tcp_flags', c.Array[ctypes.c_ubyte, Literal[9]], 151), ('tcp_sport', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('tcp_dport', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('l4_type', c.Array[ctypes.c_ubyte, Literal[2]], 192), ('l4_type_ext', c.Array[ctypes.c_ubyte, Literal[4]], 194), ('reserved_at_c6', c.Array[ctypes.c_ubyte, Literal[10]], 198), ('ipv4_ihl', c.Array[ctypes.c_ubyte, Literal[4]], 208), ('reserved_at_d4', c.Array[ctypes.c_ubyte, Literal[4]], 212), ('ttl_hoplimit', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('udp_sport', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('udp_dport', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('src_ipv4_src_ipv6', union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits, 256), ('dst_ipv4_dst_ipv6', union_mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits, 384)])
@c.record
class struct_mlx5_ifc_nvgre_key_bits(c.Struct):
  SIZE = 32
  hi: c.Array[ctypes.c_ubyte, Literal[24]]
  lo: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_nvgre_key_bits.register_fields([('hi', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('lo', c.Array[ctypes.c_ubyte, Literal[8]], 24)])
@c.record
class union_mlx5_ifc_gre_key_bits(c.Struct):
  SIZE = 32
  nvgre: struct_mlx5_ifc_nvgre_key_bits
  key: c.Array[ctypes.c_ubyte, Literal[32]]
union_mlx5_ifc_gre_key_bits.register_fields([('nvgre', struct_mlx5_ifc_nvgre_key_bits, 0), ('key', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_fte_match_set_misc_bits(c.Struct):
  SIZE = 512
  gre_c_present: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[1]]
  gre_k_present: c.Array[ctypes.c_ubyte, Literal[1]]
  gre_s_present: c.Array[ctypes.c_ubyte, Literal[1]]
  source_vhca_port: c.Array[ctypes.c_ubyte, Literal[4]]
  source_sqn: c.Array[ctypes.c_ubyte, Literal[24]]
  source_eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  source_port: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_second_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  outer_second_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  inner_second_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  inner_second_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  outer_second_cvlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_cvlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_svlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_second_svlan_tag: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_64: c.Array[ctypes.c_ubyte, Literal[12]]
  gre_protocol: c.Array[ctypes.c_ubyte, Literal[16]]
  gre_key: union_mlx5_ifc_gre_key_bits
  vxlan_vni: c.Array[ctypes.c_ubyte, Literal[24]]
  bth_opcode: c.Array[ctypes.c_ubyte, Literal[8]]
  geneve_vni: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_d8: c.Array[ctypes.c_ubyte, Literal[6]]
  geneve_tlv_option_0_exist: c.Array[ctypes.c_ubyte, Literal[1]]
  geneve_oam: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[12]]
  outer_ipv6_flow_label: c.Array[ctypes.c_ubyte, Literal[20]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[12]]
  inner_ipv6_flow_label: c.Array[ctypes.c_ubyte, Literal[20]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[10]]
  geneve_opt_len: c.Array[ctypes.c_ubyte, Literal[6]]
  geneve_protocol_type: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[8]]
  bth_dst_qp: c.Array[ctypes.c_ubyte, Literal[24]]
  inner_esp_spi: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_esp_spi: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_fte_match_set_misc_bits.register_fields([('gre_c_present', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('gre_k_present', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('gre_s_present', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('source_vhca_port', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('source_sqn', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('source_eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('source_port', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('outer_second_prio', c.Array[ctypes.c_ubyte, Literal[3]], 64), ('outer_second_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('outer_second_vid', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('inner_second_prio', c.Array[ctypes.c_ubyte, Literal[3]], 80), ('inner_second_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 83), ('inner_second_vid', c.Array[ctypes.c_ubyte, Literal[12]], 84), ('outer_second_cvlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('inner_second_cvlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('outer_second_svlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 98), ('inner_second_svlan_tag', c.Array[ctypes.c_ubyte, Literal[1]], 99), ('reserved_at_64', c.Array[ctypes.c_ubyte, Literal[12]], 100), ('gre_protocol', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('gre_key', union_mlx5_ifc_gre_key_bits, 128), ('vxlan_vni', c.Array[ctypes.c_ubyte, Literal[24]], 160), ('bth_opcode', c.Array[ctypes.c_ubyte, Literal[8]], 184), ('geneve_vni', c.Array[ctypes.c_ubyte, Literal[24]], 192), ('reserved_at_d8', c.Array[ctypes.c_ubyte, Literal[6]], 216), ('geneve_tlv_option_0_exist', c.Array[ctypes.c_ubyte, Literal[1]], 222), ('geneve_oam', c.Array[ctypes.c_ubyte, Literal[1]], 223), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[12]], 224), ('outer_ipv6_flow_label', c.Array[ctypes.c_ubyte, Literal[20]], 236), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[12]], 256), ('inner_ipv6_flow_label', c.Array[ctypes.c_ubyte, Literal[20]], 268), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[10]], 288), ('geneve_opt_len', c.Array[ctypes.c_ubyte, Literal[6]], 298), ('geneve_protocol_type', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[8]], 320), ('bth_dst_qp', c.Array[ctypes.c_ubyte, Literal[24]], 328), ('inner_esp_spi', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('outer_esp_spi', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('reserved_at_1a0', c.Array[ctypes.c_ubyte, Literal[96]], 416)])
@c.record
class struct_mlx5_ifc_fte_match_mpls_bits(c.Struct):
  SIZE = 32
  mpls_label: c.Array[ctypes.c_ubyte, Literal[20]]
  mpls_exp: c.Array[ctypes.c_ubyte, Literal[3]]
  mpls_s_bos: c.Array[ctypes.c_ubyte, Literal[1]]
  mpls_ttl: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_fte_match_mpls_bits.register_fields([('mpls_label', c.Array[ctypes.c_ubyte, Literal[20]], 0), ('mpls_exp', c.Array[ctypes.c_ubyte, Literal[3]], 20), ('mpls_s_bos', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('mpls_ttl', c.Array[ctypes.c_ubyte, Literal[8]], 24)])
@c.record
class struct_mlx5_ifc_fte_match_set_misc2_bits(c.Struct):
  SIZE = 512
  outer_first_mpls: struct_mlx5_ifc_fte_match_mpls_bits
  inner_first_mpls: struct_mlx5_ifc_fte_match_mpls_bits
  outer_first_mpls_over_gre: struct_mlx5_ifc_fte_match_mpls_bits
  outer_first_mpls_over_udp: struct_mlx5_ifc_fte_match_mpls_bits
  metadata_reg_c_7: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_6: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_5: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_4: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_3: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_2: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_1: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_0: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_a: c.Array[ctypes.c_ubyte, Literal[32]]
  psp_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  macsec_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  ipsec_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  ipsec_next_header: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_fte_match_set_misc2_bits.register_fields([('outer_first_mpls', struct_mlx5_ifc_fte_match_mpls_bits, 0), ('inner_first_mpls', struct_mlx5_ifc_fte_match_mpls_bits, 32), ('outer_first_mpls_over_gre', struct_mlx5_ifc_fte_match_mpls_bits, 64), ('outer_first_mpls_over_udp', struct_mlx5_ifc_fte_match_mpls_bits, 96), ('metadata_reg_c_7', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('metadata_reg_c_6', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('metadata_reg_c_5', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('metadata_reg_c_4', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('metadata_reg_c_3', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('metadata_reg_c_2', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('metadata_reg_c_1', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('metadata_reg_c_0', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('metadata_reg_a', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('psp_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 416), ('macsec_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 424), ('ipsec_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 432), ('ipsec_next_header', c.Array[ctypes.c_ubyte, Literal[8]], 440), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[64]], 448)])
@c.record
class struct_mlx5_ifc_fte_match_set_misc3_bits(c.Struct):
  SIZE = 512
  inner_tcp_seq_num: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_tcp_seq_num: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_tcp_ack_num: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_tcp_ack_num: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  outer_vxlan_gpe_vni: c.Array[ctypes.c_ubyte, Literal[24]]
  outer_vxlan_gpe_next_protocol: c.Array[ctypes.c_ubyte, Literal[8]]
  outer_vxlan_gpe_flags: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_b0: c.Array[ctypes.c_ubyte, Literal[16]]
  icmp_header_data: c.Array[ctypes.c_ubyte, Literal[32]]
  icmpv6_header_data: c.Array[ctypes.c_ubyte, Literal[32]]
  icmp_type: c.Array[ctypes.c_ubyte, Literal[8]]
  icmp_code: c.Array[ctypes.c_ubyte, Literal[8]]
  icmpv6_type: c.Array[ctypes.c_ubyte, Literal[8]]
  icmpv6_code: c.Array[ctypes.c_ubyte, Literal[8]]
  geneve_tlv_option_0_data: c.Array[ctypes.c_ubyte, Literal[32]]
  gtpu_teid: c.Array[ctypes.c_ubyte, Literal[32]]
  gtpu_msg_type: c.Array[ctypes.c_ubyte, Literal[8]]
  gtpu_msg_flags: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_170: c.Array[ctypes.c_ubyte, Literal[16]]
  gtpu_dw_2: c.Array[ctypes.c_ubyte, Literal[32]]
  gtpu_first_ext_dw_0: c.Array[ctypes.c_ubyte, Literal[32]]
  gtpu_dw_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_fte_match_set_misc3_bits.register_fields([('inner_tcp_seq_num', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('outer_tcp_seq_num', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('inner_tcp_ack_num', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('outer_tcp_ack_num', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('outer_vxlan_gpe_vni', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('outer_vxlan_gpe_next_protocol', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('outer_vxlan_gpe_flags', c.Array[ctypes.c_ubyte, Literal[8]], 168), ('reserved_at_b0', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('icmp_header_data', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('icmpv6_header_data', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('icmp_type', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('icmp_code', c.Array[ctypes.c_ubyte, Literal[8]], 264), ('icmpv6_type', c.Array[ctypes.c_ubyte, Literal[8]], 272), ('icmpv6_code', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('geneve_tlv_option_0_data', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('gtpu_teid', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('gtpu_msg_type', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('gtpu_msg_flags', c.Array[ctypes.c_ubyte, Literal[8]], 360), ('reserved_at_170', c.Array[ctypes.c_ubyte, Literal[16]], 368), ('gtpu_dw_2', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('gtpu_first_ext_dw_0', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('gtpu_dw_0', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
@c.record
class struct_mlx5_ifc_fte_match_set_misc4_bits(c.Struct):
  SIZE = 512
  prog_sample_field_value_0: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_id_0: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_value_1: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_id_1: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_value_2: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_id_2: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_value_3: c.Array[ctypes.c_ubyte, Literal[32]]
  prog_sample_field_id_3: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_fte_match_set_misc4_bits.register_fields([('prog_sample_field_value_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('prog_sample_field_id_0', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('prog_sample_field_value_1', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('prog_sample_field_id_1', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('prog_sample_field_value_2', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('prog_sample_field_id_2', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('prog_sample_field_value_3', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('prog_sample_field_id_3', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
@c.record
class struct_mlx5_ifc_fte_match_set_misc5_bits(c.Struct):
  SIZE = 512
  macsec_tag_0: c.Array[ctypes.c_ubyte, Literal[32]]
  macsec_tag_1: c.Array[ctypes.c_ubyte, Literal[32]]
  macsec_tag_2: c.Array[ctypes.c_ubyte, Literal[32]]
  macsec_tag_3: c.Array[ctypes.c_ubyte, Literal[32]]
  tunnel_header_0: c.Array[ctypes.c_ubyte, Literal[32]]
  tunnel_header_1: c.Array[ctypes.c_ubyte, Literal[32]]
  tunnel_header_2: c.Array[ctypes.c_ubyte, Literal[32]]
  tunnel_header_3: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_fte_match_set_misc5_bits.register_fields([('macsec_tag_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('macsec_tag_1', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('macsec_tag_2', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('macsec_tag_3', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('tunnel_header_0', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('tunnel_header_1', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('tunnel_header_2', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('tunnel_header_3', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
@c.record
class struct_mlx5_ifc_cmd_pas_bits(c.Struct):
  SIZE = 64
  pa_h: c.Array[ctypes.c_ubyte, Literal[32]]
  pa_l: c.Array[ctypes.c_ubyte, Literal[20]]
  reserved_at_34: c.Array[ctypes.c_ubyte, Literal[12]]
struct_mlx5_ifc_cmd_pas_bits.register_fields([('pa_h', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('pa_l', c.Array[ctypes.c_ubyte, Literal[20]], 32), ('reserved_at_34', c.Array[ctypes.c_ubyte, Literal[12]], 52)])
@c.record
class struct_mlx5_ifc_uint64_bits(c.Struct):
  SIZE = 64
  hi: c.Array[ctypes.c_ubyte, Literal[32]]
  lo: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_uint64_bits.register_fields([('hi', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('lo', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
_anonenum11: dict[int, str] = {(MLX5_ADS_STAT_RATE_NO_LIMIT:=0): 'MLX5_ADS_STAT_RATE_NO_LIMIT', (MLX5_ADS_STAT_RATE_2_5GBPS:=7): 'MLX5_ADS_STAT_RATE_2_5GBPS', (MLX5_ADS_STAT_RATE_10GBPS:=8): 'MLX5_ADS_STAT_RATE_10GBPS', (MLX5_ADS_STAT_RATE_30GBPS:=9): 'MLX5_ADS_STAT_RATE_30GBPS', (MLX5_ADS_STAT_RATE_5GBPS:=10): 'MLX5_ADS_STAT_RATE_5GBPS', (MLX5_ADS_STAT_RATE_20GBPS:=11): 'MLX5_ADS_STAT_RATE_20GBPS', (MLX5_ADS_STAT_RATE_40GBPS:=12): 'MLX5_ADS_STAT_RATE_40GBPS', (MLX5_ADS_STAT_RATE_60GBPS:=13): 'MLX5_ADS_STAT_RATE_60GBPS', (MLX5_ADS_STAT_RATE_80GBPS:=14): 'MLX5_ADS_STAT_RATE_80GBPS', (MLX5_ADS_STAT_RATE_120GBPS:=15): 'MLX5_ADS_STAT_RATE_120GBPS'}
@c.record
class struct_mlx5_ifc_ads_bits(c.Struct):
  SIZE = 352
  fl: c.Array[ctypes.c_ubyte, Literal[1]]
  free_ar: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[14]]
  pkey_index: c.Array[ctypes.c_ubyte, Literal[16]]
  plane_index: c.Array[ctypes.c_ubyte, Literal[8]]
  grh: c.Array[ctypes.c_ubyte, Literal[1]]
  mlid: c.Array[ctypes.c_ubyte, Literal[7]]
  rlid: c.Array[ctypes.c_ubyte, Literal[16]]
  ack_timeout: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_45: c.Array[ctypes.c_ubyte, Literal[3]]
  src_addr_index: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[4]]
  stat_rate: c.Array[ctypes.c_ubyte, Literal[4]]
  hop_limit: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[4]]
  tclass: c.Array[ctypes.c_ubyte, Literal[8]]
  flow_label: c.Array[ctypes.c_ubyte, Literal[20]]
  rgid_rip: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[4]]
  f_dscp: c.Array[ctypes.c_ubyte, Literal[1]]
  f_ecn: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_106: c.Array[ctypes.c_ubyte, Literal[1]]
  f_eth_prio: c.Array[ctypes.c_ubyte, Literal[1]]
  ecn: c.Array[ctypes.c_ubyte, Literal[2]]
  dscp: c.Array[ctypes.c_ubyte, Literal[6]]
  udp_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  dei_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  eth_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  sl: c.Array[ctypes.c_ubyte, Literal[4]]
  vhca_port_num: c.Array[ctypes.c_ubyte, Literal[8]]
  rmac_47_32: c.Array[ctypes.c_ubyte, Literal[16]]
  rmac_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_ads_bits.register_fields([('fl', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('free_ar', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[14]], 2), ('pkey_index', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('plane_index', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('grh', c.Array[ctypes.c_ubyte, Literal[1]], 40), ('mlid', c.Array[ctypes.c_ubyte, Literal[7]], 41), ('rlid', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('ack_timeout', c.Array[ctypes.c_ubyte, Literal[5]], 64), ('reserved_at_45', c.Array[ctypes.c_ubyte, Literal[3]], 69), ('src_addr_index', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[4]], 80), ('stat_rate', c.Array[ctypes.c_ubyte, Literal[4]], 84), ('hop_limit', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('tclass', c.Array[ctypes.c_ubyte, Literal[8]], 100), ('flow_label', c.Array[ctypes.c_ubyte, Literal[20]], 108), ('rgid_rip', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 128), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[4]], 256), ('f_dscp', c.Array[ctypes.c_ubyte, Literal[1]], 260), ('f_ecn', c.Array[ctypes.c_ubyte, Literal[1]], 261), ('reserved_at_106', c.Array[ctypes.c_ubyte, Literal[1]], 262), ('f_eth_prio', c.Array[ctypes.c_ubyte, Literal[1]], 263), ('ecn', c.Array[ctypes.c_ubyte, Literal[2]], 264), ('dscp', c.Array[ctypes.c_ubyte, Literal[6]], 266), ('udp_sport', c.Array[ctypes.c_ubyte, Literal[16]], 272), ('dei_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 288), ('eth_prio', c.Array[ctypes.c_ubyte, Literal[3]], 289), ('sl', c.Array[ctypes.c_ubyte, Literal[4]], 292), ('vhca_port_num', c.Array[ctypes.c_ubyte, Literal[8]], 296), ('rmac_47_32', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('rmac_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 320)])
@c.record
class struct_mlx5_ifc_flow_table_nic_cap_bits(c.Struct):
  SIZE = 32768
  nic_rx_multi_path_tirs: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_rx_multi_path_tirs_fts: c.Array[ctypes.c_ubyte, Literal[1]]
  allow_sniffer_and_nic_rx_shared_tir: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[4]]
  sw_owner_reformat_supported: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  encap_general_header: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[10]]
  log_max_packet_reformat_context: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[6]]
  max_encap_header_size: c.Array[ctypes.c_ubyte, Literal[10]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[448]]
  flow_table_properties_nic_receive: struct_mlx5_ifc_flow_table_prop_layout_bits
  flow_table_properties_nic_receive_rdma: 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: struct_mlx5_ifc_flow_table_prop_layout_bits
  flow_table_properties_nic_transmit_rdma: struct_mlx5_ifc_flow_table_prop_layout_bits
  flow_table_properties_nic_transmit_sniffer: struct_mlx5_ifc_flow_table_prop_layout_bits
  reserved_at_e00: c.Array[ctypes.c_ubyte, Literal[1536]]
  ft_field_support_2_nic_receive: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_1480: c.Array[ctypes.c_ubyte, Literal[128]]
  ft_field_support_2_nic_receive_rdma: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_1580: c.Array[ctypes.c_ubyte, Literal[640]]
  ft_field_support_2_nic_transmit_rdma: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_1880: c.Array[ctypes.c_ubyte, Literal[1920]]
  sw_steering_nic_rx_action_drop_icm_address: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_nic_tx_action_drop_icm_address: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_nic_tx_action_allow_icm_address: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_20c0: c.Array[ctypes.c_ubyte, Literal[24384]]
struct_mlx5_ifc_flow_table_nic_cap_bits.register_fields([('nic_rx_multi_path_tirs', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('nic_rx_multi_path_tirs_fts', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('allow_sniffer_and_nic_rx_shared_tir', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[4]], 3), ('sw_owner_reformat_supported', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('encap_general_header', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[10]], 33), ('log_max_packet_reformat_context', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[6]], 48), ('max_encap_header_size', c.Array[ctypes.c_ubyte, Literal[10]], 54), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[448]], 64), ('flow_table_properties_nic_receive', struct_mlx5_ifc_flow_table_prop_layout_bits, 512), ('flow_table_properties_nic_receive_rdma', struct_mlx5_ifc_flow_table_prop_layout_bits, 1024), ('flow_table_properties_nic_receive_sniffer', struct_mlx5_ifc_flow_table_prop_layout_bits, 1536), ('flow_table_properties_nic_transmit', struct_mlx5_ifc_flow_table_prop_layout_bits, 2048), ('flow_table_properties_nic_transmit_rdma', struct_mlx5_ifc_flow_table_prop_layout_bits, 2560), ('flow_table_properties_nic_transmit_sniffer', struct_mlx5_ifc_flow_table_prop_layout_bits, 3072), ('reserved_at_e00', c.Array[ctypes.c_ubyte, Literal[1536]], 3584), ('ft_field_support_2_nic_receive', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 5120), ('reserved_at_1480', c.Array[ctypes.c_ubyte, Literal[128]], 5248), ('ft_field_support_2_nic_receive_rdma', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 5376), ('reserved_at_1580', c.Array[ctypes.c_ubyte, Literal[640]], 5504), ('ft_field_support_2_nic_transmit_rdma', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 6144), ('reserved_at_1880', c.Array[ctypes.c_ubyte, Literal[1920]], 6272), ('sw_steering_nic_rx_action_drop_icm_address', c.Array[ctypes.c_ubyte, Literal[64]], 8192), ('sw_steering_nic_tx_action_drop_icm_address', c.Array[ctypes.c_ubyte, Literal[64]], 8256), ('sw_steering_nic_tx_action_allow_icm_address', c.Array[ctypes.c_ubyte, Literal[64]], 8320), ('reserved_at_20c0', c.Array[ctypes.c_ubyte, Literal[24384]], 8384)])
@c.record
class struct_mlx5_ifc_port_selection_cap_bits(c.Struct):
  SIZE = 32768
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  port_select_flow_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[1]]
  port_select_flow_table_bypass: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_13: c.Array[ctypes.c_ubyte, Literal[13]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[480]]
  flow_table_properties_port_selection: struct_mlx5_ifc_flow_table_prop_layout_bits
  ft_field_support_2_port_selection: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_480: c.Array[ctypes.c_ubyte, Literal[31616]]
struct_mlx5_ifc_port_selection_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('port_select_flow_table', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('port_select_flow_table_bypass', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('reserved_at_13', c.Array[ctypes.c_ubyte, Literal[13]], 19), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[480]], 32), ('flow_table_properties_port_selection', struct_mlx5_ifc_flow_table_prop_layout_bits, 512), ('ft_field_support_2_port_selection', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 1024), ('reserved_at_480', c.Array[ctypes.c_ubyte, Literal[31616]], 1152)])
_anonenum12: dict[int, str] = {(MLX5_FDB_TO_VPORT_REG_C_0:=1): 'MLX5_FDB_TO_VPORT_REG_C_0', (MLX5_FDB_TO_VPORT_REG_C_1:=2): 'MLX5_FDB_TO_VPORT_REG_C_1', (MLX5_FDB_TO_VPORT_REG_C_2:=4): 'MLX5_FDB_TO_VPORT_REG_C_2', (MLX5_FDB_TO_VPORT_REG_C_3:=8): 'MLX5_FDB_TO_VPORT_REG_C_3', (MLX5_FDB_TO_VPORT_REG_C_4:=16): 'MLX5_FDB_TO_VPORT_REG_C_4', (MLX5_FDB_TO_VPORT_REG_C_5:=32): 'MLX5_FDB_TO_VPORT_REG_C_5', (MLX5_FDB_TO_VPORT_REG_C_6:=64): 'MLX5_FDB_TO_VPORT_REG_C_6', (MLX5_FDB_TO_VPORT_REG_C_7:=128): 'MLX5_FDB_TO_VPORT_REG_C_7'}
@c.record
class struct_mlx5_ifc_flow_table_eswitch_cap_bits(c.Struct):
  SIZE = 32768
  fdb_to_vport_reg_c_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[5]]
  fdb_uplink_hairpin: c.Array[ctypes.c_ubyte, Literal[1]]
  fdb_multi_path_any_table_limit_regc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f: c.Array[ctypes.c_ubyte, Literal[1]]
  fdb_dynamic_tunnel: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[1]]
  fdb_multi_path_any_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_13: c.Array[ctypes.c_ubyte, Literal[2]]
  fdb_modify_header_fwd_to_table: c.Array[ctypes.c_ubyte, Literal[1]]
  fdb_ipv4_ttl_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  flow_source: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[2]]
  multi_fdb_encap: c.Array[ctypes.c_ubyte, Literal[1]]
  egress_acl_forward_to_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  fdb_multi_path_to_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1d: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[480]]
  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: struct_mlx5_ifc_flow_table_prop_layout_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[3072]]
  ft_field_support_2_esw_fdb: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  ft_field_bitmask_support_2_esw_fdb: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_1500: c.Array[ctypes.c_ubyte, Literal[768]]
  sw_steering_fdb_action_drop_icm_address_rx: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_fdb_action_drop_icm_address_tx: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_uplink_icm_address_rx: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_uplink_icm_address_tx: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_1900: c.Array[ctypes.c_ubyte, Literal[26368]]
struct_mlx5_ifc_flow_table_eswitch_cap_bits.register_fields([('fdb_to_vport_reg_c_id', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[5]], 8), ('fdb_uplink_hairpin', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('fdb_multi_path_any_table_limit_regc', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('reserved_at_f', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('fdb_dynamic_tunnel', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('fdb_multi_path_any_table', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('reserved_at_13', c.Array[ctypes.c_ubyte, Literal[2]], 19), ('fdb_modify_header_fwd_to_table', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('fdb_ipv4_ttl_modify', c.Array[ctypes.c_ubyte, Literal[1]], 22), ('flow_source', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[2]], 24), ('multi_fdb_encap', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('egress_acl_forward_to_vport', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('fdb_multi_path_to_table', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('reserved_at_1d', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[480]], 32), ('flow_table_properties_nic_esw_fdb', struct_mlx5_ifc_flow_table_prop_layout_bits, 512), ('flow_table_properties_esw_acl_ingress', struct_mlx5_ifc_flow_table_prop_layout_bits, 1024), ('flow_table_properties_esw_acl_egress', struct_mlx5_ifc_flow_table_prop_layout_bits, 1536), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[3072]], 2048), ('ft_field_support_2_esw_fdb', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 5120), ('ft_field_bitmask_support_2_esw_fdb', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 5248), ('reserved_at_1500', c.Array[ctypes.c_ubyte, Literal[768]], 5376), ('sw_steering_fdb_action_drop_icm_address_rx', c.Array[ctypes.c_ubyte, Literal[64]], 6144), ('sw_steering_fdb_action_drop_icm_address_tx', c.Array[ctypes.c_ubyte, Literal[64]], 6208), ('sw_steering_uplink_icm_address_rx', c.Array[ctypes.c_ubyte, Literal[64]], 6272), ('sw_steering_uplink_icm_address_tx', c.Array[ctypes.c_ubyte, Literal[64]], 6336), ('reserved_at_1900', c.Array[ctypes.c_ubyte, Literal[26368]], 6400)])
@c.record
class struct_mlx5_ifc_wqe_based_flow_table_cap_bits(c.Struct):
  SIZE = 480
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_ste: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_stc: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_rtc: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_header_modify_pattern: c.Array[ctypes.c_ubyte, Literal[5]]
  rtc_hash_split_table: c.Array[ctypes.c_ubyte, Literal[1]]
  rtc_linear_lookup_table: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[1]]
  stc_alloc_log_granularity: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[3]]
  stc_alloc_log_max: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[3]]
  ste_alloc_log_granularity: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[3]]
  ste_alloc_log_max: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[11]]
  rtc_reparse_mode: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[3]]
  rtc_index_mode: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[3]]
  rtc_log_depth_max: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  ste_format: c.Array[ctypes.c_ubyte, Literal[16]]
  stc_action_type: c.Array[ctypes.c_ubyte, Literal[128]]
  header_insert_type: c.Array[ctypes.c_ubyte, Literal[16]]
  header_remove_type: c.Array[ctypes.c_ubyte, Literal[16]]
  trivial_match_definer: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[27]]
  rtc_max_num_hash_definer_gen_wqe: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[24]]
  access_index_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[16]]
  ste_format_gen_wqe: c.Array[ctypes.c_ubyte, Literal[16]]
  linear_match_definer_reg_c3: c.Array[ctypes.c_ubyte, Literal[32]]
  fdb_jump_to_tir_stc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1c1: c.Array[ctypes.c_ubyte, Literal[31]]
struct_mlx5_ifc_wqe_based_flow_table_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('log_max_num_ste', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[3]], 8), ('log_max_num_stc', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[3]], 16), ('log_max_num_rtc', c.Array[ctypes.c_ubyte, Literal[5]], 19), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[3]], 24), ('log_max_num_header_modify_pattern', c.Array[ctypes.c_ubyte, Literal[5]], 27), ('rtc_hash_split_table', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('rtc_linear_lookup_table', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('stc_alloc_log_granularity', c.Array[ctypes.c_ubyte, Literal[5]], 35), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[3]], 40), ('stc_alloc_log_max', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[3]], 48), ('ste_alloc_log_granularity', c.Array[ctypes.c_ubyte, Literal[5]], 51), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[3]], 56), ('ste_alloc_log_max', c.Array[ctypes.c_ubyte, Literal[5]], 59), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[11]], 64), ('rtc_reparse_mode', c.Array[ctypes.c_ubyte, Literal[5]], 75), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[3]], 80), ('rtc_index_mode', c.Array[ctypes.c_ubyte, Literal[5]], 83), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[3]], 88), ('rtc_log_depth_max', c.Array[ctypes.c_ubyte, Literal[5]], 91), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('ste_format', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('stc_action_type', c.Array[ctypes.c_ubyte, Literal[128]], 128), ('header_insert_type', c.Array[ctypes.c_ubyte, Literal[16]], 256), ('header_remove_type', c.Array[ctypes.c_ubyte, Literal[16]], 272), ('trivial_match_definer', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[27]], 320), ('rtc_max_num_hash_definer_gen_wqe', c.Array[ctypes.c_ubyte, Literal[5]], 347), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[24]], 352), ('access_index_mode', c.Array[ctypes.c_ubyte, Literal[8]], 376), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[16]], 384), ('ste_format_gen_wqe', c.Array[ctypes.c_ubyte, Literal[16]], 400), ('linear_match_definer_reg_c3', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('fdb_jump_to_tir_stc', c.Array[ctypes.c_ubyte, Literal[1]], 448), ('reserved_at_1c1', c.Array[ctypes.c_ubyte, Literal[31]], 449)])
@c.record
class struct_mlx5_ifc_esw_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[29]]
  merged_eswitch: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1e: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[64]]
  esw_manager_vport_number_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_61: c.Array[ctypes.c_ubyte, Literal[15]]
  esw_manager_vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1920]]
struct_mlx5_ifc_esw_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[29]], 0), ('merged_eswitch', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('reserved_at_1e', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[64]], 32), ('esw_manager_vport_number_valid', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('reserved_at_61', c.Array[ctypes.c_ubyte, Literal[15]], 97), ('esw_manager_vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1920]], 128)])
_anonenum13: dict[int, str] = {(MLX5_COUNTER_SOURCE_ESWITCH:=0): 'MLX5_COUNTER_SOURCE_ESWITCH', (MLX5_COUNTER_FLOW_ESWITCH:=1): 'MLX5_COUNTER_FLOW_ESWITCH'}
@c.record
class struct_mlx5_ifc_e_switch_cap_bits(c.Struct):
  SIZE = 2048
  vport_svlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_svlan_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_insert_if_not_exist: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_insert_overwrite: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_insert_always: c.Array[ctypes.c_ubyte, Literal[1]]
  esw_shared_ingress_acl: c.Array[ctypes.c_ubyte, Literal[1]]
  esw_uplink_ingress_acl: c.Array[ctypes.c_ubyte, Literal[1]]
  root_ft_on_other_esw: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_a: c.Array[ctypes.c_ubyte, Literal[15]]
  esw_functions_changed: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1a: c.Array[ctypes.c_ubyte, Literal[1]]
  ecpf_vport_exists: c.Array[ctypes.c_ubyte, Literal[1]]
  counter_eswitch_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  merged_eswitch: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_vport_node_guid_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_vport_port_guid_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  vxlan_encap_decap: c.Array[ctypes.c_ubyte, Literal[1]]
  nvgre_encap_decap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_fdb_encap_uplink: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_packet_reformat_context: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_2b: c.Array[ctypes.c_ubyte, Literal[6]]
  max_encap_header_size: c.Array[ctypes.c_ubyte, Literal[10]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[11]]
  log_max_esw_sf: c.Array[ctypes.c_ubyte, Literal[5]]
  esw_sf_base_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[1952]]
struct_mlx5_ifc_e_switch_cap_bits.register_fields([('vport_svlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('vport_cvlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('vport_svlan_insert', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('vport_cvlan_insert_if_not_exist', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('vport_cvlan_insert_overwrite', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('reserved_at_5', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('vport_cvlan_insert_always', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('esw_shared_ingress_acl', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('esw_uplink_ingress_acl', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('root_ft_on_other_esw', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('reserved_at_a', c.Array[ctypes.c_ubyte, Literal[15]], 10), ('esw_functions_changed', c.Array[ctypes.c_ubyte, Literal[1]], 25), ('reserved_at_1a', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('ecpf_vport_exists', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('counter_eswitch_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('merged_eswitch', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('nic_vport_node_guid_modify', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('nic_vport_port_guid_modify', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('vxlan_encap_decap', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('nvgre_encap_decap', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('log_max_fdb_encap_uplink', c.Array[ctypes.c_ubyte, Literal[5]], 35), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[3]], 40), ('log_max_packet_reformat_context', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_2b', c.Array[ctypes.c_ubyte, Literal[6]], 48), ('max_encap_header_size', c.Array[ctypes.c_ubyte, Literal[10]], 54), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[11]], 64), ('log_max_esw_sf', c.Array[ctypes.c_ubyte, Literal[5]], 75), ('esw_sf_base_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[1952]], 96)])
@c.record
class struct_mlx5_ifc_qos_cap_bits(c.Struct):
  SIZE = 2048
  packet_pacing: c.Array[ctypes.c_ubyte, Literal[1]]
  esw_scheduling: c.Array[ctypes.c_ubyte, Literal[1]]
  esw_bw_share: c.Array[ctypes.c_ubyte, Literal[1]]
  esw_rate_limit: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_pacing_burst_bound: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_pacing_typical_size: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_sq_scheduling: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_bw_share: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_rate_limit: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_pacing_uid: c.Array[ctypes.c_ubyte, Literal[1]]
  log_esw_max_sched_depth: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[9]]
  esw_cross_esw_sched: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2a: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_qos_nic_queue_group: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_pacing_max_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  packet_pacing_min_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[11]]
  log_esw_max_rate_limit: c.Array[ctypes.c_ubyte, Literal[5]]
  packet_pacing_rate_table_size: c.Array[ctypes.c_ubyte, Literal[16]]
  esw_element_type: c.Array[ctypes.c_ubyte, Literal[16]]
  esw_tsar_type: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[16]]
  max_qos_para_vport: c.Array[ctypes.c_ubyte, Literal[16]]
  max_tsar_bw_share: c.Array[ctypes.c_ubyte, Literal[32]]
  nic_element_type: c.Array[ctypes.c_ubyte, Literal[16]]
  nic_tsar_type: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[3]]
  log_meter_aso_granularity: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_128: c.Array[ctypes.c_ubyte, Literal[3]]
  log_meter_aso_max_alloc: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_130: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_meter_aso: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_138: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[1728]]
struct_mlx5_ifc_qos_cap_bits.register_fields([('packet_pacing', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('esw_scheduling', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('esw_bw_share', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('esw_rate_limit', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('packet_pacing_burst_bound', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('packet_pacing_typical_size', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reserved_at_7', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('nic_sq_scheduling', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('nic_bw_share', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('nic_rate_limit', c.Array[ctypes.c_ubyte, Literal[1]], 10), ('packet_pacing_uid', c.Array[ctypes.c_ubyte, Literal[1]], 11), ('log_esw_max_sched_depth', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[9]], 32), ('esw_cross_esw_sched', c.Array[ctypes.c_ubyte, Literal[1]], 41), ('reserved_at_2a', c.Array[ctypes.c_ubyte, Literal[1]], 42), ('log_max_qos_nic_queue_group', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('packet_pacing_max_rate', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('packet_pacing_min_rate', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[11]], 128), ('log_esw_max_rate_limit', c.Array[ctypes.c_ubyte, Literal[5]], 139), ('packet_pacing_rate_table_size', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('esw_element_type', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('esw_tsar_type', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('max_qos_para_vport', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('max_tsar_bw_share', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('nic_element_type', c.Array[ctypes.c_ubyte, Literal[16]], 256), ('nic_tsar_type', c.Array[ctypes.c_ubyte, Literal[16]], 272), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[3]], 288), ('log_meter_aso_granularity', c.Array[ctypes.c_ubyte, Literal[5]], 291), ('reserved_at_128', c.Array[ctypes.c_ubyte, Literal[3]], 296), ('log_meter_aso_max_alloc', c.Array[ctypes.c_ubyte, Literal[5]], 299), ('reserved_at_130', c.Array[ctypes.c_ubyte, Literal[3]], 304), ('log_max_num_meter_aso', c.Array[ctypes.c_ubyte, Literal[5]], 307), ('reserved_at_138', c.Array[ctypes.c_ubyte, Literal[8]], 312), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[1728]], 320)])
@c.record
class struct_mlx5_ifc_debug_cap_bits(c.Struct):
  SIZE = 2048
  core_dump_general: c.Array[ctypes.c_ubyte, Literal[1]]
  core_dump_qp: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[7]]
  resource_dump: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_a: c.Array[ctypes.c_ubyte, Literal[22]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[2]]
  stall_detect: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_23: c.Array[ctypes.c_ubyte, Literal[29]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[1984]]
struct_mlx5_ifc_debug_cap_bits.register_fields([('core_dump_general', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('core_dump_qp', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[7]], 2), ('resource_dump', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('reserved_at_a', c.Array[ctypes.c_ubyte, Literal[22]], 10), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[2]], 32), ('stall_detect', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('reserved_at_23', c.Array[ctypes.c_ubyte, Literal[29]], 35), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[1984]], 64)])
@c.record
class struct_mlx5_ifc_per_protocol_networking_offload_caps_bits(c.Struct):
  SIZE = 2048
  csum_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  vlan_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  lro_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  lro_psh_flag: c.Array[ctypes.c_ubyte, Literal[1]]
  lro_time_stamp: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5: c.Array[ctypes.c_ubyte, Literal[2]]
  wqe_vlan_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  self_lb_en_modifiable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_9: c.Array[ctypes.c_ubyte, Literal[2]]
  max_lso_cap: c.Array[ctypes.c_ubyte, Literal[5]]
  multi_pkt_send_wqe: c.Array[ctypes.c_ubyte, Literal[2]]
  wqe_inline_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  rss_ind_tbl_cap: c.Array[ctypes.c_ubyte, Literal[4]]
  reg_umr_sq: c.Array[ctypes.c_ubyte, Literal[1]]
  scatter_fcs: c.Array[ctypes.c_ubyte, Literal[1]]
  enhanced_multi_pkt_send_wqe: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_lso_const_out_ip_id: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_lro_gre: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_lro_vxlan: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_gre: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_vxlan: c.Array[ctypes.c_ubyte, Literal[1]]
  swp: c.Array[ctypes.c_ubyte, Literal[1]]
  swp_csum: c.Array[ctypes.c_ubyte, Literal[1]]
  swp_lso: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_checksum_full: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_geneve_tx: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_mpls_over_udp: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_mpls_over_gre: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_vxlan_gpe: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_ipv4_over_vxlan: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_ip_over_ip: c.Array[ctypes.c_ubyte, Literal[1]]
  insert_trailer: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2b: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_ip_over_ip_rx: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_ip_over_ip_tx: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2e: c.Array[ctypes.c_ubyte, Literal[2]]
  max_vxlan_udp_ports: c.Array[ctypes.c_ubyte, Literal[8]]
  swp_csum_l4_partial: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_39: c.Array[ctypes.c_ubyte, Literal[5]]
  max_geneve_opt_len: c.Array[ctypes.c_ubyte, Literal[1]]
  tunnel_stateless_geneve_rx: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  lro_min_mss_size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[288]]
  lro_timer_supported_periods: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[1536]]
struct_mlx5_ifc_per_protocol_networking_offload_caps_bits.register_fields([('csum_cap', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('vlan_cap', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('lro_cap', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('lro_psh_flag', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('lro_time_stamp', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('reserved_at_5', c.Array[ctypes.c_ubyte, Literal[2]], 5), ('wqe_vlan_insert', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('self_lb_en_modifiable', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('reserved_at_9', c.Array[ctypes.c_ubyte, Literal[2]], 9), ('max_lso_cap', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('multi_pkt_send_wqe', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('wqe_inline_mode', c.Array[ctypes.c_ubyte, Literal[2]], 18), ('rss_ind_tbl_cap', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reg_umr_sq', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('scatter_fcs', c.Array[ctypes.c_ubyte, Literal[1]], 25), ('enhanced_multi_pkt_send_wqe', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('tunnel_lso_const_out_ip_id', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('tunnel_lro_gre', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('tunnel_lro_vxlan', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('tunnel_stateless_gre', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('tunnel_stateless_vxlan', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('swp', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('swp_csum', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('swp_lso', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('cqe_checksum_full', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('tunnel_stateless_geneve_tx', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('tunnel_stateless_mpls_over_udp', c.Array[ctypes.c_ubyte, Literal[1]], 37), ('tunnel_stateless_mpls_over_gre', c.Array[ctypes.c_ubyte, Literal[1]], 38), ('tunnel_stateless_vxlan_gpe', c.Array[ctypes.c_ubyte, Literal[1]], 39), ('tunnel_stateless_ipv4_over_vxlan', c.Array[ctypes.c_ubyte, Literal[1]], 40), ('tunnel_stateless_ip_over_ip', c.Array[ctypes.c_ubyte, Literal[1]], 41), ('insert_trailer', c.Array[ctypes.c_ubyte, Literal[1]], 42), ('reserved_at_2b', c.Array[ctypes.c_ubyte, Literal[1]], 43), ('tunnel_stateless_ip_over_ip_rx', c.Array[ctypes.c_ubyte, Literal[1]], 44), ('tunnel_stateless_ip_over_ip_tx', c.Array[ctypes.c_ubyte, Literal[1]], 45), ('reserved_at_2e', c.Array[ctypes.c_ubyte, Literal[2]], 46), ('max_vxlan_udp_ports', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('swp_csum_l4_partial', c.Array[ctypes.c_ubyte, Literal[1]], 56), ('reserved_at_39', c.Array[ctypes.c_ubyte, Literal[5]], 57), ('max_geneve_opt_len', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('tunnel_stateless_geneve_rx', c.Array[ctypes.c_ubyte, Literal[1]], 63), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('lro_min_mss_size', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[288]], 96), ('lro_timer_supported_periods', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 384), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[1536]], 512)])
_anonenum14: dict[int, str] = {(MLX5_TIMESTAMP_FORMAT_CAP_FREE_RUNNING:=0): 'MLX5_TIMESTAMP_FORMAT_CAP_FREE_RUNNING', (MLX5_TIMESTAMP_FORMAT_CAP_REAL_TIME:=1): 'MLX5_TIMESTAMP_FORMAT_CAP_REAL_TIME', (MLX5_TIMESTAMP_FORMAT_CAP_FREE_RUNNING_AND_REAL_TIME:=2): 'MLX5_TIMESTAMP_FORMAT_CAP_FREE_RUNNING_AND_REAL_TIME'}
@c.record
class struct_mlx5_ifc_roce_cap_bits(c.Struct):
  SIZE = 2048
  roce_apm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[3]]
  sw_r_roce_src_udp_port: c.Array[ctypes.c_ubyte, Literal[1]]
  fl_rc_qp_when_roce_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  fl_rc_qp_when_roce_enabled: c.Array[ctypes.c_ubyte, Literal[1]]
  roce_cc_general: c.Array[ctypes.c_ubyte, Literal[1]]
  qp_ooo_transmit_default: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_9: c.Array[ctypes.c_ubyte, Literal[21]]
  qp_ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[12]]
  l3_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_90: c.Array[ctypes.c_ubyte, Literal[8]]
  roce_version: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[16]]
  r_roce_dest_udp_port: c.Array[ctypes.c_ubyte, Literal[16]]
  r_roce_max_src_udp_port: c.Array[ctypes.c_ubyte, Literal[16]]
  r_roce_min_src_udp_port: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[16]]
  roce_address_table_size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[1792]]
struct_mlx5_ifc_roce_cap_bits.register_fields([('roce_apm', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[3]], 1), ('sw_r_roce_src_udp_port', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('fl_rc_qp_when_roce_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('fl_rc_qp_when_roce_enabled', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('roce_cc_general', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('qp_ooo_transmit_default', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('reserved_at_9', c.Array[ctypes.c_ubyte, Literal[21]], 9), ('qp_ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[12]], 128), ('l3_type', c.Array[ctypes.c_ubyte, Literal[4]], 140), ('reserved_at_90', c.Array[ctypes.c_ubyte, Literal[8]], 144), ('roce_version', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('r_roce_dest_udp_port', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('r_roce_max_src_udp_port', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('r_roce_min_src_udp_port', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('roce_address_table_size', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[1792]], 256)])
@c.record
class struct_mlx5_ifc_sync_steering_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
struct_mlx5_ifc_sync_steering_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64)])
@c.record
class struct_mlx5_ifc_sync_steering_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_sync_steering_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_sync_crypto_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  crypto_type: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_sync_crypto_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('crypto_type', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[128]], 128)])
@c.record
class struct_mlx5_ifc_sync_crypto_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_sync_crypto_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_device_mem_cap_bits(c.Struct):
  SIZE = 2048
  memic: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[11]]
  log_min_memic_alloc_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_memic_addr_alignment: c.Array[ctypes.c_ubyte, Literal[8]]
  memic_bar_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  memic_bar_size: c.Array[ctypes.c_ubyte, Literal[32]]
  max_memic_size: c.Array[ctypes.c_ubyte, Literal[32]]
  steering_sw_icm_start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  log_header_modify_sw_icm_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_110: c.Array[ctypes.c_ubyte, Literal[2]]
  log_sw_icm_alloc_granularity: c.Array[ctypes.c_ubyte, Literal[6]]
  log_steering_sw_icm_size: c.Array[ctypes.c_ubyte, Literal[8]]
  log_indirect_encap_sw_icm_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_128: c.Array[ctypes.c_ubyte, Literal[16]]
  log_header_modify_pattern_sw_icm_size: c.Array[ctypes.c_ubyte, Literal[8]]
  header_modify_sw_icm_start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[64]]
  header_modify_pattern_sw_icm_start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  memic_operations: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_220: c.Array[ctypes.c_ubyte, Literal[32]]
  indirect_encap_sw_icm_start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1408]]
struct_mlx5_ifc_device_mem_cap_bits.register_fields([('memic', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[31]], 1), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[11]], 32), ('log_min_memic_alloc_size', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('log_max_memic_addr_alignment', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('memic_bar_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('memic_bar_size', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('max_memic_size', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('steering_sw_icm_start_address', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('log_header_modify_sw_icm_size', c.Array[ctypes.c_ubyte, Literal[8]], 264), ('reserved_at_110', c.Array[ctypes.c_ubyte, Literal[2]], 272), ('log_sw_icm_alloc_granularity', c.Array[ctypes.c_ubyte, Literal[6]], 274), ('log_steering_sw_icm_size', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('log_indirect_encap_sw_icm_size', c.Array[ctypes.c_ubyte, Literal[8]], 288), ('reserved_at_128', c.Array[ctypes.c_ubyte, Literal[16]], 296), ('log_header_modify_pattern_sw_icm_size', c.Array[ctypes.c_ubyte, Literal[8]], 312), ('header_modify_sw_icm_start_address', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('header_modify_pattern_sw_icm_start_address', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('memic_operations', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('reserved_at_220', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('indirect_encap_sw_icm_start_address', c.Array[ctypes.c_ubyte, Literal[64]], 576), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1408]], 640)])
@c.record
class struct_mlx5_ifc_device_event_cap_bits(c.Struct):
  SIZE = 512
  user_affiliated_events: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]]
  user_unaffiliated_events: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]]
struct_mlx5_ifc_device_event_cap_bits.register_fields([('user_affiliated_events', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]], 0), ('user_unaffiliated_events', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]], 256)])
@c.record
class struct_mlx5_ifc_virtio_emulation_cap_bits(c.Struct):
  SIZE = 2048
  desc_tunnel_offload_type: c.Array[ctypes.c_ubyte, Literal[1]]
  eth_frame_offload_type: c.Array[ctypes.c_ubyte, Literal[1]]
  virtio_version_1_0: c.Array[ctypes.c_ubyte, Literal[1]]
  device_features_bits_mask: c.Array[ctypes.c_ubyte, Literal[13]]
  event_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  virtio_queue_type: c.Array[ctypes.c_ubyte, Literal[8]]
  max_tunnel_desc: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[3]]
  log_doorbell_stride: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[3]]
  log_doorbell_bar_size: c.Array[ctypes.c_ubyte, Literal[5]]
  doorbell_bar_offset: c.Array[ctypes.c_ubyte, Literal[64]]
  max_emulated_devices: c.Array[ctypes.c_ubyte, Literal[8]]
  max_num_virtio_queues: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[19]]
  desc_group_mkey_supported: c.Array[ctypes.c_ubyte, Literal[1]]
  freeze_to_rdy_supported: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_d5: c.Array[ctypes.c_ubyte, Literal[11]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_1_buffer_param_a: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_1_buffer_param_b: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_2_buffer_param_a: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_2_buffer_param_b: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_3_buffer_param_a: c.Array[ctypes.c_ubyte, Literal[32]]
  umem_3_buffer_param_b: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[1600]]
struct_mlx5_ifc_virtio_emulation_cap_bits.register_fields([('desc_tunnel_offload_type', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('eth_frame_offload_type', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('virtio_version_1_0', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('device_features_bits_mask', c.Array[ctypes.c_ubyte, Literal[13]], 3), ('event_mode', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('virtio_queue_type', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('max_tunnel_desc', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[3]], 48), ('log_doorbell_stride', c.Array[ctypes.c_ubyte, Literal[5]], 51), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[3]], 56), ('log_doorbell_bar_size', c.Array[ctypes.c_ubyte, Literal[5]], 59), ('doorbell_bar_offset', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('max_emulated_devices', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('max_num_virtio_queues', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[19]], 192), ('desc_group_mkey_supported', c.Array[ctypes.c_ubyte, Literal[1]], 211), ('freeze_to_rdy_supported', c.Array[ctypes.c_ubyte, Literal[1]], 212), ('reserved_at_d5', c.Array[ctypes.c_ubyte, Literal[11]], 213), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('umem_1_buffer_param_a', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('umem_1_buffer_param_b', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('umem_2_buffer_param_a', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('umem_2_buffer_param_b', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('umem_3_buffer_param_a', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('umem_3_buffer_param_b', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[1600]], 448)])
_anonenum15: dict[int, str] = {(MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_1_BYTE:=0): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_1_BYTE', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_2_BYTES:=2): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_2_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_4_BYTES:=4): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_4_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_8_BYTES:=8): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_8_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_16_BYTES:=16): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_16_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_32_BYTES:=32): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_32_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_64_BYTES:=64): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_64_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_128_BYTES:=128): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_128_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_256_BYTES:=256): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_QP_256_BYTES'}
_anonenum16: dict[int, str] = {(MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_1_BYTE:=1): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_1_BYTE', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_2_BYTES:=2): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_2_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_4_BYTES:=4): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_4_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_8_BYTES:=8): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_8_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_16_BYTES:=16): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_16_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_32_BYTES:=32): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_32_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_64_BYTES:=64): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_64_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_128_BYTES:=128): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_128_BYTES', (MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_256_BYTES:=256): 'MLX5_ATOMIC_CAPS_ATOMIC_SIZE_DC_256_BYTES'}
@c.record
class struct_mlx5_ifc_atomic_caps_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
  atomic_req_8B_endianness_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[4]]
  supported_atomic_req_8B_endianness_mode_1: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_47: c.Array[ctypes.c_ubyte, Literal[25]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  atomic_operations: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[16]]
  atomic_size_qp: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[16]]
  atomic_size_dc: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[1824]]
struct_mlx5_ifc_atomic_caps_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('atomic_req_8B_endianness_mode', c.Array[ctypes.c_ubyte, Literal[2]], 64), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[4]], 66), ('supported_atomic_req_8B_endianness_mode_1', c.Array[ctypes.c_ubyte, Literal[1]], 70), ('reserved_at_47', c.Array[ctypes.c_ubyte, Literal[25]], 71), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('atomic_operations', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('atomic_size_qp', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('atomic_size_dc', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[1824]], 224)])
@c.record
class struct_mlx5_ifc_odp_scheme_cap_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
  sig: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[4]]
  page_prefetch: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_46: c.Array[ctypes.c_ubyte, Literal[26]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  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: struct_mlx5_ifc_odp_per_transport_service_cap_bits
  xrc_odp_caps: struct_mlx5_ifc_odp_per_transport_service_cap_bits
  dc_odp_caps: struct_mlx5_ifc_odp_per_transport_service_cap_bits
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
struct_mlx5_ifc_odp_scheme_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('sig', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[4]], 65), ('page_prefetch', c.Array[ctypes.c_ubyte, Literal[1]], 69), ('reserved_at_46', c.Array[ctypes.c_ubyte, Literal[26]], 70), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('rc_odp_caps', struct_mlx5_ifc_odp_per_transport_service_cap_bits, 128), ('uc_odp_caps', struct_mlx5_ifc_odp_per_transport_service_cap_bits, 160), ('ud_odp_caps', struct_mlx5_ifc_odp_per_transport_service_cap_bits, 192), ('xrc_odp_caps', struct_mlx5_ifc_odp_per_transport_service_cap_bits, 224), ('dc_odp_caps', struct_mlx5_ifc_odp_per_transport_service_cap_bits, 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288)])
@c.record
class struct_mlx5_ifc_odp_cap_bits(c.Struct):
  SIZE = 2048
  transport_page_fault_scheme_cap: struct_mlx5_ifc_odp_scheme_cap_bits
  memory_page_fault_scheme_cap: struct_mlx5_ifc_odp_scheme_cap_bits
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[512]]
  mem_page_fault: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_601: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_620: c.Array[ctypes.c_ubyte, Literal[480]]
struct_mlx5_ifc_odp_cap_bits.register_fields([('transport_page_fault_scheme_cap', struct_mlx5_ifc_odp_scheme_cap_bits, 0), ('memory_page_fault_scheme_cap', struct_mlx5_ifc_odp_scheme_cap_bits, 512), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[512]], 1024), ('mem_page_fault', c.Array[ctypes.c_ubyte, Literal[1]], 1536), ('reserved_at_601', c.Array[ctypes.c_ubyte, Literal[31]], 1537), ('reserved_at_620', c.Array[ctypes.c_ubyte, Literal[480]], 1568)])
@c.record
class struct_mlx5_ifc_tls_cap_bits(c.Struct):
  SIZE = 2048
  tls_1_2_aes_gcm_128: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_1_3_aes_gcm_128: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_1_2_aes_gcm_256: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_1_3_aes_gcm_256: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[28]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[2016]]
struct_mlx5_ifc_tls_cap_bits.register_fields([('tls_1_2_aes_gcm_128', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('tls_1_3_aes_gcm_128', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('tls_1_2_aes_gcm_256', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('tls_1_3_aes_gcm_256', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[28]], 4), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[2016]], 32)])
@c.record
class struct_mlx5_ifc_ipsec_cap_bits(c.Struct):
  SIZE = 2048
  ipsec_full_offload: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_crypto_offload: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_esn: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_crypto_esp_aes_gcm_256_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_crypto_esp_aes_gcm_128_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_crypto_esp_aes_gcm_256_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_crypto_esp_aes_gcm_128_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7: c.Array[ctypes.c_ubyte, Literal[4]]
  log_max_ipsec_offload: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  min_log_ipsec_full_replay_window: c.Array[ctypes.c_ubyte, Literal[8]]
  max_log_ipsec_full_replay_window: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[2000]]
struct_mlx5_ifc_ipsec_cap_bits.register_fields([('ipsec_full_offload', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('ipsec_crypto_offload', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('ipsec_esn', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('ipsec_crypto_esp_aes_gcm_256_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('ipsec_crypto_esp_aes_gcm_128_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('ipsec_crypto_esp_aes_gcm_256_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('ipsec_crypto_esp_aes_gcm_128_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reserved_at_7', c.Array[ctypes.c_ubyte, Literal[4]], 7), ('log_max_ipsec_offload', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('min_log_ipsec_full_replay_window', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('max_log_ipsec_full_replay_window', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[2000]], 48)])
@c.record
class struct_mlx5_ifc_macsec_cap_bits(c.Struct):
  SIZE = 2048
  macsec_epn: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[2]]
  macsec_crypto_esp_aes_gcm_256_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  macsec_crypto_esp_aes_gcm_128_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  macsec_crypto_esp_aes_gcm_256_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  macsec_crypto_esp_aes_gcm_128_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7: c.Array[ctypes.c_ubyte, Literal[4]]
  log_max_macsec_offload: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  min_log_macsec_full_replay_window: c.Array[ctypes.c_ubyte, Literal[8]]
  max_log_macsec_full_replay_window: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[1984]]
struct_mlx5_ifc_macsec_cap_bits.register_fields([('macsec_epn', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[2]], 1), ('macsec_crypto_esp_aes_gcm_256_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('macsec_crypto_esp_aes_gcm_128_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('macsec_crypto_esp_aes_gcm_256_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('macsec_crypto_esp_aes_gcm_128_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reserved_at_7', c.Array[ctypes.c_ubyte, Literal[4]], 7), ('log_max_macsec_offload', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('min_log_macsec_full_replay_window', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('max_log_macsec_full_replay_window', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[1984]], 64)])
@c.record
class struct_mlx5_ifc_psp_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_crypto_offload: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_crypto_esp_aes_gcm_256_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_crypto_esp_aes_gcm_128_encrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_crypto_esp_aes_gcm_256_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  psp_crypto_esp_aes_gcm_128_decrypt: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7: c.Array[ctypes.c_ubyte, Literal[4]]
  log_max_num_of_psp_spi: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[2016]]
struct_mlx5_ifc_psp_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('psp_crypto_offload', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('psp_crypto_esp_aes_gcm_256_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('psp_crypto_esp_aes_gcm_128_encrypt', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('psp_crypto_esp_aes_gcm_256_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('psp_crypto_esp_aes_gcm_128_decrypt', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reserved_at_7', c.Array[ctypes.c_ubyte, Literal[4]], 7), ('log_max_num_of_psp_spi', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[2016]], 32)])
_anonenum17: dict[int, str] = {(MLX5_WQ_TYPE_LINKED_LIST:=0): 'MLX5_WQ_TYPE_LINKED_LIST', (MLX5_WQ_TYPE_CYCLIC:=1): 'MLX5_WQ_TYPE_CYCLIC', (MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ:=2): 'MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ', (MLX5_WQ_TYPE_CYCLIC_STRIDING_RQ:=3): 'MLX5_WQ_TYPE_CYCLIC_STRIDING_RQ'}
_anonenum18: dict[int, str] = {(MLX5_WQ_END_PAD_MODE_NONE:=0): 'MLX5_WQ_END_PAD_MODE_NONE', (MLX5_WQ_END_PAD_MODE_ALIGN:=1): 'MLX5_WQ_END_PAD_MODE_ALIGN'}
_anonenum19: dict[int, str] = {(MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_8_GID_ENTRIES:=0): 'MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_8_GID_ENTRIES', (MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_16_GID_ENTRIES:=1): 'MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_16_GID_ENTRIES', (MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_32_GID_ENTRIES:=2): 'MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_32_GID_ENTRIES', (MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_64_GID_ENTRIES:=3): 'MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_64_GID_ENTRIES', (MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_128_GID_ENTRIES:=4): 'MLX5_CMD_HCA_CAP_GID_TABLE_SIZE_128_GID_ENTRIES'}
_anonenum20: dict[int, str] = {(MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_128_ENTRIES:=0): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_128_ENTRIES', (MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_256_ENTRIES:=1): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_256_ENTRIES', (MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_512_ENTRIES:=2): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_512_ENTRIES', (MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_1K_ENTRIES:=3): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_1K_ENTRIES', (MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_2K_ENTRIES:=4): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_2K_ENTRIES', (MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_4K_ENTRIES:=5): 'MLX5_CMD_HCA_CAP_PKEY_TABLE_SIZE_4K_ENTRIES'}
_anonenum21: dict[int, str] = {(MLX5_CMD_HCA_CAP_PORT_TYPE_IB:=0): 'MLX5_CMD_HCA_CAP_PORT_TYPE_IB', (MLX5_CMD_HCA_CAP_PORT_TYPE_ETHERNET:=1): 'MLX5_CMD_HCA_CAP_PORT_TYPE_ETHERNET'}
_anonenum22: dict[int, str] = {(MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_DISABLED:=0): 'MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_DISABLED', (MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_INITIAL_STATE:=1): 'MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_INITIAL_STATE', (MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_ENABLED:=3): 'MLX5_CMD_HCA_CAP_CMDIF_CHECKSUM_ENABLED'}
_anonenum23: dict[int, str] = {(MLX5_CAP_PORT_TYPE_IB:=0): 'MLX5_CAP_PORT_TYPE_IB', (MLX5_CAP_PORT_TYPE_ETH:=1): 'MLX5_CAP_PORT_TYPE_ETH'}
_anonenum24: dict[int, str] = {(MLX5_CAP_UMR_FENCE_STRONG:=0): 'MLX5_CAP_UMR_FENCE_STRONG', (MLX5_CAP_UMR_FENCE_SMALL:=1): 'MLX5_CAP_UMR_FENCE_SMALL', (MLX5_CAP_UMR_FENCE_NONE:=2): 'MLX5_CAP_UMR_FENCE_NONE'}
_anonenum25: dict[int, str] = {(MLX5_FLEX_IPV4_OVER_VXLAN_ENABLED:=1): 'MLX5_FLEX_IPV4_OVER_VXLAN_ENABLED', (MLX5_FLEX_IPV6_OVER_VXLAN_ENABLED:=2): 'MLX5_FLEX_IPV6_OVER_VXLAN_ENABLED', (MLX5_FLEX_IPV6_OVER_IP_ENABLED:=4): 'MLX5_FLEX_IPV6_OVER_IP_ENABLED', (MLX5_FLEX_PARSER_GENEVE_ENABLED:=8): 'MLX5_FLEX_PARSER_GENEVE_ENABLED', (MLX5_FLEX_PARSER_MPLS_OVER_GRE_ENABLED:=16): 'MLX5_FLEX_PARSER_MPLS_OVER_GRE_ENABLED', (MLX5_FLEX_PARSER_MPLS_OVER_UDP_ENABLED:=32): 'MLX5_FLEX_PARSER_MPLS_OVER_UDP_ENABLED', (MLX5_FLEX_P_BIT_VXLAN_GPE_ENABLED:=64): 'MLX5_FLEX_P_BIT_VXLAN_GPE_ENABLED', (MLX5_FLEX_PARSER_VXLAN_GPE_ENABLED:=128): 'MLX5_FLEX_PARSER_VXLAN_GPE_ENABLED', (MLX5_FLEX_PARSER_ICMP_V4_ENABLED:=256): 'MLX5_FLEX_PARSER_ICMP_V4_ENABLED', (MLX5_FLEX_PARSER_ICMP_V6_ENABLED:=512): 'MLX5_FLEX_PARSER_ICMP_V6_ENABLED', (MLX5_FLEX_PARSER_GENEVE_TLV_OPTION_0_ENABLED:=1024): 'MLX5_FLEX_PARSER_GENEVE_TLV_OPTION_0_ENABLED', (MLX5_FLEX_PARSER_GTPU_ENABLED:=2048): 'MLX5_FLEX_PARSER_GTPU_ENABLED', (MLX5_FLEX_PARSER_GTPU_DW_2_ENABLED:=65536): 'MLX5_FLEX_PARSER_GTPU_DW_2_ENABLED', (MLX5_FLEX_PARSER_GTPU_FIRST_EXT_DW_0_ENABLED:=131072): 'MLX5_FLEX_PARSER_GTPU_FIRST_EXT_DW_0_ENABLED', (MLX5_FLEX_PARSER_GTPU_DW_0_ENABLED:=262144): 'MLX5_FLEX_PARSER_GTPU_DW_0_ENABLED', (MLX5_FLEX_PARSER_GTPU_TEID_ENABLED:=524288): 'MLX5_FLEX_PARSER_GTPU_TEID_ENABLED'}
_anonenum26: dict[int, str] = {(MLX5_UCTX_CAP_RAW_TX:=1): 'MLX5_UCTX_CAP_RAW_TX', (MLX5_UCTX_CAP_INTERNAL_DEV_RES:=2): 'MLX5_UCTX_CAP_INTERNAL_DEV_RES', (MLX5_UCTX_CAP_RDMA_CTRL:=8): 'MLX5_UCTX_CAP_RDMA_CTRL', (MLX5_UCTX_CAP_RDMA_CTRL_OTHER_VHCA:=16): 'MLX5_UCTX_CAP_RDMA_CTRL_OTHER_VHCA'}
enum_mlx5_fc_bulk_alloc_bitmask: dict[int, str] = {(MLX5_FC_BULK_128:=1): 'MLX5_FC_BULK_128', (MLX5_FC_BULK_256:=2): 'MLX5_FC_BULK_256', (MLX5_FC_BULK_512:=4): 'MLX5_FC_BULK_512', (MLX5_FC_BULK_1024:=8): 'MLX5_FC_BULK_1024', (MLX5_FC_BULK_2048:=16): 'MLX5_FC_BULK_2048', (MLX5_FC_BULK_4096:=32): 'MLX5_FC_BULK_4096', (MLX5_FC_BULK_8192:=64): 'MLX5_FC_BULK_8192', (MLX5_FC_BULK_16384:=128): 'MLX5_FC_BULK_16384'}
_anonenum27: dict[int, str] = {(MLX5_STEERING_FORMAT_CONNECTX_5:=0): 'MLX5_STEERING_FORMAT_CONNECTX_5', (MLX5_STEERING_FORMAT_CONNECTX_6DX:=1): 'MLX5_STEERING_FORMAT_CONNECTX_6DX', (MLX5_STEERING_FORMAT_CONNECTX_7:=2): 'MLX5_STEERING_FORMAT_CONNECTX_7', (MLX5_STEERING_FORMAT_CONNECTX_8:=3): 'MLX5_STEERING_FORMAT_CONNECTX_8'}
@c.record
class struct_mlx5_ifc_cmd_hca_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[6]]
  page_request_disable: c.Array[ctypes.c_ubyte, Literal[1]]
  abs_native_port_num: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[8]]
  shared_object_to_user_object_allowed: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_13: c.Array[ctypes.c_ubyte, Literal[14]]
  vhca_resource_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  hca_cap_2: c.Array[ctypes.c_ubyte, Literal[1]]
  create_lag_when_not_master_up: c.Array[ctypes.c_ubyte, Literal[1]]
  dtor: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vhca_state_teardown_request: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vhca_state_in_use: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vhca_state_active: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vhca_state_allocated: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vhca_state_invalid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[8]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  log_max_srq_sz: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_qp_sz: c.Array[ctypes.c_ubyte, Literal[8]]
  event_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_91: c.Array[ctypes.c_ubyte, Literal[2]]
  isolate_vl_tc_new: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_94: c.Array[ctypes.c_ubyte, Literal[4]]
  prio_tag_required: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_99: c.Array[ctypes.c_ubyte, Literal[2]]
  log_max_qp: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[3]]
  ece_support: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_a4: c.Array[ctypes.c_ubyte, Literal[5]]
  reg_c_preserve: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_aa: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_srq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_b0: c.Array[ctypes.c_ubyte, Literal[1]]
  uplink_follow: c.Array[ctypes.c_ubyte, Literal[1]]
  ts_cqe_to_dest_cqn: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_b3: c.Array[ctypes.c_ubyte, Literal[6]]
  go_back_n: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_ba: c.Array[ctypes.c_ubyte, Literal[6]]
  max_sgl_for_optimized_performance: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_cq_sz: c.Array[ctypes.c_ubyte, Literal[8]]
  relaxed_ordering_write_umr: c.Array[ctypes.c_ubyte, Literal[1]]
  relaxed_ordering_read_umr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_d2: c.Array[ctypes.c_ubyte, Literal[7]]
  virtio_net_device_emualtion_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  virtio_blk_device_emualtion_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_cq: c.Array[ctypes.c_ubyte, Literal[5]]
  log_max_eq_sz: c.Array[ctypes.c_ubyte, Literal[8]]
  relaxed_ordering_write: c.Array[ctypes.c_ubyte, Literal[1]]
  relaxed_ordering_read_pci_enabled: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_mkey: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_f0: c.Array[ctypes.c_ubyte, Literal[6]]
  terminate_scatter_list_mkey: c.Array[ctypes.c_ubyte, Literal[1]]
  repeated_mkey: c.Array[ctypes.c_ubyte, Literal[1]]
  dump_fill_mkey: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f9: c.Array[ctypes.c_ubyte, Literal[2]]
  fast_teardown: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_eq: c.Array[ctypes.c_ubyte, Literal[4]]
  max_indirection: c.Array[ctypes.c_ubyte, Literal[8]]
  fixed_buffer_size: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_mrw_sz: c.Array[ctypes.c_ubyte, Literal[7]]
  force_teardown: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_111: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_bsf_list_size: c.Array[ctypes.c_ubyte, Literal[6]]
  umr_extended_translation_offset: c.Array[ctypes.c_ubyte, Literal[1]]
  null_mkey: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_klm_list_size: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[2]]
  qpc_extension: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_123: c.Array[ctypes.c_ubyte, Literal[7]]
  log_max_ra_req_dc: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_130: c.Array[ctypes.c_ubyte, Literal[2]]
  eth_wqe_too_small: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_133: c.Array[ctypes.c_ubyte, Literal[6]]
  vnic_env_cq_overrun: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_ra_res_dc: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[5]]
  release_all_pages: c.Array[ctypes.c_ubyte, Literal[1]]
  must_not_use: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_147: c.Array[ctypes.c_ubyte, Literal[2]]
  roce_accl: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_ra_req_qp: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_150: c.Array[ctypes.c_ubyte, Literal[10]]
  log_max_ra_res_qp: c.Array[ctypes.c_ubyte, Literal[6]]
  end_pad: c.Array[ctypes.c_ubyte, Literal[1]]
  cc_query_allowed: c.Array[ctypes.c_ubyte, Literal[1]]
  cc_modify_allowed: c.Array[ctypes.c_ubyte, Literal[1]]
  start_pad: c.Array[ctypes.c_ubyte, Literal[1]]
  cache_line_128byte: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_165: c.Array[ctypes.c_ubyte, Literal[4]]
  rts2rts_qp_counters_set_id: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_16a: c.Array[ctypes.c_ubyte, Literal[2]]
  vnic_env_int_rq_oob: c.Array[ctypes.c_ubyte, Literal[1]]
  sbcam_reg: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_16e: c.Array[ctypes.c_ubyte, Literal[1]]
  qcam_reg: c.Array[ctypes.c_ubyte, Literal[1]]
  gid_table_size: c.Array[ctypes.c_ubyte, Literal[16]]
  out_of_seq_cnt: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  retransmission_q_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  debug: c.Array[ctypes.c_ubyte, Literal[1]]
  modify_rq_counter_set_id: c.Array[ctypes.c_ubyte, Literal[1]]
  rq_delay_drop: c.Array[ctypes.c_ubyte, Literal[1]]
  max_qp_cnt: c.Array[ctypes.c_ubyte, Literal[10]]
  pkey_table_size: c.Array[ctypes.c_ubyte, Literal[16]]
  vport_group_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  vhca_group_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  ib_virt: c.Array[ctypes.c_ubyte, Literal[1]]
  eth_virt: c.Array[ctypes.c_ubyte, Literal[1]]
  vnic_env_queue_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  ets: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_flow_table: c.Array[ctypes.c_ubyte, Literal[1]]
  eswitch_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  device_memory: c.Array[ctypes.c_ubyte, Literal[1]]
  mcam_reg: c.Array[ctypes.c_ubyte, Literal[1]]
  pcam_reg: c.Array[ctypes.c_ubyte, Literal[1]]
  local_ca_ack_delay: c.Array[ctypes.c_ubyte, Literal[5]]
  port_module_event: c.Array[ctypes.c_ubyte, Literal[1]]
  enhanced_error_q_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  ports_check: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1b3: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_link_up: c.Array[ctypes.c_ubyte, Literal[1]]
  beacon_led: c.Array[ctypes.c_ubyte, Literal[1]]
  port_type: c.Array[ctypes.c_ubyte, Literal[2]]
  num_ports: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[1]]
  pps: c.Array[ctypes.c_ubyte, Literal[1]]
  pps_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_msg: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_1c8: c.Array[ctypes.c_ubyte, Literal[4]]
  max_tc: c.Array[ctypes.c_ubyte, Literal[4]]
  temp_warn_event: c.Array[ctypes.c_ubyte, Literal[1]]
  dcbx: c.Array[ctypes.c_ubyte, Literal[1]]
  general_notification_event: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1d3: c.Array[ctypes.c_ubyte, Literal[2]]
  fpga: c.Array[ctypes.c_ubyte, Literal[1]]
  rol_s: c.Array[ctypes.c_ubyte, Literal[1]]
  rol_g: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1d8: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_s: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_g: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_a: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_b: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_m: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_u: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_p: c.Array[ctypes.c_ubyte, Literal[1]]
  stat_rate_support: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_1f0: c.Array[ctypes.c_ubyte, Literal[1]]
  pci_sync_for_fw_update_event: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1f2: c.Array[ctypes.c_ubyte, Literal[6]]
  init2_lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1fa: c.Array[ctypes.c_ubyte, Literal[2]]
  wqe_based_flow_table_update_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_version: c.Array[ctypes.c_ubyte, Literal[4]]
  compact_address_vector: c.Array[ctypes.c_ubyte, Literal[1]]
  striding_rq: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_202: c.Array[ctypes.c_ubyte, Literal[1]]
  ipoib_enhanced_offloads: c.Array[ctypes.c_ubyte, Literal[1]]
  ipoib_basic_offloads: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_205: c.Array[ctypes.c_ubyte, Literal[1]]
  repeated_block_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_modify_entity_size_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_modify_atomic_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_indirect_mkey_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_fence: c.Array[ctypes.c_ubyte, Literal[2]]
  dc_req_scat_data_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_20d: c.Array[ctypes.c_ubyte, Literal[2]]
  drain_sigerr: c.Array[ctypes.c_ubyte, Literal[1]]
  cmdif_checksum: c.Array[ctypes.c_ubyte, Literal[2]]
  sigerr_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_213: c.Array[ctypes.c_ubyte, Literal[1]]
  wq_signature: c.Array[ctypes.c_ubyte, Literal[1]]
  sctr_data_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_216: c.Array[ctypes.c_ubyte, Literal[1]]
  sho: c.Array[ctypes.c_ubyte, Literal[1]]
  tph: c.Array[ctypes.c_ubyte, Literal[1]]
  rf: c.Array[ctypes.c_ubyte, Literal[1]]
  dct: c.Array[ctypes.c_ubyte, Literal[1]]
  qos: c.Array[ctypes.c_ubyte, Literal[1]]
  eth_net_offloads: c.Array[ctypes.c_ubyte, Literal[1]]
  roce: c.Array[ctypes.c_ubyte, Literal[1]]
  atomic: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21f: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_oi: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_resize: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_moderation: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_period_mode_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_224: c.Array[ctypes.c_ubyte, Literal[2]]
  cq_eq_remap: c.Array[ctypes.c_ubyte, Literal[1]]
  pg: c.Array[ctypes.c_ubyte, Literal[1]]
  block_lb_mc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_229: c.Array[ctypes.c_ubyte, Literal[1]]
  scqe_break_moderation: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_period_start_from_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  cd: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22d: c.Array[ctypes.c_ubyte, Literal[1]]
  apm: c.Array[ctypes.c_ubyte, Literal[1]]
  vector_calc: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_ptr_rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  imaicl: c.Array[ctypes.c_ubyte, Literal[1]]
  qp_packet_based: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_233: c.Array[ctypes.c_ubyte, Literal[3]]
  qkv: c.Array[ctypes.c_ubyte, Literal[1]]
  pkv: c.Array[ctypes.c_ubyte, Literal[1]]
  set_deth_sqpn: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_239: c.Array[ctypes.c_ubyte, Literal[3]]
  xrc: c.Array[ctypes.c_ubyte, Literal[1]]
  ud: c.Array[ctypes.c_ubyte, Literal[1]]
  uc: c.Array[ctypes.c_ubyte, Literal[1]]
  rc: c.Array[ctypes.c_ubyte, Literal[1]]
  uar_4k: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_241: c.Array[ctypes.c_ubyte, Literal[7]]
  fl_rc_qp_when_roce_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  regexp_params: c.Array[ctypes.c_ubyte, Literal[1]]
  uar_sz: c.Array[ctypes.c_ubyte, Literal[6]]
  port_selection_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  nic_cap_reg: c.Array[ctypes.c_ubyte, Literal[1]]
  umem_uid_0: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_253: c.Array[ctypes.c_ubyte, Literal[5]]
  log_pg_sz: c.Array[ctypes.c_ubyte, Literal[8]]
  bf: c.Array[ctypes.c_ubyte, Literal[1]]
  driver_version: c.Array[ctypes.c_ubyte, Literal[1]]
  pad_tx_eth_packet: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_263: c.Array[ctypes.c_ubyte, Literal[3]]
  mkey_by_name: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_267: c.Array[ctypes.c_ubyte, Literal[4]]
  log_bf_reg_size: c.Array[ctypes.c_ubyte, Literal[5]]
  disciplined_fr_counter: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_271: c.Array[ctypes.c_ubyte, Literal[2]]
  qp_error_syndrome: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_274: c.Array[ctypes.c_ubyte, Literal[2]]
  lag_dct: c.Array[ctypes.c_ubyte, Literal[2]]
  lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  lag_native_fdb_selection: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_27a: c.Array[ctypes.c_ubyte, Literal[1]]
  lag_master: c.Array[ctypes.c_ubyte, Literal[1]]
  num_lag_ports: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[16]]
  max_wqe_sz_sq: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_2a0: c.Array[ctypes.c_ubyte, Literal[7]]
  mkey_pcie_tph: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2a8: c.Array[ctypes.c_ubyte, Literal[1]]
  tis_tir_td_order: c.Array[ctypes.c_ubyte, Literal[1]]
  psp: c.Array[ctypes.c_ubyte, Literal[1]]
  shampo: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2ac: c.Array[ctypes.c_ubyte, Literal[4]]
  max_wqe_sz_rq: c.Array[ctypes.c_ubyte, Literal[16]]
  max_flow_counter_31_16: c.Array[ctypes.c_ubyte, Literal[16]]
  max_wqe_sz_sq_dc: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_2e0: c.Array[ctypes.c_ubyte, Literal[7]]
  max_qp_mcg: c.Array[ctypes.c_ubyte, Literal[25]]
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[16]]
  flow_counter_bulk_alloc: c.Array[ctypes.c_ubyte, Literal[8]]
  log_max_mcg: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_320: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_transport_domain: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_328: c.Array[ctypes.c_ubyte, Literal[2]]
  relaxed_ordering_read: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_pd: c.Array[ctypes.c_ubyte, Literal[5]]
  dp_ordering_ooo_all_ud: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_ooo_all_uc: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_ooo_all_xrc: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_ooo_all_dc: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_ooo_all_rc: c.Array[ctypes.c_ubyte, Literal[1]]
  pcie_reset_using_hotreset_method: c.Array[ctypes.c_ubyte, Literal[1]]
  pci_sync_for_fw_update_with_driver_unload: c.Array[ctypes.c_ubyte, Literal[1]]
  vnic_env_cnt_steering_fail: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_counter_local_loopback: c.Array[ctypes.c_ubyte, Literal[1]]
  q_counter_aggregation: c.Array[ctypes.c_ubyte, Literal[1]]
  q_counter_other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_xrcd: c.Array[ctypes.c_ubyte, Literal[5]]
  nic_receive_steering_discard: c.Array[ctypes.c_ubyte, Literal[1]]
  receive_discard_vport_down: c.Array[ctypes.c_ubyte, Literal[1]]
  transmit_discard_vport_down: c.Array[ctypes.c_ubyte, Literal[1]]
  eq_overrun_count: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_344: c.Array[ctypes.c_ubyte, Literal[1]]
  invalid_command_count: c.Array[ctypes.c_ubyte, Literal[1]]
  quota_exceeded_count: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_347: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_flow_counter_bulk: c.Array[ctypes.c_ubyte, Literal[8]]
  max_flow_counter_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_360: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_rq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_368: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_sq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_370: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_tir: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_378: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_tis: c.Array[ctypes.c_ubyte, Literal[5]]
  basic_cyclic_rcv_wqe: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_381: c.Array[ctypes.c_ubyte, Literal[2]]
  log_max_rmp: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_388: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_rqt: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_390: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_rqt_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_398: c.Array[ctypes.c_ubyte, Literal[1]]
  vnic_env_cnt_bar_uar_access: c.Array[ctypes.c_ubyte, Literal[1]]
  vnic_env_cnt_odp_page_fault: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_tis_per_sq: c.Array[ctypes.c_ubyte, Literal[5]]
  ext_stride_num_range: c.Array[ctypes.c_ubyte, Literal[1]]
  roce_rw_supported: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_current_uc_list_wr_supported: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_stride_sz_rq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3a8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_min_stride_sz_rq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3b0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_stride_sz_sq: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3b8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_min_stride_sz_sq: c.Array[ctypes.c_ubyte, Literal[5]]
  hairpin: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3c1: c.Array[ctypes.c_ubyte, Literal[2]]
  log_max_hairpin_queues: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3c8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_hairpin_wq_data_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3d0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_hairpin_num_packets: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3d8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_wq_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  nic_vport_change_event: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_local_lb_uc: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_local_lb_mc: c.Array[ctypes.c_ubyte, Literal[1]]
  log_min_hairpin_wq_data_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3e8: c.Array[ctypes.c_ubyte, Literal[1]]
  silent_mode: c.Array[ctypes.c_ubyte, Literal[1]]
  vhca_state: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_vlan_list: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3f0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_current_mc_list: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3f8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_current_uc_list: c.Array[ctypes.c_ubyte, Literal[5]]
  general_obj_types: c.Array[ctypes.c_ubyte, Literal[64]]
  sq_ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  rq_ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  steering_format_version: c.Array[ctypes.c_ubyte, Literal[4]]
  create_qp_start_hint: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_460: c.Array[ctypes.c_ubyte, Literal[1]]
  ats: c.Array[ctypes.c_ubyte, Literal[1]]
  cross_vhca_rqt: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_uctx: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_468: c.Array[ctypes.c_ubyte, Literal[1]]
  crypto: c.Array[ctypes.c_ubyte, Literal[1]]
  ipsec_offload: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_umem: c.Array[ctypes.c_ubyte, Literal[5]]
  max_num_eqs: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_480: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_tx: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_rx: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_l2_table: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_488: c.Array[ctypes.c_ubyte, Literal[8]]
  log_uar_page_sz: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_4a0: c.Array[ctypes.c_ubyte, Literal[32]]
  device_frequency_mhz: c.Array[ctypes.c_ubyte, Literal[32]]
  device_frequency_khz: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_500: c.Array[ctypes.c_ubyte, Literal[32]]
  num_of_uars_per_page: c.Array[ctypes.c_ubyte, Literal[32]]
  flex_parser_protocols: c.Array[ctypes.c_ubyte, Literal[32]]
  max_geneve_tlv_options: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_568: c.Array[ctypes.c_ubyte, Literal[3]]
  max_geneve_tlv_option_data_len: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_570: c.Array[ctypes.c_ubyte, Literal[1]]
  adv_rdma: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_572: c.Array[ctypes.c_ubyte, Literal[7]]
  adv_virtualization: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_57a: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_580: c.Array[ctypes.c_ubyte, Literal[11]]
  log_max_dci_stream_channels: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_590: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_dci_errored_streams: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_598: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_5a0: c.Array[ctypes.c_ubyte, Literal[16]]
  enhanced_cqe_compression: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5b1: c.Array[ctypes.c_ubyte, Literal[1]]
  crossing_vhca_mkey: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_dek: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_5b8: c.Array[ctypes.c_ubyte, Literal[4]]
  mini_cqe_resp_stride_index: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_128_always: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_compression_128: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_compression: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_compression_timeout: c.Array[ctypes.c_ubyte, Literal[16]]
  cqe_compression_max_num: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_5e0: c.Array[ctypes.c_ubyte, Literal[8]]
  flex_parser_id_gtpu_dw_0: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_5ec: c.Array[ctypes.c_ubyte, Literal[4]]
  tag_matching: c.Array[ctypes.c_ubyte, Literal[1]]
  rndv_offload_rc: c.Array[ctypes.c_ubyte, Literal[1]]
  rndv_offload_dc: c.Array[ctypes.c_ubyte, Literal[1]]
  log_tag_matching_list_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_5f8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_xrq: c.Array[ctypes.c_ubyte, Literal[5]]
  affiliate_nic_vport_criteria: c.Array[ctypes.c_ubyte, Literal[8]]
  native_port_num: c.Array[ctypes.c_ubyte, Literal[8]]
  num_vhca_ports: c.Array[ctypes.c_ubyte, Literal[8]]
  flex_parser_id_gtpu_teid: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_61c: c.Array[ctypes.c_ubyte, Literal[2]]
  sw_owner_id: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_61f: c.Array[ctypes.c_ubyte, Literal[1]]
  max_num_of_monitor_counters: c.Array[ctypes.c_ubyte, Literal[16]]
  num_ppcnt_monitor_counters: c.Array[ctypes.c_ubyte, Literal[16]]
  max_num_sf: c.Array[ctypes.c_ubyte, Literal[16]]
  num_q_monitor_counters: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_660: c.Array[ctypes.c_ubyte, Literal[32]]
  sf: c.Array[ctypes.c_ubyte, Literal[1]]
  sf_set_partition: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_682: c.Array[ctypes.c_ubyte, Literal[1]]
  log_max_sf: c.Array[ctypes.c_ubyte, Literal[5]]
  apu: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_689: c.Array[ctypes.c_ubyte, Literal[4]]
  migration: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_68e: c.Array[ctypes.c_ubyte, Literal[2]]
  log_min_sf_size: c.Array[ctypes.c_ubyte, Literal[8]]
  max_num_sf_partitions: c.Array[ctypes.c_ubyte, Literal[8]]
  uctx_cap: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_6c0: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_geneve_tlv_option_0: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_icmp_dw1: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_icmp_dw0: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_icmpv6_dw1: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_icmpv6_dw0: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_outer_first_mpls_over_gre: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_outer_first_mpls_over_udp_label: c.Array[ctypes.c_ubyte, Literal[4]]
  max_num_match_definer: c.Array[ctypes.c_ubyte, Literal[16]]
  sf_base_id: c.Array[ctypes.c_ubyte, Literal[16]]
  flex_parser_id_gtpu_dw_2: c.Array[ctypes.c_ubyte, Literal[4]]
  flex_parser_id_gtpu_first_ext_dw_0: c.Array[ctypes.c_ubyte, Literal[4]]
  num_total_dynamic_vf_msix: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_720: c.Array[ctypes.c_ubyte, Literal[20]]
  dynamic_msix_table_size: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_740: c.Array[ctypes.c_ubyte, Literal[12]]
  min_dynamic_vf_msix_table_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_750: c.Array[ctypes.c_ubyte, Literal[2]]
  data_direct: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_753: c.Array[ctypes.c_ubyte, Literal[1]]
  max_dynamic_vf_msix_table_size: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_760: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_header_modify_argument: c.Array[ctypes.c_ubyte, Literal[5]]
  log_header_modify_argument_granularity_offset: c.Array[ctypes.c_ubyte, Literal[4]]
  log_header_modify_argument_granularity: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_770: c.Array[ctypes.c_ubyte, Literal[3]]
  log_header_modify_argument_max_alloc: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_778: c.Array[ctypes.c_ubyte, Literal[8]]
  vhca_tunnel_commands: c.Array[ctypes.c_ubyte, Literal[64]]
  match_definer_format_supported: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_cmd_hca_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[6]], 0), ('page_request_disable', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('abs_native_port_num', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('shared_object_to_user_object_allowed', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_13', c.Array[ctypes.c_ubyte, Literal[14]], 17), ('vhca_resource_manager', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('hca_cap_2', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('create_lag_when_not_master_up', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('dtor', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('event_on_vhca_state_teardown_request', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('event_on_vhca_state_in_use', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('event_on_vhca_state_active', c.Array[ctypes.c_ubyte, Literal[1]], 37), ('event_on_vhca_state_allocated', c.Array[ctypes.c_ubyte, Literal[1]], 38), ('event_on_vhca_state_invalid', c.Array[ctypes.c_ubyte, Literal[1]], 39), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('log_max_srq_sz', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('log_max_qp_sz', c.Array[ctypes.c_ubyte, Literal[8]], 136), ('event_cap', c.Array[ctypes.c_ubyte, Literal[1]], 144), ('reserved_at_91', c.Array[ctypes.c_ubyte, Literal[2]], 145), ('isolate_vl_tc_new', c.Array[ctypes.c_ubyte, Literal[1]], 147), ('reserved_at_94', c.Array[ctypes.c_ubyte, Literal[4]], 148), ('prio_tag_required', c.Array[ctypes.c_ubyte, Literal[1]], 152), ('reserved_at_99', c.Array[ctypes.c_ubyte, Literal[2]], 153), ('log_max_qp', c.Array[ctypes.c_ubyte, Literal[5]], 155), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[3]], 160), ('ece_support', c.Array[ctypes.c_ubyte, Literal[1]], 163), ('reserved_at_a4', c.Array[ctypes.c_ubyte, Literal[5]], 164), ('reg_c_preserve', c.Array[ctypes.c_ubyte, Literal[1]], 169), ('reserved_at_aa', c.Array[ctypes.c_ubyte, Literal[1]], 170), ('log_max_srq', c.Array[ctypes.c_ubyte, Literal[5]], 171), ('reserved_at_b0', c.Array[ctypes.c_ubyte, Literal[1]], 176), ('uplink_follow', c.Array[ctypes.c_ubyte, Literal[1]], 177), ('ts_cqe_to_dest_cqn', c.Array[ctypes.c_ubyte, Literal[1]], 178), ('reserved_at_b3', c.Array[ctypes.c_ubyte, Literal[6]], 179), ('go_back_n', c.Array[ctypes.c_ubyte, Literal[1]], 185), ('reserved_at_ba', c.Array[ctypes.c_ubyte, Literal[6]], 186), ('max_sgl_for_optimized_performance', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('log_max_cq_sz', c.Array[ctypes.c_ubyte, Literal[8]], 200), ('relaxed_ordering_write_umr', c.Array[ctypes.c_ubyte, Literal[1]], 208), ('relaxed_ordering_read_umr', c.Array[ctypes.c_ubyte, Literal[1]], 209), ('reserved_at_d2', c.Array[ctypes.c_ubyte, Literal[7]], 210), ('virtio_net_device_emualtion_manager', c.Array[ctypes.c_ubyte, Literal[1]], 217), ('virtio_blk_device_emualtion_manager', c.Array[ctypes.c_ubyte, Literal[1]], 218), ('log_max_cq', c.Array[ctypes.c_ubyte, Literal[5]], 219), ('log_max_eq_sz', c.Array[ctypes.c_ubyte, Literal[8]], 224), ('relaxed_ordering_write', c.Array[ctypes.c_ubyte, Literal[1]], 232), ('relaxed_ordering_read_pci_enabled', c.Array[ctypes.c_ubyte, Literal[1]], 233), ('log_max_mkey', c.Array[ctypes.c_ubyte, Literal[6]], 234), ('reserved_at_f0', c.Array[ctypes.c_ubyte, Literal[6]], 240), ('terminate_scatter_list_mkey', c.Array[ctypes.c_ubyte, Literal[1]], 246), ('repeated_mkey', c.Array[ctypes.c_ubyte, Literal[1]], 247), ('dump_fill_mkey', c.Array[ctypes.c_ubyte, Literal[1]], 248), ('reserved_at_f9', c.Array[ctypes.c_ubyte, Literal[2]], 249), ('fast_teardown', c.Array[ctypes.c_ubyte, Literal[1]], 251), ('log_max_eq', c.Array[ctypes.c_ubyte, Literal[4]], 252), ('max_indirection', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('fixed_buffer_size', c.Array[ctypes.c_ubyte, Literal[1]], 264), ('log_max_mrw_sz', c.Array[ctypes.c_ubyte, Literal[7]], 265), ('force_teardown', c.Array[ctypes.c_ubyte, Literal[1]], 272), ('reserved_at_111', c.Array[ctypes.c_ubyte, Literal[1]], 273), ('log_max_bsf_list_size', c.Array[ctypes.c_ubyte, Literal[6]], 274), ('umr_extended_translation_offset', c.Array[ctypes.c_ubyte, Literal[1]], 280), ('null_mkey', c.Array[ctypes.c_ubyte, Literal[1]], 281), ('log_max_klm_list_size', c.Array[ctypes.c_ubyte, Literal[6]], 282), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[2]], 288), ('qpc_extension', c.Array[ctypes.c_ubyte, Literal[1]], 290), ('reserved_at_123', c.Array[ctypes.c_ubyte, Literal[7]], 291), ('log_max_ra_req_dc', c.Array[ctypes.c_ubyte, Literal[6]], 298), ('reserved_at_130', c.Array[ctypes.c_ubyte, Literal[2]], 304), ('eth_wqe_too_small', c.Array[ctypes.c_ubyte, Literal[1]], 306), ('reserved_at_133', c.Array[ctypes.c_ubyte, Literal[6]], 307), ('vnic_env_cq_overrun', c.Array[ctypes.c_ubyte, Literal[1]], 313), ('log_max_ra_res_dc', c.Array[ctypes.c_ubyte, Literal[6]], 314), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[5]], 320), ('release_all_pages', c.Array[ctypes.c_ubyte, Literal[1]], 325), ('must_not_use', c.Array[ctypes.c_ubyte, Literal[1]], 326), ('reserved_at_147', c.Array[ctypes.c_ubyte, Literal[2]], 327), ('roce_accl', c.Array[ctypes.c_ubyte, Literal[1]], 329), ('log_max_ra_req_qp', c.Array[ctypes.c_ubyte, Literal[6]], 330), ('reserved_at_150', c.Array[ctypes.c_ubyte, Literal[10]], 336), ('log_max_ra_res_qp', c.Array[ctypes.c_ubyte, Literal[6]], 346), ('end_pad', c.Array[ctypes.c_ubyte, Literal[1]], 352), ('cc_query_allowed', c.Array[ctypes.c_ubyte, Literal[1]], 353), ('cc_modify_allowed', c.Array[ctypes.c_ubyte, Literal[1]], 354), ('start_pad', c.Array[ctypes.c_ubyte, Literal[1]], 355), ('cache_line_128byte', c.Array[ctypes.c_ubyte, Literal[1]], 356), ('reserved_at_165', c.Array[ctypes.c_ubyte, Literal[4]], 357), ('rts2rts_qp_counters_set_id', c.Array[ctypes.c_ubyte, Literal[1]], 361), ('reserved_at_16a', c.Array[ctypes.c_ubyte, Literal[2]], 362), ('vnic_env_int_rq_oob', c.Array[ctypes.c_ubyte, Literal[1]], 364), ('sbcam_reg', c.Array[ctypes.c_ubyte, Literal[1]], 365), ('reserved_at_16e', c.Array[ctypes.c_ubyte, Literal[1]], 366), ('qcam_reg', c.Array[ctypes.c_ubyte, Literal[1]], 367), ('gid_table_size', c.Array[ctypes.c_ubyte, Literal[16]], 368), ('out_of_seq_cnt', c.Array[ctypes.c_ubyte, Literal[1]], 384), ('vport_counters', c.Array[ctypes.c_ubyte, Literal[1]], 385), ('retransmission_q_counters', c.Array[ctypes.c_ubyte, Literal[1]], 386), ('debug', c.Array[ctypes.c_ubyte, Literal[1]], 387), ('modify_rq_counter_set_id', c.Array[ctypes.c_ubyte, Literal[1]], 388), ('rq_delay_drop', c.Array[ctypes.c_ubyte, Literal[1]], 389), ('max_qp_cnt', c.Array[ctypes.c_ubyte, Literal[10]], 390), ('pkey_table_size', c.Array[ctypes.c_ubyte, Literal[16]], 400), ('vport_group_manager', c.Array[ctypes.c_ubyte, Literal[1]], 416), ('vhca_group_manager', c.Array[ctypes.c_ubyte, Literal[1]], 417), ('ib_virt', c.Array[ctypes.c_ubyte, Literal[1]], 418), ('eth_virt', c.Array[ctypes.c_ubyte, Literal[1]], 419), ('vnic_env_queue_counters', c.Array[ctypes.c_ubyte, Literal[1]], 420), ('ets', c.Array[ctypes.c_ubyte, Literal[1]], 421), ('nic_flow_table', c.Array[ctypes.c_ubyte, Literal[1]], 422), ('eswitch_manager', c.Array[ctypes.c_ubyte, Literal[1]], 423), ('device_memory', c.Array[ctypes.c_ubyte, Literal[1]], 424), ('mcam_reg', c.Array[ctypes.c_ubyte, Literal[1]], 425), ('pcam_reg', c.Array[ctypes.c_ubyte, Literal[1]], 426), ('local_ca_ack_delay', c.Array[ctypes.c_ubyte, Literal[5]], 427), ('port_module_event', c.Array[ctypes.c_ubyte, Literal[1]], 432), ('enhanced_error_q_counters', c.Array[ctypes.c_ubyte, Literal[1]], 433), ('ports_check', c.Array[ctypes.c_ubyte, Literal[1]], 434), ('reserved_at_1b3', c.Array[ctypes.c_ubyte, Literal[1]], 435), ('disable_link_up', c.Array[ctypes.c_ubyte, Literal[1]], 436), ('beacon_led', c.Array[ctypes.c_ubyte, Literal[1]], 437), ('port_type', c.Array[ctypes.c_ubyte, Literal[2]], 438), ('num_ports', c.Array[ctypes.c_ubyte, Literal[8]], 440), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[1]], 448), ('pps', c.Array[ctypes.c_ubyte, Literal[1]], 449), ('pps_modify', c.Array[ctypes.c_ubyte, Literal[1]], 450), ('log_max_msg', c.Array[ctypes.c_ubyte, Literal[5]], 451), ('reserved_at_1c8', c.Array[ctypes.c_ubyte, Literal[4]], 456), ('max_tc', c.Array[ctypes.c_ubyte, Literal[4]], 460), ('temp_warn_event', c.Array[ctypes.c_ubyte, Literal[1]], 464), ('dcbx', c.Array[ctypes.c_ubyte, Literal[1]], 465), ('general_notification_event', c.Array[ctypes.c_ubyte, Literal[1]], 466), ('reserved_at_1d3', c.Array[ctypes.c_ubyte, Literal[2]], 467), ('fpga', c.Array[ctypes.c_ubyte, Literal[1]], 469), ('rol_s', c.Array[ctypes.c_ubyte, Literal[1]], 470), ('rol_g', c.Array[ctypes.c_ubyte, Literal[1]], 471), ('reserved_at_1d8', c.Array[ctypes.c_ubyte, Literal[1]], 472), ('wol_s', c.Array[ctypes.c_ubyte, Literal[1]], 473), ('wol_g', c.Array[ctypes.c_ubyte, Literal[1]], 474), ('wol_a', c.Array[ctypes.c_ubyte, Literal[1]], 475), ('wol_b', c.Array[ctypes.c_ubyte, Literal[1]], 476), ('wol_m', c.Array[ctypes.c_ubyte, Literal[1]], 477), ('wol_u', c.Array[ctypes.c_ubyte, Literal[1]], 478), ('wol_p', c.Array[ctypes.c_ubyte, Literal[1]], 479), ('stat_rate_support', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('reserved_at_1f0', c.Array[ctypes.c_ubyte, Literal[1]], 496), ('pci_sync_for_fw_update_event', c.Array[ctypes.c_ubyte, Literal[1]], 497), ('reserved_at_1f2', c.Array[ctypes.c_ubyte, Literal[6]], 498), ('init2_lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 504), ('reserved_at_1fa', c.Array[ctypes.c_ubyte, Literal[2]], 505), ('wqe_based_flow_table_update_cap', c.Array[ctypes.c_ubyte, Literal[1]], 507), ('cqe_version', c.Array[ctypes.c_ubyte, Literal[4]], 508), ('compact_address_vector', c.Array[ctypes.c_ubyte, Literal[1]], 512), ('striding_rq', c.Array[ctypes.c_ubyte, Literal[1]], 513), ('reserved_at_202', c.Array[ctypes.c_ubyte, Literal[1]], 514), ('ipoib_enhanced_offloads', c.Array[ctypes.c_ubyte, Literal[1]], 515), ('ipoib_basic_offloads', c.Array[ctypes.c_ubyte, Literal[1]], 516), ('reserved_at_205', c.Array[ctypes.c_ubyte, Literal[1]], 517), ('repeated_block_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 518), ('umr_modify_entity_size_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 519), ('umr_modify_atomic_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 520), ('umr_indirect_mkey_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 521), ('umr_fence', c.Array[ctypes.c_ubyte, Literal[2]], 522), ('dc_req_scat_data_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 524), ('reserved_at_20d', c.Array[ctypes.c_ubyte, Literal[2]], 525), ('drain_sigerr', c.Array[ctypes.c_ubyte, Literal[1]], 527), ('cmdif_checksum', c.Array[ctypes.c_ubyte, Literal[2]], 528), ('sigerr_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 530), ('reserved_at_213', c.Array[ctypes.c_ubyte, Literal[1]], 531), ('wq_signature', c.Array[ctypes.c_ubyte, Literal[1]], 532), ('sctr_data_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 533), ('reserved_at_216', c.Array[ctypes.c_ubyte, Literal[1]], 534), ('sho', c.Array[ctypes.c_ubyte, Literal[1]], 535), ('tph', c.Array[ctypes.c_ubyte, Literal[1]], 536), ('rf', c.Array[ctypes.c_ubyte, Literal[1]], 537), ('dct', c.Array[ctypes.c_ubyte, Literal[1]], 538), ('qos', c.Array[ctypes.c_ubyte, Literal[1]], 539), ('eth_net_offloads', c.Array[ctypes.c_ubyte, Literal[1]], 540), ('roce', c.Array[ctypes.c_ubyte, Literal[1]], 541), ('atomic', c.Array[ctypes.c_ubyte, Literal[1]], 542), ('reserved_at_21f', c.Array[ctypes.c_ubyte, Literal[1]], 543), ('cq_oi', c.Array[ctypes.c_ubyte, Literal[1]], 544), ('cq_resize', c.Array[ctypes.c_ubyte, Literal[1]], 545), ('cq_moderation', c.Array[ctypes.c_ubyte, Literal[1]], 546), ('cq_period_mode_modify', c.Array[ctypes.c_ubyte, Literal[1]], 547), ('reserved_at_224', c.Array[ctypes.c_ubyte, Literal[2]], 548), ('cq_eq_remap', c.Array[ctypes.c_ubyte, Literal[1]], 550), ('pg', c.Array[ctypes.c_ubyte, Literal[1]], 551), ('block_lb_mc', c.Array[ctypes.c_ubyte, Literal[1]], 552), ('reserved_at_229', c.Array[ctypes.c_ubyte, Literal[1]], 553), ('scqe_break_moderation', c.Array[ctypes.c_ubyte, Literal[1]], 554), ('cq_period_start_from_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 555), ('cd', c.Array[ctypes.c_ubyte, Literal[1]], 556), ('reserved_at_22d', c.Array[ctypes.c_ubyte, Literal[1]], 557), ('apm', c.Array[ctypes.c_ubyte, Literal[1]], 558), ('vector_calc', c.Array[ctypes.c_ubyte, Literal[1]], 559), ('umr_ptr_rlky', c.Array[ctypes.c_ubyte, Literal[1]], 560), ('imaicl', c.Array[ctypes.c_ubyte, Literal[1]], 561), ('qp_packet_based', c.Array[ctypes.c_ubyte, Literal[1]], 562), ('reserved_at_233', c.Array[ctypes.c_ubyte, Literal[3]], 563), ('qkv', c.Array[ctypes.c_ubyte, Literal[1]], 566), ('pkv', c.Array[ctypes.c_ubyte, Literal[1]], 567), ('set_deth_sqpn', c.Array[ctypes.c_ubyte, Literal[1]], 568), ('reserved_at_239', c.Array[ctypes.c_ubyte, Literal[3]], 569), ('xrc', c.Array[ctypes.c_ubyte, Literal[1]], 572), ('ud', c.Array[ctypes.c_ubyte, Literal[1]], 573), ('uc', c.Array[ctypes.c_ubyte, Literal[1]], 574), ('rc', c.Array[ctypes.c_ubyte, Literal[1]], 575), ('uar_4k', c.Array[ctypes.c_ubyte, Literal[1]], 576), ('reserved_at_241', c.Array[ctypes.c_ubyte, Literal[7]], 577), ('fl_rc_qp_when_roce_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 584), ('regexp_params', c.Array[ctypes.c_ubyte, Literal[1]], 585), ('uar_sz', c.Array[ctypes.c_ubyte, Literal[6]], 586), ('port_selection_cap', c.Array[ctypes.c_ubyte, Literal[1]], 592), ('nic_cap_reg', c.Array[ctypes.c_ubyte, Literal[1]], 593), ('umem_uid_0', c.Array[ctypes.c_ubyte, Literal[1]], 594), ('reserved_at_253', c.Array[ctypes.c_ubyte, Literal[5]], 595), ('log_pg_sz', c.Array[ctypes.c_ubyte, Literal[8]], 600), ('bf', c.Array[ctypes.c_ubyte, Literal[1]], 608), ('driver_version', c.Array[ctypes.c_ubyte, Literal[1]], 609), ('pad_tx_eth_packet', c.Array[ctypes.c_ubyte, Literal[1]], 610), ('reserved_at_263', c.Array[ctypes.c_ubyte, Literal[3]], 611), ('mkey_by_name', c.Array[ctypes.c_ubyte, Literal[1]], 614), ('reserved_at_267', c.Array[ctypes.c_ubyte, Literal[4]], 615), ('log_bf_reg_size', c.Array[ctypes.c_ubyte, Literal[5]], 619), ('disciplined_fr_counter', c.Array[ctypes.c_ubyte, Literal[1]], 624), ('reserved_at_271', c.Array[ctypes.c_ubyte, Literal[2]], 625), ('qp_error_syndrome', c.Array[ctypes.c_ubyte, Literal[1]], 627), ('reserved_at_274', c.Array[ctypes.c_ubyte, Literal[2]], 628), ('lag_dct', c.Array[ctypes.c_ubyte, Literal[2]], 630), ('lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 632), ('lag_native_fdb_selection', c.Array[ctypes.c_ubyte, Literal[1]], 633), ('reserved_at_27a', c.Array[ctypes.c_ubyte, Literal[1]], 634), ('lag_master', c.Array[ctypes.c_ubyte, Literal[1]], 635), ('num_lag_ports', c.Array[ctypes.c_ubyte, Literal[4]], 636), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[16]], 640), ('max_wqe_sz_sq', c.Array[ctypes.c_ubyte, Literal[16]], 656), ('reserved_at_2a0', c.Array[ctypes.c_ubyte, Literal[7]], 672), ('mkey_pcie_tph', c.Array[ctypes.c_ubyte, Literal[1]], 679), ('reserved_at_2a8', c.Array[ctypes.c_ubyte, Literal[1]], 680), ('tis_tir_td_order', c.Array[ctypes.c_ubyte, Literal[1]], 681), ('psp', c.Array[ctypes.c_ubyte, Literal[1]], 682), ('shampo', c.Array[ctypes.c_ubyte, Literal[1]], 683), ('reserved_at_2ac', c.Array[ctypes.c_ubyte, Literal[4]], 684), ('max_wqe_sz_rq', c.Array[ctypes.c_ubyte, Literal[16]], 688), ('max_flow_counter_31_16', c.Array[ctypes.c_ubyte, Literal[16]], 704), ('max_wqe_sz_sq_dc', c.Array[ctypes.c_ubyte, Literal[16]], 720), ('reserved_at_2e0', c.Array[ctypes.c_ubyte, Literal[7]], 736), ('max_qp_mcg', c.Array[ctypes.c_ubyte, Literal[25]], 743), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[16]], 768), ('flow_counter_bulk_alloc', c.Array[ctypes.c_ubyte, Literal[8]], 784), ('log_max_mcg', c.Array[ctypes.c_ubyte, Literal[8]], 792), ('reserved_at_320', c.Array[ctypes.c_ubyte, Literal[3]], 800), ('log_max_transport_domain', c.Array[ctypes.c_ubyte, Literal[5]], 803), ('reserved_at_328', c.Array[ctypes.c_ubyte, Literal[2]], 808), ('relaxed_ordering_read', c.Array[ctypes.c_ubyte, Literal[1]], 810), ('log_max_pd', c.Array[ctypes.c_ubyte, Literal[5]], 811), ('dp_ordering_ooo_all_ud', c.Array[ctypes.c_ubyte, Literal[1]], 816), ('dp_ordering_ooo_all_uc', c.Array[ctypes.c_ubyte, Literal[1]], 817), ('dp_ordering_ooo_all_xrc', c.Array[ctypes.c_ubyte, Literal[1]], 818), ('dp_ordering_ooo_all_dc', c.Array[ctypes.c_ubyte, Literal[1]], 819), ('dp_ordering_ooo_all_rc', c.Array[ctypes.c_ubyte, Literal[1]], 820), ('pcie_reset_using_hotreset_method', c.Array[ctypes.c_ubyte, Literal[1]], 821), ('pci_sync_for_fw_update_with_driver_unload', c.Array[ctypes.c_ubyte, Literal[1]], 822), ('vnic_env_cnt_steering_fail', c.Array[ctypes.c_ubyte, Literal[1]], 823), ('vport_counter_local_loopback', c.Array[ctypes.c_ubyte, Literal[1]], 824), ('q_counter_aggregation', c.Array[ctypes.c_ubyte, Literal[1]], 825), ('q_counter_other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 826), ('log_max_xrcd', c.Array[ctypes.c_ubyte, Literal[5]], 827), ('nic_receive_steering_discard', c.Array[ctypes.c_ubyte, Literal[1]], 832), ('receive_discard_vport_down', c.Array[ctypes.c_ubyte, Literal[1]], 833), ('transmit_discard_vport_down', c.Array[ctypes.c_ubyte, Literal[1]], 834), ('eq_overrun_count', c.Array[ctypes.c_ubyte, Literal[1]], 835), ('reserved_at_344', c.Array[ctypes.c_ubyte, Literal[1]], 836), ('invalid_command_count', c.Array[ctypes.c_ubyte, Literal[1]], 837), ('quota_exceeded_count', c.Array[ctypes.c_ubyte, Literal[1]], 838), ('reserved_at_347', c.Array[ctypes.c_ubyte, Literal[1]], 839), ('log_max_flow_counter_bulk', c.Array[ctypes.c_ubyte, Literal[8]], 840), ('max_flow_counter_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 848), ('reserved_at_360', c.Array[ctypes.c_ubyte, Literal[3]], 864), ('log_max_rq', c.Array[ctypes.c_ubyte, Literal[5]], 867), ('reserved_at_368', c.Array[ctypes.c_ubyte, Literal[3]], 872), ('log_max_sq', c.Array[ctypes.c_ubyte, Literal[5]], 875), ('reserved_at_370', c.Array[ctypes.c_ubyte, Literal[3]], 880), ('log_max_tir', c.Array[ctypes.c_ubyte, Literal[5]], 883), ('reserved_at_378', c.Array[ctypes.c_ubyte, Literal[3]], 888), ('log_max_tis', c.Array[ctypes.c_ubyte, Literal[5]], 891), ('basic_cyclic_rcv_wqe', c.Array[ctypes.c_ubyte, Literal[1]], 896), ('reserved_at_381', c.Array[ctypes.c_ubyte, Literal[2]], 897), ('log_max_rmp', c.Array[ctypes.c_ubyte, Literal[5]], 899), ('reserved_at_388', c.Array[ctypes.c_ubyte, Literal[3]], 904), ('log_max_rqt', c.Array[ctypes.c_ubyte, Literal[5]], 907), ('reserved_at_390', c.Array[ctypes.c_ubyte, Literal[3]], 912), ('log_max_rqt_size', c.Array[ctypes.c_ubyte, Literal[5]], 915), ('reserved_at_398', c.Array[ctypes.c_ubyte, Literal[1]], 920), ('vnic_env_cnt_bar_uar_access', c.Array[ctypes.c_ubyte, Literal[1]], 921), ('vnic_env_cnt_odp_page_fault', c.Array[ctypes.c_ubyte, Literal[1]], 922), ('log_max_tis_per_sq', c.Array[ctypes.c_ubyte, Literal[5]], 923), ('ext_stride_num_range', c.Array[ctypes.c_ubyte, Literal[1]], 928), ('roce_rw_supported', c.Array[ctypes.c_ubyte, Literal[1]], 929), ('log_max_current_uc_list_wr_supported', c.Array[ctypes.c_ubyte, Literal[1]], 930), ('log_max_stride_sz_rq', c.Array[ctypes.c_ubyte, Literal[5]], 931), ('reserved_at_3a8', c.Array[ctypes.c_ubyte, Literal[3]], 936), ('log_min_stride_sz_rq', c.Array[ctypes.c_ubyte, Literal[5]], 939), ('reserved_at_3b0', c.Array[ctypes.c_ubyte, Literal[3]], 944), ('log_max_stride_sz_sq', c.Array[ctypes.c_ubyte, Literal[5]], 947), ('reserved_at_3b8', c.Array[ctypes.c_ubyte, Literal[3]], 952), ('log_min_stride_sz_sq', c.Array[ctypes.c_ubyte, Literal[5]], 955), ('hairpin', c.Array[ctypes.c_ubyte, Literal[1]], 960), ('reserved_at_3c1', c.Array[ctypes.c_ubyte, Literal[2]], 961), ('log_max_hairpin_queues', c.Array[ctypes.c_ubyte, Literal[5]], 963), ('reserved_at_3c8', c.Array[ctypes.c_ubyte, Literal[3]], 968), ('log_max_hairpin_wq_data_sz', c.Array[ctypes.c_ubyte, Literal[5]], 971), ('reserved_at_3d0', c.Array[ctypes.c_ubyte, Literal[3]], 976), ('log_max_hairpin_num_packets', c.Array[ctypes.c_ubyte, Literal[5]], 979), ('reserved_at_3d8', c.Array[ctypes.c_ubyte, Literal[3]], 984), ('log_max_wq_sz', c.Array[ctypes.c_ubyte, Literal[5]], 987), ('nic_vport_change_event', c.Array[ctypes.c_ubyte, Literal[1]], 992), ('disable_local_lb_uc', c.Array[ctypes.c_ubyte, Literal[1]], 993), ('disable_local_lb_mc', c.Array[ctypes.c_ubyte, Literal[1]], 994), ('log_min_hairpin_wq_data_sz', c.Array[ctypes.c_ubyte, Literal[5]], 995), ('reserved_at_3e8', c.Array[ctypes.c_ubyte, Literal[1]], 1000), ('silent_mode', c.Array[ctypes.c_ubyte, Literal[1]], 1001), ('vhca_state', c.Array[ctypes.c_ubyte, Literal[1]], 1002), ('log_max_vlan_list', c.Array[ctypes.c_ubyte, Literal[5]], 1003), ('reserved_at_3f0', c.Array[ctypes.c_ubyte, Literal[3]], 1008), ('log_max_current_mc_list', c.Array[ctypes.c_ubyte, Literal[5]], 1011), ('reserved_at_3f8', c.Array[ctypes.c_ubyte, Literal[3]], 1016), ('log_max_current_uc_list', c.Array[ctypes.c_ubyte, Literal[5]], 1019), ('general_obj_types', c.Array[ctypes.c_ubyte, Literal[64]], 1024), ('sq_ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 1088), ('rq_ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 1090), ('steering_format_version', c.Array[ctypes.c_ubyte, Literal[4]], 1092), ('create_qp_start_hint', c.Array[ctypes.c_ubyte, Literal[24]], 1096), ('reserved_at_460', c.Array[ctypes.c_ubyte, Literal[1]], 1120), ('ats', c.Array[ctypes.c_ubyte, Literal[1]], 1121), ('cross_vhca_rqt', c.Array[ctypes.c_ubyte, Literal[1]], 1122), ('log_max_uctx', c.Array[ctypes.c_ubyte, Literal[5]], 1123), ('reserved_at_468', c.Array[ctypes.c_ubyte, Literal[1]], 1128), ('crypto', c.Array[ctypes.c_ubyte, Literal[1]], 1129), ('ipsec_offload', c.Array[ctypes.c_ubyte, Literal[1]], 1130), ('log_max_umem', c.Array[ctypes.c_ubyte, Literal[5]], 1131), ('max_num_eqs', c.Array[ctypes.c_ubyte, Literal[16]], 1136), ('reserved_at_480', c.Array[ctypes.c_ubyte, Literal[1]], 1152), ('tls_tx', c.Array[ctypes.c_ubyte, Literal[1]], 1153), ('tls_rx', c.Array[ctypes.c_ubyte, Literal[1]], 1154), ('log_max_l2_table', c.Array[ctypes.c_ubyte, Literal[5]], 1155), ('reserved_at_488', c.Array[ctypes.c_ubyte, Literal[8]], 1160), ('log_uar_page_sz', c.Array[ctypes.c_ubyte, Literal[16]], 1168), ('reserved_at_4a0', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('device_frequency_mhz', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('device_frequency_khz', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('reserved_at_500', c.Array[ctypes.c_ubyte, Literal[32]], 1280), ('num_of_uars_per_page', c.Array[ctypes.c_ubyte, Literal[32]], 1312), ('flex_parser_protocols', c.Array[ctypes.c_ubyte, Literal[32]], 1344), ('max_geneve_tlv_options', c.Array[ctypes.c_ubyte, Literal[8]], 1376), ('reserved_at_568', c.Array[ctypes.c_ubyte, Literal[3]], 1384), ('max_geneve_tlv_option_data_len', c.Array[ctypes.c_ubyte, Literal[5]], 1387), ('reserved_at_570', c.Array[ctypes.c_ubyte, Literal[1]], 1392), ('adv_rdma', c.Array[ctypes.c_ubyte, Literal[1]], 1393), ('reserved_at_572', c.Array[ctypes.c_ubyte, Literal[7]], 1394), ('adv_virtualization', c.Array[ctypes.c_ubyte, Literal[1]], 1401), ('reserved_at_57a', c.Array[ctypes.c_ubyte, Literal[6]], 1402), ('reserved_at_580', c.Array[ctypes.c_ubyte, Literal[11]], 1408), ('log_max_dci_stream_channels', c.Array[ctypes.c_ubyte, Literal[5]], 1419), ('reserved_at_590', c.Array[ctypes.c_ubyte, Literal[3]], 1424), ('log_max_dci_errored_streams', c.Array[ctypes.c_ubyte, Literal[5]], 1427), ('reserved_at_598', c.Array[ctypes.c_ubyte, Literal[8]], 1432), ('reserved_at_5a0', c.Array[ctypes.c_ubyte, Literal[16]], 1440), ('enhanced_cqe_compression', c.Array[ctypes.c_ubyte, Literal[1]], 1456), ('reserved_at_5b1', c.Array[ctypes.c_ubyte, Literal[1]], 1457), ('crossing_vhca_mkey', c.Array[ctypes.c_ubyte, Literal[1]], 1458), ('log_max_dek', c.Array[ctypes.c_ubyte, Literal[5]], 1459), ('reserved_at_5b8', c.Array[ctypes.c_ubyte, Literal[4]], 1464), ('mini_cqe_resp_stride_index', c.Array[ctypes.c_ubyte, Literal[1]], 1468), ('cqe_128_always', c.Array[ctypes.c_ubyte, Literal[1]], 1469), ('cqe_compression_128', c.Array[ctypes.c_ubyte, Literal[1]], 1470), ('cqe_compression', c.Array[ctypes.c_ubyte, Literal[1]], 1471), ('cqe_compression_timeout', c.Array[ctypes.c_ubyte, Literal[16]], 1472), ('cqe_compression_max_num', c.Array[ctypes.c_ubyte, Literal[16]], 1488), ('reserved_at_5e0', c.Array[ctypes.c_ubyte, Literal[8]], 1504), ('flex_parser_id_gtpu_dw_0', c.Array[ctypes.c_ubyte, Literal[4]], 1512), ('reserved_at_5ec', c.Array[ctypes.c_ubyte, Literal[4]], 1516), ('tag_matching', c.Array[ctypes.c_ubyte, Literal[1]], 1520), ('rndv_offload_rc', c.Array[ctypes.c_ubyte, Literal[1]], 1521), ('rndv_offload_dc', c.Array[ctypes.c_ubyte, Literal[1]], 1522), ('log_tag_matching_list_sz', c.Array[ctypes.c_ubyte, Literal[5]], 1523), ('reserved_at_5f8', c.Array[ctypes.c_ubyte, Literal[3]], 1528), ('log_max_xrq', c.Array[ctypes.c_ubyte, Literal[5]], 1531), ('affiliate_nic_vport_criteria', c.Array[ctypes.c_ubyte, Literal[8]], 1536), ('native_port_num', c.Array[ctypes.c_ubyte, Literal[8]], 1544), ('num_vhca_ports', c.Array[ctypes.c_ubyte, Literal[8]], 1552), ('flex_parser_id_gtpu_teid', c.Array[ctypes.c_ubyte, Literal[4]], 1560), ('reserved_at_61c', c.Array[ctypes.c_ubyte, Literal[2]], 1564), ('sw_owner_id', c.Array[ctypes.c_ubyte, Literal[1]], 1566), ('reserved_at_61f', c.Array[ctypes.c_ubyte, Literal[1]], 1567), ('max_num_of_monitor_counters', c.Array[ctypes.c_ubyte, Literal[16]], 1568), ('num_ppcnt_monitor_counters', c.Array[ctypes.c_ubyte, Literal[16]], 1584), ('max_num_sf', c.Array[ctypes.c_ubyte, Literal[16]], 1600), ('num_q_monitor_counters', c.Array[ctypes.c_ubyte, Literal[16]], 1616), ('reserved_at_660', c.Array[ctypes.c_ubyte, Literal[32]], 1632), ('sf', c.Array[ctypes.c_ubyte, Literal[1]], 1664), ('sf_set_partition', c.Array[ctypes.c_ubyte, Literal[1]], 1665), ('reserved_at_682', c.Array[ctypes.c_ubyte, Literal[1]], 1666), ('log_max_sf', c.Array[ctypes.c_ubyte, Literal[5]], 1667), ('apu', c.Array[ctypes.c_ubyte, Literal[1]], 1672), ('reserved_at_689', c.Array[ctypes.c_ubyte, Literal[4]], 1673), ('migration', c.Array[ctypes.c_ubyte, Literal[1]], 1677), ('reserved_at_68e', c.Array[ctypes.c_ubyte, Literal[2]], 1678), ('log_min_sf_size', c.Array[ctypes.c_ubyte, Literal[8]], 1680), ('max_num_sf_partitions', c.Array[ctypes.c_ubyte, Literal[8]], 1688), ('uctx_cap', c.Array[ctypes.c_ubyte, Literal[32]], 1696), ('reserved_at_6c0', c.Array[ctypes.c_ubyte, Literal[4]], 1728), ('flex_parser_id_geneve_tlv_option_0', c.Array[ctypes.c_ubyte, Literal[4]], 1732), ('flex_parser_id_icmp_dw1', c.Array[ctypes.c_ubyte, Literal[4]], 1736), ('flex_parser_id_icmp_dw0', c.Array[ctypes.c_ubyte, Literal[4]], 1740), ('flex_parser_id_icmpv6_dw1', c.Array[ctypes.c_ubyte, Literal[4]], 1744), ('flex_parser_id_icmpv6_dw0', c.Array[ctypes.c_ubyte, Literal[4]], 1748), ('flex_parser_id_outer_first_mpls_over_gre', c.Array[ctypes.c_ubyte, Literal[4]], 1752), ('flex_parser_id_outer_first_mpls_over_udp_label', c.Array[ctypes.c_ubyte, Literal[4]], 1756), ('max_num_match_definer', c.Array[ctypes.c_ubyte, Literal[16]], 1760), ('sf_base_id', c.Array[ctypes.c_ubyte, Literal[16]], 1776), ('flex_parser_id_gtpu_dw_2', c.Array[ctypes.c_ubyte, Literal[4]], 1792), ('flex_parser_id_gtpu_first_ext_dw_0', c.Array[ctypes.c_ubyte, Literal[4]], 1796), ('num_total_dynamic_vf_msix', c.Array[ctypes.c_ubyte, Literal[24]], 1800), ('reserved_at_720', c.Array[ctypes.c_ubyte, Literal[20]], 1824), ('dynamic_msix_table_size', c.Array[ctypes.c_ubyte, Literal[12]], 1844), ('reserved_at_740', c.Array[ctypes.c_ubyte, Literal[12]], 1856), ('min_dynamic_vf_msix_table_size', c.Array[ctypes.c_ubyte, Literal[4]], 1868), ('reserved_at_750', c.Array[ctypes.c_ubyte, Literal[2]], 1872), ('data_direct', c.Array[ctypes.c_ubyte, Literal[1]], 1874), ('reserved_at_753', c.Array[ctypes.c_ubyte, Literal[1]], 1875), ('max_dynamic_vf_msix_table_size', c.Array[ctypes.c_ubyte, Literal[12]], 1876), ('reserved_at_760', c.Array[ctypes.c_ubyte, Literal[3]], 1888), ('log_max_num_header_modify_argument', c.Array[ctypes.c_ubyte, Literal[5]], 1891), ('log_header_modify_argument_granularity_offset', c.Array[ctypes.c_ubyte, Literal[4]], 1896), ('log_header_modify_argument_granularity', c.Array[ctypes.c_ubyte, Literal[4]], 1900), ('reserved_at_770', c.Array[ctypes.c_ubyte, Literal[3]], 1904), ('log_header_modify_argument_max_alloc', c.Array[ctypes.c_ubyte, Literal[5]], 1907), ('reserved_at_778', c.Array[ctypes.c_ubyte, Literal[8]], 1912), ('vhca_tunnel_commands', c.Array[ctypes.c_ubyte, Literal[64]], 1920), ('match_definer_format_supported', c.Array[ctypes.c_ubyte, Literal[64]], 1984)])
_anonenum28: dict[int, str] = {(MLX5_CROSS_VHCA_OBJ_TO_OBJ_SUPPORTED_LOCAL_FLOW_TABLE_TO_REMOTE_FLOW_TABLE_MISS:=524288): 'MLX5_CROSS_VHCA_OBJ_TO_OBJ_SUPPORTED_LOCAL_FLOW_TABLE_TO_REMOTE_FLOW_TABLE_MISS', (MLX5_CROSS_VHCA_OBJ_TO_OBJ_SUPPORTED_LOCAL_FLOW_TABLE_ROOT_TO_REMOTE_FLOW_TABLE:=1048576): 'MLX5_CROSS_VHCA_OBJ_TO_OBJ_SUPPORTED_LOCAL_FLOW_TABLE_ROOT_TO_REMOTE_FLOW_TABLE'}
_anonenum29: dict[int, str] = {(MLX5_ALLOWED_OBJ_FOR_OTHER_VHCA_ACCESS_FLOW_TABLE:=512): 'MLX5_ALLOWED_OBJ_FOR_OTHER_VHCA_ACCESS_FLOW_TABLE'}
@c.record
class struct_mlx5_ifc_cmd_hca_cap_2_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
  migratable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_81: c.Array[ctypes.c_ubyte, Literal[7]]
  dp_ordering_force: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_89: c.Array[ctypes.c_ubyte, Literal[9]]
  query_vuid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_93: c.Array[ctypes.c_ubyte, Literal[5]]
  umr_log_entity_size_5: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_99: c.Array[ctypes.c_ubyte, Literal[7]]
  max_reformat_insert_size: c.Array[ctypes.c_ubyte, Literal[8]]
  max_reformat_insert_offset: c.Array[ctypes.c_ubyte, Literal[8]]
  max_reformat_remove_size: c.Array[ctypes.c_ubyte, Literal[8]]
  max_reformat_remove_offset: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  migration_multi_load: c.Array[ctypes.c_ubyte, Literal[1]]
  migration_tracking_state: c.Array[ctypes.c_ubyte, Literal[1]]
  multiplane_qp_ud: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_cb: c.Array[ctypes.c_ubyte, Literal[5]]
  migration_in_chunks: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_d1: c.Array[ctypes.c_ubyte, Literal[1]]
  sf_eq_usage: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_d3: c.Array[ctypes.c_ubyte, Literal[5]]
  multiplane: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_d9: c.Array[ctypes.c_ubyte, Literal[7]]
  cross_vhca_object_to_object_supported: c.Array[ctypes.c_ubyte, Literal[32]]
  allowed_object_for_other_vhca_access: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[96]]
  flow_table_type_2_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1a8: c.Array[ctypes.c_ubyte, Literal[2]]
  format_select_dw_8_6_ext: c.Array[ctypes.c_ubyte, Literal[1]]
  log_min_mkey_entity_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_1b0: c.Array[ctypes.c_ubyte, Literal[16]]
  general_obj_types_127_64: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_220: c.Array[ctypes.c_ubyte, Literal[1]]
  sw_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  sw_vhca_id: c.Array[ctypes.c_ubyte, Literal[14]]
  reserved_at_230: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_240: c.Array[ctypes.c_ubyte, Literal[11]]
  ts_cqe_metadata_size2wqe_counter: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_250: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_260: c.Array[ctypes.c_ubyte, Literal[32]]
  format_select_dw_gtpu_dw_0: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw_gtpu_dw_1: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw_gtpu_dw_2: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw_gtpu_first_ext_dw_0: c.Array[ctypes.c_ubyte, Literal[8]]
  generate_wqe_type: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_2c0: c.Array[ctypes.c_ubyte, Literal[192]]
  reserved_at_380: c.Array[ctypes.c_ubyte, Literal[11]]
  min_mkey_log_entity_size_fixed_buffer: c.Array[ctypes.c_ubyte, Literal[5]]
  ec_vf_vport_base: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_3a0: c.Array[ctypes.c_ubyte, Literal[2]]
  max_mkey_log_entity_size_fixed_buffer: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_3a8: c.Array[ctypes.c_ubyte, Literal[2]]
  max_mkey_log_entity_size_mtt: c.Array[ctypes.c_ubyte, Literal[6]]
  max_rqt_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_3c0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_3e0: c.Array[ctypes.c_ubyte, Literal[16]]
  pcc_ifa2: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3f1: c.Array[ctypes.c_ubyte, Literal[15]]
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[1]]
  min_mkey_log_entity_size_fixed_buffer_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_402: c.Array[ctypes.c_ubyte, Literal[14]]
  return_reg_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_420: c.Array[ctypes.c_ubyte, Literal[28]]
  flow_table_hash_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_440: c.Array[ctypes.c_ubyte, Literal[8]]
  max_num_eqs_24b: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_460: c.Array[ctypes.c_ubyte, Literal[324]]
  load_balance_id: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_5a8: c.Array[ctypes.c_ubyte, Literal[24]]
  query_adjacent_functions_id: c.Array[ctypes.c_ubyte, Literal[1]]
  ingress_egress_esw_vport_connect: c.Array[ctypes.c_ubyte, Literal[1]]
  function_id_type_vhca_id: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5c3: c.Array[ctypes.c_ubyte, Literal[1]]
  lag_per_mp_group: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5c5: c.Array[ctypes.c_ubyte, Literal[11]]
  delegate_vhca_management_profiles: c.Array[ctypes.c_ubyte, Literal[16]]
  delegated_vhca_max: c.Array[ctypes.c_ubyte, Literal[16]]
  delegate_vhca_max: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_600: c.Array[ctypes.c_ubyte, Literal[512]]
struct_mlx5_ifc_cmd_hca_cap_2_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0), ('migratable', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('reserved_at_81', c.Array[ctypes.c_ubyte, Literal[7]], 129), ('dp_ordering_force', c.Array[ctypes.c_ubyte, Literal[1]], 136), ('reserved_at_89', c.Array[ctypes.c_ubyte, Literal[9]], 137), ('query_vuid', c.Array[ctypes.c_ubyte, Literal[1]], 146), ('reserved_at_93', c.Array[ctypes.c_ubyte, Literal[5]], 147), ('umr_log_entity_size_5', c.Array[ctypes.c_ubyte, Literal[1]], 152), ('reserved_at_99', c.Array[ctypes.c_ubyte, Literal[7]], 153), ('max_reformat_insert_size', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('max_reformat_insert_offset', c.Array[ctypes.c_ubyte, Literal[8]], 168), ('max_reformat_remove_size', c.Array[ctypes.c_ubyte, Literal[8]], 176), ('max_reformat_remove_offset', c.Array[ctypes.c_ubyte, Literal[8]], 184), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('migration_multi_load', c.Array[ctypes.c_ubyte, Literal[1]], 200), ('migration_tracking_state', c.Array[ctypes.c_ubyte, Literal[1]], 201), ('multiplane_qp_ud', c.Array[ctypes.c_ubyte, Literal[1]], 202), ('reserved_at_cb', c.Array[ctypes.c_ubyte, Literal[5]], 203), ('migration_in_chunks', c.Array[ctypes.c_ubyte, Literal[1]], 208), ('reserved_at_d1', c.Array[ctypes.c_ubyte, Literal[1]], 209), ('sf_eq_usage', c.Array[ctypes.c_ubyte, Literal[1]], 210), ('reserved_at_d3', c.Array[ctypes.c_ubyte, Literal[5]], 211), ('multiplane', c.Array[ctypes.c_ubyte, Literal[1]], 216), ('reserved_at_d9', c.Array[ctypes.c_ubyte, Literal[7]], 217), ('cross_vhca_object_to_object_supported', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('allowed_object_for_other_vhca_access', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[96]], 320), ('flow_table_type_2_type', c.Array[ctypes.c_ubyte, Literal[8]], 416), ('reserved_at_1a8', c.Array[ctypes.c_ubyte, Literal[2]], 424), ('format_select_dw_8_6_ext', c.Array[ctypes.c_ubyte, Literal[1]], 426), ('log_min_mkey_entity_size', c.Array[ctypes.c_ubyte, Literal[5]], 427), ('reserved_at_1b0', c.Array[ctypes.c_ubyte, Literal[16]], 432), ('general_obj_types_127_64', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('reserved_at_220', c.Array[ctypes.c_ubyte, Literal[1]], 544), ('sw_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 545), ('sw_vhca_id', c.Array[ctypes.c_ubyte, Literal[14]], 546), ('reserved_at_230', c.Array[ctypes.c_ubyte, Literal[16]], 560), ('reserved_at_240', c.Array[ctypes.c_ubyte, Literal[11]], 576), ('ts_cqe_metadata_size2wqe_counter', c.Array[ctypes.c_ubyte, Literal[5]], 587), ('reserved_at_250', c.Array[ctypes.c_ubyte, Literal[16]], 592), ('reserved_at_260', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('format_select_dw_gtpu_dw_0', c.Array[ctypes.c_ubyte, Literal[8]], 640), ('format_select_dw_gtpu_dw_1', c.Array[ctypes.c_ubyte, Literal[8]], 648), ('format_select_dw_gtpu_dw_2', c.Array[ctypes.c_ubyte, Literal[8]], 656), ('format_select_dw_gtpu_first_ext_dw_0', c.Array[ctypes.c_ubyte, Literal[8]], 664), ('generate_wqe_type', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('reserved_at_2c0', c.Array[ctypes.c_ubyte, Literal[192]], 704), ('reserved_at_380', c.Array[ctypes.c_ubyte, Literal[11]], 896), ('min_mkey_log_entity_size_fixed_buffer', c.Array[ctypes.c_ubyte, Literal[5]], 907), ('ec_vf_vport_base', c.Array[ctypes.c_ubyte, Literal[16]], 912), ('reserved_at_3a0', c.Array[ctypes.c_ubyte, Literal[2]], 928), ('max_mkey_log_entity_size_fixed_buffer', c.Array[ctypes.c_ubyte, Literal[6]], 930), ('reserved_at_3a8', c.Array[ctypes.c_ubyte, Literal[2]], 936), ('max_mkey_log_entity_size_mtt', c.Array[ctypes.c_ubyte, Literal[6]], 938), ('max_rqt_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 944), ('reserved_at_3c0', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('reserved_at_3e0', c.Array[ctypes.c_ubyte, Literal[16]], 992), ('pcc_ifa2', c.Array[ctypes.c_ubyte, Literal[1]], 1008), ('reserved_at_3f1', c.Array[ctypes.c_ubyte, Literal[15]], 1009), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[1]], 1024), ('min_mkey_log_entity_size_fixed_buffer_valid', c.Array[ctypes.c_ubyte, Literal[1]], 1025), ('reserved_at_402', c.Array[ctypes.c_ubyte, Literal[14]], 1026), ('return_reg_id', c.Array[ctypes.c_ubyte, Literal[16]], 1040), ('reserved_at_420', c.Array[ctypes.c_ubyte, Literal[28]], 1056), ('flow_table_hash_type', c.Array[ctypes.c_ubyte, Literal[4]], 1084), ('reserved_at_440', c.Array[ctypes.c_ubyte, Literal[8]], 1088), ('max_num_eqs_24b', c.Array[ctypes.c_ubyte, Literal[24]], 1096), ('reserved_at_460', c.Array[ctypes.c_ubyte, Literal[324]], 1120), ('load_balance_id', c.Array[ctypes.c_ubyte, Literal[4]], 1444), ('reserved_at_5a8', c.Array[ctypes.c_ubyte, Literal[24]], 1448), ('query_adjacent_functions_id', c.Array[ctypes.c_ubyte, Literal[1]], 1472), ('ingress_egress_esw_vport_connect', c.Array[ctypes.c_ubyte, Literal[1]], 1473), ('function_id_type_vhca_id', c.Array[ctypes.c_ubyte, Literal[1]], 1474), ('reserved_at_5c3', c.Array[ctypes.c_ubyte, Literal[1]], 1475), ('lag_per_mp_group', c.Array[ctypes.c_ubyte, Literal[1]], 1476), ('reserved_at_5c5', c.Array[ctypes.c_ubyte, Literal[11]], 1477), ('delegate_vhca_management_profiles', c.Array[ctypes.c_ubyte, Literal[16]], 1488), ('delegated_vhca_max', c.Array[ctypes.c_ubyte, Literal[16]], 1504), ('delegate_vhca_max', c.Array[ctypes.c_ubyte, Literal[16]], 1520), ('reserved_at_600', c.Array[ctypes.c_ubyte, Literal[512]], 1536)])
enum_mlx5_ifc_flow_destination_type: dict[int, str] = {(MLX5_IFC_FLOW_DESTINATION_TYPE_VPORT:=0): 'MLX5_IFC_FLOW_DESTINATION_TYPE_VPORT', (MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_TABLE:=1): 'MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_TABLE', (MLX5_IFC_FLOW_DESTINATION_TYPE_TIR:=2): 'MLX5_IFC_FLOW_DESTINATION_TYPE_TIR', (MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_SAMPLER:=6): 'MLX5_IFC_FLOW_DESTINATION_TYPE_FLOW_SAMPLER', (MLX5_IFC_FLOW_DESTINATION_TYPE_UPLINK:=8): 'MLX5_IFC_FLOW_DESTINATION_TYPE_UPLINK', (MLX5_IFC_FLOW_DESTINATION_TYPE_TABLE_TYPE:=10): 'MLX5_IFC_FLOW_DESTINATION_TYPE_TABLE_TYPE'}
enum_mlx5_flow_table_miss_action: dict[int, str] = {(MLX5_FLOW_TABLE_MISS_ACTION_DEF:=0): 'MLX5_FLOW_TABLE_MISS_ACTION_DEF', (MLX5_FLOW_TABLE_MISS_ACTION_FWD:=1): 'MLX5_FLOW_TABLE_MISS_ACTION_FWD', (MLX5_FLOW_TABLE_MISS_ACTION_SWITCH_DOMAIN:=2): 'MLX5_FLOW_TABLE_MISS_ACTION_SWITCH_DOMAIN'}
@c.record
class struct_mlx5_ifc_dest_format_struct_bits(c.Struct):
  SIZE = 64
  destination_type: c.Array[ctypes.c_ubyte, Literal[8]]
  destination_id: c.Array[ctypes.c_ubyte, Literal[24]]
  destination_eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_reformat: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[6]]
  destination_table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  destination_eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_dest_format_struct_bits.register_fields([('destination_type', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('destination_id', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('destination_eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('packet_reformat', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[6]], 34), ('destination_table_type', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('destination_eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48)])
@c.record
class struct_mlx5_ifc_flow_counter_list_bits(c.Struct):
  SIZE = 64
  flow_counter_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_flow_counter_list_bits.register_fields([('flow_counter_id', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_extended_dest_format_bits(c.Struct):
  SIZE = 128
  destination_entry: struct_mlx5_ifc_dest_format_struct_bits
  packet_reformat_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_extended_dest_format_bits.register_fields([('destination_entry', struct_mlx5_ifc_dest_format_struct_bits, 0), ('packet_reformat_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class union_mlx5_ifc_dest_format_flow_counter_list_auto_bits(c.Struct):
  SIZE = 128
  extended_dest_format: struct_mlx5_ifc_extended_dest_format_bits
  flow_counter_list: struct_mlx5_ifc_flow_counter_list_bits
union_mlx5_ifc_dest_format_flow_counter_list_auto_bits.register_fields([('extended_dest_format', struct_mlx5_ifc_extended_dest_format_bits, 0), ('flow_counter_list', struct_mlx5_ifc_flow_counter_list_bits, 0)])
@c.record
class struct_mlx5_ifc_fte_match_param_bits(c.Struct):
  SIZE = 4096
  outer_headers: struct_mlx5_ifc_fte_match_set_lyr_2_4_bits
  misc_parameters: struct_mlx5_ifc_fte_match_set_misc_bits
  inner_headers: struct_mlx5_ifc_fte_match_set_lyr_2_4_bits
  misc_parameters_2: struct_mlx5_ifc_fte_match_set_misc2_bits
  misc_parameters_3: struct_mlx5_ifc_fte_match_set_misc3_bits
  misc_parameters_4: struct_mlx5_ifc_fte_match_set_misc4_bits
  misc_parameters_5: struct_mlx5_ifc_fte_match_set_misc5_bits
  reserved_at_e00: c.Array[ctypes.c_ubyte, Literal[512]]
struct_mlx5_ifc_fte_match_param_bits.register_fields([('outer_headers', struct_mlx5_ifc_fte_match_set_lyr_2_4_bits, 0), ('misc_parameters', struct_mlx5_ifc_fte_match_set_misc_bits, 512), ('inner_headers', struct_mlx5_ifc_fte_match_set_lyr_2_4_bits, 1024), ('misc_parameters_2', struct_mlx5_ifc_fte_match_set_misc2_bits, 1536), ('misc_parameters_3', struct_mlx5_ifc_fte_match_set_misc3_bits, 2048), ('misc_parameters_4', struct_mlx5_ifc_fte_match_set_misc4_bits, 2560), ('misc_parameters_5', struct_mlx5_ifc_fte_match_set_misc5_bits, 3072), ('reserved_at_e00', c.Array[ctypes.c_ubyte, Literal[512]], 3584)])
_anonenum30: dict[int, str] = {(MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_SRC_IP:=0): 'MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_SRC_IP', (MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_DST_IP:=1): 'MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_DST_IP', (MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_SPORT:=2): 'MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_SPORT', (MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_DPORT:=3): 'MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_L4_DPORT', (MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_IPSEC_SPI:=4): 'MLX5_RX_HASH_FIELD_SELECT_SELECTED_FIELDS_IPSEC_SPI'}
@c.record
class struct_mlx5_ifc_rx_hash_field_select_bits(c.Struct):
  SIZE = 32
  l3_prot_type: c.Array[ctypes.c_ubyte, Literal[1]]
  l4_prot_type: c.Array[ctypes.c_ubyte, Literal[1]]
  selected_fields: c.Array[ctypes.c_ubyte, Literal[30]]
struct_mlx5_ifc_rx_hash_field_select_bits.register_fields([('l3_prot_type', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('l4_prot_type', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('selected_fields', c.Array[ctypes.c_ubyte, Literal[30]], 2)])
_anonenum31: dict[int, str] = {(MLX5_WQ_WQ_TYPE_WQ_LINKED_LIST:=0): 'MLX5_WQ_WQ_TYPE_WQ_LINKED_LIST', (MLX5_WQ_WQ_TYPE_WQ_CYCLIC:=1): 'MLX5_WQ_WQ_TYPE_WQ_CYCLIC'}
_anonenum32: dict[int, str] = {(MLX5_WQ_END_PADDING_MODE_END_PAD_NONE:=0): 'MLX5_WQ_END_PADDING_MODE_END_PAD_NONE', (MLX5_WQ_END_PADDING_MODE_END_PAD_ALIGN:=1): 'MLX5_WQ_END_PADDING_MODE_END_PAD_ALIGN'}
@c.record
class struct_mlx5_ifc_wq_bits(c.Struct):
  SIZE = 1536
  wq_type: c.Array[ctypes.c_ubyte, Literal[4]]
  wq_signature: c.Array[ctypes.c_ubyte, Literal[1]]
  end_padding_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  cd_slave: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  hds_skip_first_sge: c.Array[ctypes.c_ubyte, Literal[1]]
  log2_hds_buf_size: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_24: c.Array[ctypes.c_ubyte, Literal[7]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[5]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  uar_page: c.Array[ctypes.c_ubyte, Literal[24]]
  dbr_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  hw_counter: c.Array[ctypes.c_ubyte, Literal[32]]
  sw_counter: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[12]]
  log_wq_stride: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_110: c.Array[ctypes.c_ubyte, Literal[3]]
  log_wq_pg_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_118: c.Array[ctypes.c_ubyte, Literal[3]]
  log_wq_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  dbr_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  wq_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_122: c.Array[ctypes.c_ubyte, Literal[1]]
  log_hairpin_num_packets: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_128: c.Array[ctypes.c_ubyte, Literal[3]]
  log_hairpin_data_sz: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_130: c.Array[ctypes.c_ubyte, Literal[4]]
  log_wqe_num_of_strides: c.Array[ctypes.c_ubyte, Literal[4]]
  two_byte_shift_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_139: c.Array[ctypes.c_ubyte, Literal[4]]
  log_wqe_stride_size: c.Array[ctypes.c_ubyte, Literal[3]]
  dbr_umem_id: c.Array[ctypes.c_ubyte, Literal[32]]
  wq_umem_id: c.Array[ctypes.c_ubyte, Literal[32]]
  wq_umem_offset: c.Array[ctypes.c_ubyte, Literal[64]]
  headers_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  shampo_enable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1e1: c.Array[ctypes.c_ubyte, Literal[1]]
  shampo_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1e4: c.Array[ctypes.c_ubyte, Literal[1]]
  log_reservation_size: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_1e8: c.Array[ctypes.c_ubyte, Literal[5]]
  log_max_num_of_packets_per_reservation: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_1f0: c.Array[ctypes.c_ubyte, Literal[6]]
  log_headers_entry_size: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1f8: c.Array[ctypes.c_ubyte, Literal[4]]
  log_headers_buffer_entry_num: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[1024]]
  pas: c.Array[struct_mlx5_ifc_cmd_pas_bits, Literal[0]]
struct_mlx5_ifc_wq_bits.register_fields([('wq_type', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('wq_signature', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('end_padding_mode', c.Array[ctypes.c_ubyte, Literal[2]], 5), ('cd_slave', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('hds_skip_first_sge', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('log2_hds_buf_size', c.Array[ctypes.c_ubyte, Literal[3]], 33), ('reserved_at_24', c.Array[ctypes.c_ubyte, Literal[7]], 36), ('page_offset', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('uar_page', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('dbr_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('hw_counter', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('sw_counter', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[12]], 256), ('log_wq_stride', c.Array[ctypes.c_ubyte, Literal[4]], 268), ('reserved_at_110', c.Array[ctypes.c_ubyte, Literal[3]], 272), ('log_wq_pg_sz', c.Array[ctypes.c_ubyte, Literal[5]], 275), ('reserved_at_118', c.Array[ctypes.c_ubyte, Literal[3]], 280), ('log_wq_sz', c.Array[ctypes.c_ubyte, Literal[5]], 283), ('dbr_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 288), ('wq_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 289), ('reserved_at_122', c.Array[ctypes.c_ubyte, Literal[1]], 290), ('log_hairpin_num_packets', c.Array[ctypes.c_ubyte, Literal[5]], 291), ('reserved_at_128', c.Array[ctypes.c_ubyte, Literal[3]], 296), ('log_hairpin_data_sz', c.Array[ctypes.c_ubyte, Literal[5]], 299), ('reserved_at_130', c.Array[ctypes.c_ubyte, Literal[4]], 304), ('log_wqe_num_of_strides', c.Array[ctypes.c_ubyte, Literal[4]], 308), ('two_byte_shift_en', c.Array[ctypes.c_ubyte, Literal[1]], 312), ('reserved_at_139', c.Array[ctypes.c_ubyte, Literal[4]], 313), ('log_wqe_stride_size', c.Array[ctypes.c_ubyte, Literal[3]], 317), ('dbr_umem_id', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('wq_umem_id', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('wq_umem_offset', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('headers_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('shampo_enable', c.Array[ctypes.c_ubyte, Literal[1]], 480), ('reserved_at_1e1', c.Array[ctypes.c_ubyte, Literal[1]], 481), ('shampo_mode', c.Array[ctypes.c_ubyte, Literal[2]], 482), ('reserved_at_1e4', c.Array[ctypes.c_ubyte, Literal[1]], 484), ('log_reservation_size', c.Array[ctypes.c_ubyte, Literal[3]], 485), ('reserved_at_1e8', c.Array[ctypes.c_ubyte, Literal[5]], 488), ('log_max_num_of_packets_per_reservation', c.Array[ctypes.c_ubyte, Literal[3]], 493), ('reserved_at_1f0', c.Array[ctypes.c_ubyte, Literal[6]], 496), ('log_headers_entry_size', c.Array[ctypes.c_ubyte, Literal[2]], 502), ('reserved_at_1f8', c.Array[ctypes.c_ubyte, Literal[4]], 504), ('log_headers_buffer_entry_num', c.Array[ctypes.c_ubyte, Literal[4]], 508), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[1024]], 512), ('pas', c.Array[struct_mlx5_ifc_cmd_pas_bits, Literal[0]], 1536)])
@c.record
class struct_mlx5_ifc_rq_num_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  rq_num: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_rq_num_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('rq_num', c.Array[ctypes.c_ubyte, Literal[24]], 8)])
@c.record
class struct_mlx5_ifc_rq_vhca_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  rq_num: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  rq_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_rq_vhca_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('rq_num', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('rq_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48)])
@c.record
class struct_mlx5_ifc_mac_address_layout_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  mac_addr_47_32: c.Array[ctypes.c_ubyte, Literal[16]]
  mac_addr_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mac_address_layout_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('mac_addr_47_32', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('mac_addr_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_vlan_layout_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[20]]
  vlan: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_vlan_layout_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[20]], 0), ('vlan', c.Array[ctypes.c_ubyte, Literal[12]], 20), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_cong_control_r_roce_ecn_np_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[160]]
  min_time_between_cnps: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[18]]
  cnp_dscp: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_d8: c.Array[ctypes.c_ubyte, Literal[4]]
  cnp_prio_mode: c.Array[ctypes.c_ubyte, Literal[1]]
  cnp_802p_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[1824]]
struct_mlx5_ifc_cong_control_r_roce_ecn_np_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[160]], 0), ('min_time_between_cnps', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[18]], 192), ('cnp_dscp', c.Array[ctypes.c_ubyte, Literal[6]], 210), ('reserved_at_d8', c.Array[ctypes.c_ubyte, Literal[4]], 216), ('cnp_prio_mode', c.Array[ctypes.c_ubyte, Literal[1]], 220), ('cnp_802p_prio', c.Array[ctypes.c_ubyte, Literal[3]], 221), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[1824]], 224)])
@c.record
class struct_mlx5_ifc_cong_control_r_roce_ecn_rp_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[4]]
  clamp_tgt_rate: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_65: c.Array[ctypes.c_ubyte, Literal[3]]
  clamp_tgt_rate_after_time_inc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_69: c.Array[ctypes.c_ubyte, Literal[23]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_time_reset: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_byte_reset: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_threshold: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_max_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_ai_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_hai_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_gd: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_min_dec_fac: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_min_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[224]]
  rate_to_set_on_first_cnp: c.Array[ctypes.c_ubyte, Literal[32]]
  dce_tcp_g: c.Array[ctypes.c_ubyte, Literal[32]]
  dce_tcp_rtt: c.Array[ctypes.c_ubyte, Literal[32]]
  rate_reduce_monitor_period: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_320: c.Array[ctypes.c_ubyte, Literal[32]]
  initial_alpha_value: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_360: c.Array[ctypes.c_ubyte, Literal[1184]]
struct_mlx5_ifc_cong_control_r_roce_ecn_rp_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[96]], 0), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('clamp_tgt_rate', c.Array[ctypes.c_ubyte, Literal[1]], 100), ('reserved_at_65', c.Array[ctypes.c_ubyte, Literal[3]], 101), ('clamp_tgt_rate_after_time_inc', c.Array[ctypes.c_ubyte, Literal[1]], 104), ('reserved_at_69', c.Array[ctypes.c_ubyte, Literal[23]], 105), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('rpg_time_reset', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('rpg_byte_reset', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('rpg_threshold', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('rpg_max_rate', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('rpg_ai_rate', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('rpg_hai_rate', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('rpg_gd', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('rpg_min_dec_fac', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('rpg_min_rate', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[224]], 448), ('rate_to_set_on_first_cnp', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('dce_tcp_g', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('dce_tcp_rtt', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('rate_reduce_monitor_period', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('reserved_at_320', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('initial_alpha_value', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('reserved_at_360', c.Array[ctypes.c_ubyte, Literal[1184]], 864)])
@c.record
class struct_mlx5_ifc_cong_control_r_roce_general_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  rtt_resp_dscp_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_91: c.Array[ctypes.c_ubyte, Literal[9]]
  rtt_resp_dscp: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[1888]]
struct_mlx5_ifc_cong_control_r_roce_general_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('rtt_resp_dscp_valid', c.Array[ctypes.c_ubyte, Literal[1]], 144), ('reserved_at_91', c.Array[ctypes.c_ubyte, Literal[9]], 145), ('rtt_resp_dscp', c.Array[ctypes.c_ubyte, Literal[6]], 154), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[1888]], 160)])
@c.record
class struct_mlx5_ifc_cong_control_802_1qau_rp_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
  rppp_max_rps: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_time_reset: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_byte_reset: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_threshold: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_max_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_ai_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_hai_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_gd: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_min_dec_fac: c.Array[ctypes.c_ubyte, Literal[32]]
  rpg_min_rate: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[1600]]
struct_mlx5_ifc_cong_control_802_1qau_rp_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0), ('rppp_max_rps', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('rpg_time_reset', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('rpg_byte_reset', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('rpg_threshold', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('rpg_max_rate', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('rpg_ai_rate', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('rpg_hai_rate', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('rpg_gd', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('rpg_min_dec_fac', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('rpg_min_rate', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[1600]], 448)])
_anonenum33: dict[int, str] = {(MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_CQ_SIZE:=1): 'MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_CQ_SIZE', (MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_PAGE_OFFSET:=2): 'MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_PAGE_OFFSET', (MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_PAGE_SIZE:=4): 'MLX5_RESIZE_FIELD_SELECT_RESIZE_FIELD_SELECT_LOG_PAGE_SIZE'}
@c.record
class struct_mlx5_ifc_resize_field_select_bits(c.Struct):
  SIZE = 32
  resize_field_select: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_resize_field_select_bits.register_fields([('resize_field_select', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_resource_dump_bits(c.Struct):
  SIZE = 2048
  more_dump: c.Array[ctypes.c_ubyte, Literal[1]]
  inline_dump: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[10]]
  seq_num: c.Array[ctypes.c_ubyte, Literal[4]]
  segment_type: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  index1: c.Array[ctypes.c_ubyte, Literal[32]]
  index2: c.Array[ctypes.c_ubyte, Literal[32]]
  num_of_obj1: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_obj2: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  device_opaque: c.Array[ctypes.c_ubyte, Literal[64]]
  mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  size: c.Array[ctypes.c_ubyte, Literal[32]]
  address: c.Array[ctypes.c_ubyte, Literal[64]]
  inline_data: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[52]]
struct_mlx5_ifc_resource_dump_bits.register_fields([('more_dump', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('inline_dump', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[10]], 2), ('seq_num', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('segment_type', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('index1', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('index2', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('num_of_obj1', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('num_of_obj2', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('device_opaque', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('mkey', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('size', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('address', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('inline_data', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[52]], 384)])
@c.record
class struct_mlx5_ifc_resource_dump_menu_record_bits(c.Struct):
  SIZE = 416
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  num_of_obj2_supports_active: c.Array[ctypes.c_ubyte, Literal[1]]
  num_of_obj2_supports_all: c.Array[ctypes.c_ubyte, Literal[1]]
  must_have_num_of_obj2: c.Array[ctypes.c_ubyte, Literal[1]]
  support_num_of_obj2: c.Array[ctypes.c_ubyte, Literal[1]]
  num_of_obj1_supports_active: c.Array[ctypes.c_ubyte, Literal[1]]
  num_of_obj1_supports_all: c.Array[ctypes.c_ubyte, Literal[1]]
  must_have_num_of_obj1: c.Array[ctypes.c_ubyte, Literal[1]]
  support_num_of_obj1: c.Array[ctypes.c_ubyte, Literal[1]]
  must_have_index2: c.Array[ctypes.c_ubyte, Literal[1]]
  support_index2: c.Array[ctypes.c_ubyte, Literal[1]]
  must_have_index1: c.Array[ctypes.c_ubyte, Literal[1]]
  support_index1: c.Array[ctypes.c_ubyte, Literal[1]]
  segment_type: c.Array[ctypes.c_ubyte, Literal[16]]
  segment_name: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
  index1_name: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
  index2_name: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
struct_mlx5_ifc_resource_dump_menu_record_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('num_of_obj2_supports_active', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('num_of_obj2_supports_all', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('must_have_num_of_obj2', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('support_num_of_obj2', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('num_of_obj1_supports_active', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('num_of_obj1_supports_all', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('must_have_num_of_obj1', c.Array[ctypes.c_ubyte, Literal[1]], 10), ('support_num_of_obj1', c.Array[ctypes.c_ubyte, Literal[1]], 11), ('must_have_index2', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('support_index2', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('must_have_index1', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('support_index1', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('segment_type', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('segment_name', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 32), ('index1_name', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 160), ('index2_name', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 288)])
@c.record
class struct_mlx5_ifc_resource_dump_segment_header_bits(c.Struct):
  SIZE = 32
  length_dw: c.Array[ctypes.c_ubyte, Literal[16]]
  segment_type: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_resource_dump_segment_header_bits.register_fields([('length_dw', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('segment_type', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class struct_mlx5_ifc_resource_dump_command_segment_bits(c.Struct):
  SIZE = 160
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
  segment_called: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  index1: c.Array[ctypes.c_ubyte, Literal[32]]
  index2: c.Array[ctypes.c_ubyte, Literal[32]]
  num_of_obj1: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_obj2: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_resource_dump_command_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0), ('segment_called', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('index1', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('index2', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('num_of_obj1', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('num_of_obj2', c.Array[ctypes.c_ubyte, Literal[16]], 144)])
@c.record
class struct_mlx5_ifc_resource_dump_error_segment_bits(c.Struct):
  SIZE = 384
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  syndrome_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  error: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
struct_mlx5_ifc_resource_dump_error_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('syndrome_id', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('error', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 128)])
@c.record
class struct_mlx5_ifc_resource_dump_info_segment_bits(c.Struct):
  SIZE = 128
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[24]]
  dump_version: c.Array[ctypes.c_ubyte, Literal[8]]
  hw_version: c.Array[ctypes.c_ubyte, Literal[32]]
  fw_version: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_resource_dump_info_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('dump_version', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('hw_version', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('fw_version', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_resource_dump_menu_segment_bits(c.Struct):
  SIZE = 64
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_records: c.Array[ctypes.c_ubyte, Literal[16]]
  record: c.Array[struct_mlx5_ifc_resource_dump_menu_record_bits, Literal[0]]
struct_mlx5_ifc_resource_dump_menu_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('num_of_records', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('record', c.Array[struct_mlx5_ifc_resource_dump_menu_record_bits, Literal[0]], 64)])
@c.record
class struct_mlx5_ifc_resource_dump_resource_segment_bits(c.Struct):
  SIZE = 128
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  index1: c.Array[ctypes.c_ubyte, Literal[32]]
  index2: c.Array[ctypes.c_ubyte, Literal[32]]
  payload: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_resource_dump_resource_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('index1', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('index2', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('payload', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_resource_dump_terminate_segment_bits(c.Struct):
  SIZE = 32
  segment_header: struct_mlx5_ifc_resource_dump_segment_header_bits
struct_mlx5_ifc_resource_dump_terminate_segment_bits.register_fields([('segment_header', struct_mlx5_ifc_resource_dump_segment_header_bits, 0)])
@c.record
class struct_mlx5_ifc_menu_resource_dump_response_bits(c.Struct):
  SIZE = 384
  info: struct_mlx5_ifc_resource_dump_info_segment_bits
  cmd: struct_mlx5_ifc_resource_dump_command_segment_bits
  menu: struct_mlx5_ifc_resource_dump_menu_segment_bits
  terminate: struct_mlx5_ifc_resource_dump_terminate_segment_bits
struct_mlx5_ifc_menu_resource_dump_response_bits.register_fields([('info', struct_mlx5_ifc_resource_dump_info_segment_bits, 0), ('cmd', struct_mlx5_ifc_resource_dump_command_segment_bits, 128), ('menu', struct_mlx5_ifc_resource_dump_menu_segment_bits, 288), ('terminate', struct_mlx5_ifc_resource_dump_terminate_segment_bits, 352)])
_anonenum34: dict[int, str] = {(MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_PERIOD:=1): 'MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_PERIOD', (MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_MAX_COUNT:=2): 'MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_CQ_MAX_COUNT', (MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_OI:=4): 'MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_OI', (MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_C_EQN:=8): 'MLX5_MODIFY_FIELD_SELECT_MODIFY_FIELD_SELECT_C_EQN'}
@c.record
class struct_mlx5_ifc_modify_field_select_bits(c.Struct):
  SIZE = 32
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_modify_field_select_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_field_select_r_roce_np_bits(c.Struct):
  SIZE = 32
  field_select_r_roce_np: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_field_select_r_roce_np_bits.register_fields([('field_select_r_roce_np', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_field_select_r_roce_rp_bits(c.Struct):
  SIZE = 32
  field_select_r_roce_rp: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_field_select_r_roce_rp_bits.register_fields([('field_select_r_roce_rp', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
_anonenum35: dict[int, str] = {(MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPPP_MAX_RPS:=4): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPPP_MAX_RPS', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_TIME_RESET:=8): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_TIME_RESET', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_BYTE_RESET:=16): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_BYTE_RESET', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_THRESHOLD:=32): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_THRESHOLD', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MAX_RATE:=64): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MAX_RATE', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_AI_RATE:=128): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_AI_RATE', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_HAI_RATE:=256): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_HAI_RATE', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_GD:=512): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_GD', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_DEC_FAC:=1024): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_DEC_FAC', (MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_RATE:=2048): 'MLX5_FIELD_SELECT_802_1QAU_RP_FIELD_SELECT_8021QAURP_RPG_MIN_RATE'}
@c.record
class struct_mlx5_ifc_field_select_802_1qau_rp_bits(c.Struct):
  SIZE = 32
  field_select_8021qaurp: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_field_select_802_1qau_rp_bits.register_fields([('field_select_8021qaurp', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_phys_layer_recovery_cntrs_bits(c.Struct):
  SIZE = 1984
  total_successful_recovery_events: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[1952]]
struct_mlx5_ifc_phys_layer_recovery_cntrs_bits.register_fields([('total_successful_recovery_events', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[1952]], 32)])
@c.record
class struct_mlx5_ifc_phys_layer_cntrs_bits(c.Struct):
  SIZE = 1984
  time_since_last_clear_high: c.Array[ctypes.c_ubyte, Literal[32]]
  time_since_last_clear_low: c.Array[ctypes.c_ubyte, Literal[32]]
  symbol_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  symbol_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  sync_headers_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  sync_headers_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane0_high: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane0_low: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane1_high: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane1_low: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane2_high: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane2_low: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane3_high: c.Array[ctypes.c_ubyte, Literal[32]]
  edpl_bip_errors_lane3_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane0_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane0_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane1_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane1_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane2_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane2_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane3_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_corrected_blocks_lane3_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane0_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane0_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane1_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane1_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane2_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane2_low: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane3_high: c.Array[ctypes.c_ubyte, Literal[32]]
  fc_fec_uncorrectable_blocks_lane3_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_blocks_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_blocks_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_uncorrectable_blocks_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_uncorrectable_blocks_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_no_errors_blocks_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_no_errors_blocks_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_single_error_blocks_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_single_error_blocks_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_total_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_total_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane0_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane0_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane1_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane1_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane2_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane2_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane3_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rs_fec_corrected_symbols_lane3_low: c.Array[ctypes.c_ubyte, Literal[32]]
  link_down_events: c.Array[ctypes.c_ubyte, Literal[32]]
  successful_recovery_events: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_640: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_phys_layer_cntrs_bits.register_fields([('time_since_last_clear_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('time_since_last_clear_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('symbol_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('symbol_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('sync_headers_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('sync_headers_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('edpl_bip_errors_lane0_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('edpl_bip_errors_lane0_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('edpl_bip_errors_lane1_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('edpl_bip_errors_lane1_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('edpl_bip_errors_lane2_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('edpl_bip_errors_lane2_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('edpl_bip_errors_lane3_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('edpl_bip_errors_lane3_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('fc_fec_corrected_blocks_lane0_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('fc_fec_corrected_blocks_lane0_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('fc_fec_corrected_blocks_lane1_high', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('fc_fec_corrected_blocks_lane1_low', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('fc_fec_corrected_blocks_lane2_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('fc_fec_corrected_blocks_lane2_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('fc_fec_corrected_blocks_lane3_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('fc_fec_corrected_blocks_lane3_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('fc_fec_uncorrectable_blocks_lane0_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('fc_fec_uncorrectable_blocks_lane0_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('fc_fec_uncorrectable_blocks_lane1_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('fc_fec_uncorrectable_blocks_lane1_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('fc_fec_uncorrectable_blocks_lane2_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('fc_fec_uncorrectable_blocks_lane2_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('fc_fec_uncorrectable_blocks_lane3_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('fc_fec_uncorrectable_blocks_lane3_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('rs_fec_corrected_blocks_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('rs_fec_corrected_blocks_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('rs_fec_uncorrectable_blocks_high', c.Array[ctypes.c_ubyte, Literal[32]], 1024), ('rs_fec_uncorrectable_blocks_low', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('rs_fec_no_errors_blocks_high', c.Array[ctypes.c_ubyte, Literal[32]], 1088), ('rs_fec_no_errors_blocks_low', c.Array[ctypes.c_ubyte, Literal[32]], 1120), ('rs_fec_single_error_blocks_high', c.Array[ctypes.c_ubyte, Literal[32]], 1152), ('rs_fec_single_error_blocks_low', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('rs_fec_corrected_symbols_total_high', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('rs_fec_corrected_symbols_total_low', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('rs_fec_corrected_symbols_lane0_high', c.Array[ctypes.c_ubyte, Literal[32]], 1280), ('rs_fec_corrected_symbols_lane0_low', c.Array[ctypes.c_ubyte, Literal[32]], 1312), ('rs_fec_corrected_symbols_lane1_high', c.Array[ctypes.c_ubyte, Literal[32]], 1344), ('rs_fec_corrected_symbols_lane1_low', c.Array[ctypes.c_ubyte, Literal[32]], 1376), ('rs_fec_corrected_symbols_lane2_high', c.Array[ctypes.c_ubyte, Literal[32]], 1408), ('rs_fec_corrected_symbols_lane2_low', c.Array[ctypes.c_ubyte, Literal[32]], 1440), ('rs_fec_corrected_symbols_lane3_high', c.Array[ctypes.c_ubyte, Literal[32]], 1472), ('rs_fec_corrected_symbols_lane3_low', c.Array[ctypes.c_ubyte, Literal[32]], 1504), ('link_down_events', c.Array[ctypes.c_ubyte, Literal[32]], 1536), ('successful_recovery_events', c.Array[ctypes.c_ubyte, Literal[32]], 1568), ('reserved_at_640', c.Array[ctypes.c_ubyte, Literal[384]], 1600)])
@c.record
class struct_mlx5_ifc_phys_layer_statistical_cntrs_bits(c.Struct):
  SIZE = 1984
  time_since_last_clear_high: c.Array[ctypes.c_ubyte, Literal[32]]
  time_since_last_clear_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_received_bits_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_received_bits_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_symbol_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_symbol_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane0_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane0_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane1_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane1_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane2_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane2_low: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane3_high: c.Array[ctypes.c_ubyte, Literal[32]]
  phy_corrected_bits_lane3_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[1472]]
struct_mlx5_ifc_phys_layer_statistical_cntrs_bits.register_fields([('time_since_last_clear_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('time_since_last_clear_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('phy_received_bits_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('phy_received_bits_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('phy_symbol_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('phy_symbol_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('phy_corrected_bits_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('phy_corrected_bits_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('phy_corrected_bits_lane0_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('phy_corrected_bits_lane0_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('phy_corrected_bits_lane1_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('phy_corrected_bits_lane1_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('phy_corrected_bits_lane2_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('phy_corrected_bits_lane2_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('phy_corrected_bits_lane3_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('phy_corrected_bits_lane3_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[1472]], 512)])
@c.record
class struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 320
  symbol_error_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  link_error_recovery_counter: c.Array[ctypes.c_ubyte, Literal[8]]
  link_downed_counter: c.Array[ctypes.c_ubyte, Literal[8]]
  port_rcv_errors: c.Array[ctypes.c_ubyte, Literal[16]]
  port_rcv_remote_physical_errors: c.Array[ctypes.c_ubyte, Literal[16]]
  port_rcv_switch_relay_errors: c.Array[ctypes.c_ubyte, Literal[16]]
  port_xmit_discards: c.Array[ctypes.c_ubyte, Literal[16]]
  port_xmit_constraint_errors: c.Array[ctypes.c_ubyte, Literal[8]]
  port_rcv_constraint_errors: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[8]]
  link_overrun_errors: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  vl_15_dropped: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[128]]
  port_xmit_wait: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits.register_fields([('symbol_error_counter', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('link_error_recovery_counter', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('link_downed_counter', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('port_rcv_errors', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('port_rcv_remote_physical_errors', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('port_rcv_switch_relay_errors', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('port_xmit_discards', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('port_xmit_constraint_errors', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('port_rcv_constraint_errors', c.Array[ctypes.c_ubyte, Literal[8]], 104), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[8]], 112), ('link_overrun_errors', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('vl_15_dropped', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[128]], 160), ('port_xmit_wait', c.Array[ctypes.c_ubyte, Literal[32]], 288)])
@c.record
class struct_mlx5_ifc_ib_ext_port_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[768]]
  port_xmit_data_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_xmit_data_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_rcv_data_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_rcv_data_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_xmit_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_xmit_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_rcv_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_rcv_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[128]]
  port_unicast_xmit_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_unicast_xmit_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_multicast_xmit_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_multicast_xmit_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_unicast_rcv_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_unicast_rcv_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  port_multicast_rcv_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_multicast_rcv_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_580: c.Array[ctypes.c_ubyte, Literal[576]]
struct_mlx5_ifc_ib_ext_port_cntrs_grp_data_layout_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[768]], 0), ('port_xmit_data_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('port_xmit_data_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('port_rcv_data_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('port_rcv_data_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('port_xmit_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('port_xmit_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('port_rcv_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('port_rcv_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[128]], 1024), ('port_unicast_xmit_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 1152), ('port_unicast_xmit_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('port_multicast_xmit_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('port_multicast_xmit_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('port_unicast_rcv_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 1280), ('port_unicast_rcv_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 1312), ('port_multicast_rcv_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 1344), ('port_multicast_rcv_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 1376), ('reserved_at_580', c.Array[ctypes.c_ubyte, Literal[576]], 1408)])
@c.record
class struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  transmit_queue_high: c.Array[ctypes.c_ubyte, Literal[32]]
  transmit_queue_low: c.Array[ctypes.c_ubyte, Literal[32]]
  no_buffer_discard_uc_high: c.Array[ctypes.c_ubyte, Literal[32]]
  no_buffer_discard_uc_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1856]]
struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits.register_fields([('transmit_queue_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('transmit_queue_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('no_buffer_discard_uc_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('no_buffer_discard_uc_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1856]], 128)])
@c.record
class struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  wred_discard_high: c.Array[ctypes.c_ubyte, Literal[32]]
  wred_discard_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ecn_marked_tc_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ecn_marked_tc_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1856]]
struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits.register_fields([('wred_discard_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('wred_discard_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('ecn_marked_tc_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ecn_marked_tc_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1856]], 128)])
@c.record
class struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  rx_octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  rx_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[192]]
  tx_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_duration_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_duration_low: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_pause_high: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_pause_low: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_pause_duration_high: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_pause_duration_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_transition_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_pause_transition_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_discards_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_discards_low: c.Array[ctypes.c_ubyte, Literal[32]]
  device_stall_minor_watermark_cnt_high: c.Array[ctypes.c_ubyte, Literal[32]]
  device_stall_minor_watermark_cnt_low: c.Array[ctypes.c_ubyte, Literal[32]]
  device_stall_critical_watermark_cnt_high: c.Array[ctypes.c_ubyte, Literal[32]]
  device_stall_critical_watermark_cnt_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_480: c.Array[ctypes.c_ubyte, Literal[832]]
struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits.register_fields([('rx_octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('rx_octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('rx_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('rx_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('tx_octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('tx_octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[192]], 384), ('tx_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('tx_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('rx_pause_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('rx_pause_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('rx_pause_duration_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('rx_pause_duration_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('tx_pause_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('tx_pause_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('tx_pause_duration_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('tx_pause_duration_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('rx_pause_transition_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('rx_pause_transition_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('rx_discards_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('rx_discards_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('device_stall_minor_watermark_cnt_high', c.Array[ctypes.c_ubyte, Literal[32]], 1024), ('device_stall_minor_watermark_cnt_low', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('device_stall_critical_watermark_cnt_high', c.Array[ctypes.c_ubyte, Literal[32]], 1088), ('device_stall_critical_watermark_cnt_low', c.Array[ctypes.c_ubyte, Literal[32]], 1120), ('reserved_at_480', c.Array[ctypes.c_ubyte, Literal[832]], 1152)])
@c.record
class struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  port_transmit_wait_high: c.Array[ctypes.c_ubyte, Literal[32]]
  port_transmit_wait_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[256]]
  rx_buffer_almost_full_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_buffer_almost_full_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_buffer_full_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_buffer_full_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_icrc_encapsulated_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_icrc_encapsulated_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[1472]]
struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits.register_fields([('port_transmit_wait_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('port_transmit_wait_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[256]], 64), ('rx_buffer_almost_full_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('rx_buffer_almost_full_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('rx_buffer_full_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('rx_buffer_full_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('rx_icrc_encapsulated_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('rx_icrc_encapsulated_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[1472]], 512)])
@c.record
class struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  dot3stats_alignment_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_alignment_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_fcs_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_fcs_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_single_collision_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_single_collision_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_multiple_collision_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_multiple_collision_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_sqe_test_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_sqe_test_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_deferred_transmissions_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_deferred_transmissions_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_late_collisions_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_late_collisions_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_excessive_collisions_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_excessive_collisions_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_internal_mac_transmit_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_internal_mac_transmit_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_carrier_sense_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_carrier_sense_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_frame_too_longs_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_frame_too_longs_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_internal_mac_receive_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_internal_mac_receive_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_symbol_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3stats_symbol_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3control_in_unknown_opcodes_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3control_in_unknown_opcodes_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3in_pause_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3in_pause_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3out_pause_frames_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dot3out_pause_frames_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[960]]
struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits.register_fields([('dot3stats_alignment_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('dot3stats_alignment_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('dot3stats_fcs_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('dot3stats_fcs_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('dot3stats_single_collision_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('dot3stats_single_collision_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('dot3stats_multiple_collision_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('dot3stats_multiple_collision_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('dot3stats_sqe_test_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('dot3stats_sqe_test_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('dot3stats_deferred_transmissions_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('dot3stats_deferred_transmissions_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('dot3stats_late_collisions_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('dot3stats_late_collisions_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('dot3stats_excessive_collisions_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('dot3stats_excessive_collisions_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('dot3stats_internal_mac_transmit_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('dot3stats_internal_mac_transmit_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('dot3stats_carrier_sense_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('dot3stats_carrier_sense_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('dot3stats_frame_too_longs_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('dot3stats_frame_too_longs_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('dot3stats_internal_mac_receive_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('dot3stats_internal_mac_receive_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('dot3stats_symbol_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('dot3stats_symbol_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('dot3control_in_unknown_opcodes_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('dot3control_in_unknown_opcodes_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('dot3in_pause_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('dot3in_pause_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('dot3out_pause_frames_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('dot3out_pause_frames_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[960]], 1024)])
@c.record
class struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  ether_stats_drop_events_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_drop_events_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_broadcast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_broadcast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_multicast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_multicast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_crc_align_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_crc_align_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_undersize_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_undersize_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_oversize_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_oversize_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_fragments_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_fragments_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_jabbers_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_jabbers_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_collisions_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_collisions_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts64octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts64octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts65to127octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts65to127octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts128to255octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts128to255octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts256to511octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts256to511octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts512to1023octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts512to1023octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts1024to1518octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts1024to1518octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts1519to2047octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts1519to2047octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts2048to4095octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts2048to4095octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts4096to8191octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts4096to8191octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts8192to10239octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  ether_stats_pkts8192to10239octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_540: c.Array[ctypes.c_ubyte, Literal[640]]
struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits.register_fields([('ether_stats_drop_events_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('ether_stats_drop_events_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('ether_stats_octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ether_stats_octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('ether_stats_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ether_stats_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('ether_stats_broadcast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('ether_stats_broadcast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('ether_stats_multicast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('ether_stats_multicast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('ether_stats_crc_align_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('ether_stats_crc_align_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('ether_stats_undersize_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('ether_stats_undersize_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('ether_stats_oversize_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('ether_stats_oversize_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('ether_stats_fragments_high', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('ether_stats_fragments_low', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('ether_stats_jabbers_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('ether_stats_jabbers_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('ether_stats_collisions_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('ether_stats_collisions_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('ether_stats_pkts64octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('ether_stats_pkts64octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('ether_stats_pkts65to127octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('ether_stats_pkts65to127octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('ether_stats_pkts128to255octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('ether_stats_pkts128to255octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('ether_stats_pkts256to511octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('ether_stats_pkts256to511octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('ether_stats_pkts512to1023octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('ether_stats_pkts512to1023octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('ether_stats_pkts1024to1518octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 1024), ('ether_stats_pkts1024to1518octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('ether_stats_pkts1519to2047octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 1088), ('ether_stats_pkts1519to2047octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 1120), ('ether_stats_pkts2048to4095octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 1152), ('ether_stats_pkts2048to4095octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('ether_stats_pkts4096to8191octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('ether_stats_pkts4096to8191octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('ether_stats_pkts8192to10239octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 1280), ('ether_stats_pkts8192to10239octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 1312), ('reserved_at_540', c.Array[ctypes.c_ubyte, Literal[640]], 1344)])
@c.record
class struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  if_in_octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_ucast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_ucast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_discards_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_discards_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_unknown_protos_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_unknown_protos_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_octets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_octets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_ucast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_ucast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_discards_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_discards_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_multicast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_multicast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_broadcast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_in_broadcast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_multicast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_multicast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_broadcast_pkts_high: c.Array[ctypes.c_ubyte, Literal[32]]
  if_out_broadcast_pkts_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_340: c.Array[ctypes.c_ubyte, Literal[1152]]
struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits.register_fields([('if_in_octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('if_in_octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('if_in_ucast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('if_in_ucast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('if_in_discards_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('if_in_discards_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('if_in_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('if_in_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('if_in_unknown_protos_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('if_in_unknown_protos_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('if_out_octets_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('if_out_octets_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('if_out_ucast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('if_out_ucast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('if_out_discards_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('if_out_discards_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('if_out_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('if_out_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('if_in_multicast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('if_in_multicast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('if_in_broadcast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('if_in_broadcast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('if_out_multicast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('if_out_multicast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('if_out_broadcast_pkts_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('if_out_broadcast_pkts_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('reserved_at_340', c.Array[ctypes.c_ubyte, Literal[1152]], 832)])
@c.record
class struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  a_frames_transmitted_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frames_transmitted_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frames_received_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frames_received_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frame_check_sequence_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frame_check_sequence_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_alignment_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_alignment_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_octets_transmitted_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_octets_transmitted_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_octets_received_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_octets_received_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_multicast_frames_xmitted_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_multicast_frames_xmitted_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_broadcast_frames_xmitted_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_broadcast_frames_xmitted_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_multicast_frames_received_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_multicast_frames_received_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_broadcast_frames_received_ok_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_broadcast_frames_received_ok_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_in_range_length_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_in_range_length_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_out_of_range_length_field_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_out_of_range_length_field_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frame_too_long_errors_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_frame_too_long_errors_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_symbol_error_during_carrier_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_symbol_error_during_carrier_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_mac_control_frames_transmitted_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_mac_control_frames_transmitted_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_mac_control_frames_received_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_mac_control_frames_received_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_unsupported_opcodes_received_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_unsupported_opcodes_received_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_pause_mac_ctrl_frames_received_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_pause_mac_ctrl_frames_received_low: c.Array[ctypes.c_ubyte, Literal[32]]
  a_pause_mac_ctrl_frames_transmitted_high: c.Array[ctypes.c_ubyte, Literal[32]]
  a_pause_mac_ctrl_frames_transmitted_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_4c0: c.Array[ctypes.c_ubyte, Literal[768]]
struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits.register_fields([('a_frames_transmitted_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('a_frames_transmitted_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('a_frames_received_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('a_frames_received_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('a_frame_check_sequence_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('a_frame_check_sequence_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('a_alignment_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('a_alignment_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('a_octets_transmitted_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('a_octets_transmitted_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('a_octets_received_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('a_octets_received_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('a_multicast_frames_xmitted_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('a_multicast_frames_xmitted_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('a_broadcast_frames_xmitted_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('a_broadcast_frames_xmitted_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('a_multicast_frames_received_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('a_multicast_frames_received_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('a_broadcast_frames_received_ok_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('a_broadcast_frames_received_ok_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('a_in_range_length_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('a_in_range_length_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('a_out_of_range_length_field_high', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('a_out_of_range_length_field_low', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('a_frame_too_long_errors_high', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('a_frame_too_long_errors_low', c.Array[ctypes.c_ubyte, Literal[32]], 800), ('a_symbol_error_during_carrier_high', c.Array[ctypes.c_ubyte, Literal[32]], 832), ('a_symbol_error_during_carrier_low', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('a_mac_control_frames_transmitted_high', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('a_mac_control_frames_transmitted_low', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('a_mac_control_frames_received_high', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('a_mac_control_frames_received_low', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('a_unsupported_opcodes_received_high', c.Array[ctypes.c_ubyte, Literal[32]], 1024), ('a_unsupported_opcodes_received_low', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('a_pause_mac_ctrl_frames_received_high', c.Array[ctypes.c_ubyte, Literal[32]], 1088), ('a_pause_mac_ctrl_frames_received_low', c.Array[ctypes.c_ubyte, Literal[32]], 1120), ('a_pause_mac_ctrl_frames_transmitted_high', c.Array[ctypes.c_ubyte, Literal[32]], 1152), ('a_pause_mac_ctrl_frames_transmitted_low', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('reserved_at_4c0', c.Array[ctypes.c_ubyte, Literal[768]], 1216)])
@c.record
class struct_mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits(c.Struct):
  SIZE = 1984
  life_time_counter_high: c.Array[ctypes.c_ubyte, Literal[32]]
  life_time_counter_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_errors: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_errors: c.Array[ctypes.c_ubyte, Literal[32]]
  l0_to_recovery_eieos: c.Array[ctypes.c_ubyte, Literal[32]]
  l0_to_recovery_ts: c.Array[ctypes.c_ubyte, Literal[32]]
  l0_to_recovery_framing: c.Array[ctypes.c_ubyte, Literal[32]]
  l0_to_recovery_retrain: c.Array[ctypes.c_ubyte, Literal[32]]
  crc_error_dllp: c.Array[ctypes.c_ubyte, Literal[32]]
  crc_error_tlp: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_overflow_buffer_pkt_high: c.Array[ctypes.c_ubyte, Literal[32]]
  tx_overflow_buffer_pkt_low: c.Array[ctypes.c_ubyte, Literal[32]]
  outbound_stalled_reads: c.Array[ctypes.c_ubyte, Literal[32]]
  outbound_stalled_writes: c.Array[ctypes.c_ubyte, Literal[32]]
  outbound_stalled_reads_events: c.Array[ctypes.c_ubyte, Literal[32]]
  outbound_stalled_writes_events: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[1472]]
struct_mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits.register_fields([('life_time_counter_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('life_time_counter_low', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('rx_errors', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('tx_errors', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('l0_to_recovery_eieos', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('l0_to_recovery_ts', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('l0_to_recovery_framing', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('l0_to_recovery_retrain', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('crc_error_dllp', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('crc_error_tlp', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('tx_overflow_buffer_pkt_high', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('tx_overflow_buffer_pkt_low', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('outbound_stalled_reads', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('outbound_stalled_writes', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('outbound_stalled_reads_events', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('outbound_stalled_writes_events', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[1472]], 512)])
@c.record
class struct_mlx5_ifc_cmd_inter_comp_event_bits(c.Struct):
  SIZE = 224
  command_completion_vector: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[192]]
struct_mlx5_ifc_cmd_inter_comp_event_bits.register_fields([('command_completion_vector', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[192]], 32)])
@c.record
class struct_mlx5_ifc_stall_vl_event_bits(c.Struct):
  SIZE = 192
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24]]
  port_num: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_19: c.Array[ctypes.c_ubyte, Literal[3]]
  vl: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_stall_vl_event_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('port_num', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('reserved_at_19', c.Array[ctypes.c_ubyte, Literal[3]], 25), ('vl', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[160]], 32)])
@c.record
class struct_mlx5_ifc_db_bf_congestion_event_bits(c.Struct):
  SIZE = 192
  event_subtype: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[8]]
  congestion_level: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_db_bf_congestion_event_bits.register_fields([('event_subtype', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('congestion_level', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[160]], 32)])
@c.record
class struct_mlx5_ifc_gpio_event_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[96]]
  gpio_event_hi: c.Array[ctypes.c_ubyte, Literal[32]]
  gpio_event_lo: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_gpio_event_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[96]], 0), ('gpio_event_hi', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('gpio_event_lo', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[64]], 160)])
@c.record
class struct_mlx5_ifc_port_state_change_event_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[28]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_port_state_change_event_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[28]], 68), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[128]], 96)])
@c.record
class struct_mlx5_ifc_dropped_packet_logged_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[224]]
struct_mlx5_ifc_dropped_packet_logged_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[224]], 0)])
@c.record
class struct_mlx5_ifc_nic_cap_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[26]]
  vhca_icm_ctrl: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1b: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_nic_cap_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[26]], 0), ('vhca_icm_ctrl', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('reserved_at_1b', c.Array[ctypes.c_ubyte, Literal[5]], 27), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
@c.record
class struct_mlx5_ifc_default_timeout_bits(c.Struct):
  SIZE = 32
  to_multiplier: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[9]]
  to_value: c.Array[ctypes.c_ubyte, Literal[20]]
struct_mlx5_ifc_default_timeout_bits.register_fields([('to_multiplier', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[9]], 3), ('to_value', c.Array[ctypes.c_ubyte, Literal[20]], 12)])
@c.record
class struct_mlx5_ifc_dtor_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  pcie_toggle_to: struct_mlx5_ifc_default_timeout_bits
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[96]]
  health_poll_to: struct_mlx5_ifc_default_timeout_bits
  full_crdump_to: struct_mlx5_ifc_default_timeout_bits
  fw_reset_to: struct_mlx5_ifc_default_timeout_bits
  flush_on_err_to: struct_mlx5_ifc_default_timeout_bits
  pci_sync_update_to: struct_mlx5_ifc_default_timeout_bits
  tear_down_to: struct_mlx5_ifc_default_timeout_bits
  fsm_reactivate_to: struct_mlx5_ifc_default_timeout_bits
  reclaim_pages_to: struct_mlx5_ifc_default_timeout_bits
  reclaim_vfs_pages_to: struct_mlx5_ifc_default_timeout_bits
  reset_unload_to: struct_mlx5_ifc_default_timeout_bits
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dtor_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('pcie_toggle_to', struct_mlx5_ifc_default_timeout_bits, 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[96]], 64), ('health_poll_to', struct_mlx5_ifc_default_timeout_bits, 160), ('full_crdump_to', struct_mlx5_ifc_default_timeout_bits, 192), ('fw_reset_to', struct_mlx5_ifc_default_timeout_bits, 224), ('flush_on_err_to', struct_mlx5_ifc_default_timeout_bits, 256), ('pci_sync_update_to', struct_mlx5_ifc_default_timeout_bits, 288), ('tear_down_to', struct_mlx5_ifc_default_timeout_bits, 320), ('fsm_reactivate_to', struct_mlx5_ifc_default_timeout_bits, 352), ('reclaim_pages_to', struct_mlx5_ifc_default_timeout_bits, 384), ('reclaim_vfs_pages_to', struct_mlx5_ifc_default_timeout_bits, 416), ('reset_unload_to', struct_mlx5_ifc_default_timeout_bits, 448), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
@c.record
class struct_mlx5_ifc_vhca_icm_ctrl_reg_bits(c.Struct):
  SIZE = 512
  vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[15]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[160]]
  cur_alloc_icm: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[288]]
struct_mlx5_ifc_vhca_icm_ctrl_reg_bits.register_fields([('vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[15]], 1), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[160]], 32), ('cur_alloc_icm', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[288]], 224)])
_anonenum36: dict[int, str] = {(MLX5_CQ_ERROR_SYNDROME_CQ_OVERRUN:=1): 'MLX5_CQ_ERROR_SYNDROME_CQ_OVERRUN', (MLX5_CQ_ERROR_SYNDROME_CQ_ACCESS_VIOLATION_ERROR:=2): 'MLX5_CQ_ERROR_SYNDROME_CQ_ACCESS_VIOLATION_ERROR'}
@c.record
class struct_mlx5_ifc_cq_error_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_cq_error_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[128]], 96)])
@c.record
class struct_mlx5_ifc_rdma_page_fault_event_bits(c.Struct):
  SIZE = 224
  bytes_committed: c.Array[ctypes.c_ubyte, Literal[32]]
  r_key: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_len: c.Array[ctypes.c_ubyte, Literal[16]]
  rdma_op_len: c.Array[ctypes.c_ubyte, Literal[32]]
  rdma_va: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[5]]
  rdma: c.Array[ctypes.c_ubyte, Literal[1]]
  write: c.Array[ctypes.c_ubyte, Literal[1]]
  requestor: c.Array[ctypes.c_ubyte, Literal[1]]
  qp_number: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_rdma_page_fault_event_bits.register_fields([('bytes_committed', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('r_key', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('packet_len', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('rdma_op_len', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('rdma_va', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[5]], 192), ('rdma', c.Array[ctypes.c_ubyte, Literal[1]], 197), ('write', c.Array[ctypes.c_ubyte, Literal[1]], 198), ('requestor', c.Array[ctypes.c_ubyte, Literal[1]], 199), ('qp_number', c.Array[ctypes.c_ubyte, Literal[24]], 200)])
@c.record
class struct_mlx5_ifc_wqe_associated_page_fault_event_bits(c.Struct):
  SIZE = 224
  bytes_committed: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  wqe_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  len: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[5]]
  rdma: c.Array[ctypes.c_ubyte, Literal[1]]
  write_read: c.Array[ctypes.c_ubyte, Literal[1]]
  requestor: c.Array[ctypes.c_ubyte, Literal[1]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_wqe_associated_page_fault_event_bits.register_fields([('bytes_committed', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('wqe_index', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('len', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[96]], 96), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[5]], 192), ('rdma', c.Array[ctypes.c_ubyte, Literal[1]], 197), ('write_read', c.Array[ctypes.c_ubyte, Literal[1]], 198), ('requestor', c.Array[ctypes.c_ubyte, Literal[1]], 199), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 200)])
@c.record
class struct_mlx5_ifc_qp_events_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[160]]
  type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn_rqn_sqn: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_qp_events_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[160]], 0), ('type', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('reserved_at_a8', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('qpn_rqn_sqn', c.Array[ctypes.c_ubyte, Literal[24]], 200)])
@c.record
class struct_mlx5_ifc_dct_events_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[192]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  dct_number: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_dct_events_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[192]], 0), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('dct_number', c.Array[ctypes.c_ubyte, Literal[24]], 200)])
@c.record
class struct_mlx5_ifc_comp_event_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[192]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  cq_number: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_comp_event_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[192]], 0), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('cq_number', c.Array[ctypes.c_ubyte, Literal[24]], 200)])
_anonenum37: dict[int, str] = {(MLX5_QPC_STATE_RST:=0): 'MLX5_QPC_STATE_RST', (MLX5_QPC_STATE_INIT:=1): 'MLX5_QPC_STATE_INIT', (MLX5_QPC_STATE_RTR:=2): 'MLX5_QPC_STATE_RTR', (MLX5_QPC_STATE_RTS:=3): 'MLX5_QPC_STATE_RTS', (MLX5_QPC_STATE_SQER:=4): 'MLX5_QPC_STATE_SQER', (MLX5_QPC_STATE_ERR:=6): 'MLX5_QPC_STATE_ERR', (MLX5_QPC_STATE_SQD:=7): 'MLX5_QPC_STATE_SQD', (MLX5_QPC_STATE_SUSPENDED:=9): 'MLX5_QPC_STATE_SUSPENDED'}
_anonenum38: dict[int, str] = {(MLX5_QPC_ST_RC:=0): 'MLX5_QPC_ST_RC', (MLX5_QPC_ST_UC:=1): 'MLX5_QPC_ST_UC', (MLX5_QPC_ST_UD:=2): 'MLX5_QPC_ST_UD', (MLX5_QPC_ST_XRC:=3): 'MLX5_QPC_ST_XRC', (MLX5_QPC_ST_DCI:=5): 'MLX5_QPC_ST_DCI', (MLX5_QPC_ST_QP0:=7): 'MLX5_QPC_ST_QP0', (MLX5_QPC_ST_QP1:=8): 'MLX5_QPC_ST_QP1', (MLX5_QPC_ST_RAW_DATAGRAM:=9): 'MLX5_QPC_ST_RAW_DATAGRAM', (MLX5_QPC_ST_REG_UMR:=12): 'MLX5_QPC_ST_REG_UMR'}
_anonenum39: dict[int, str] = {(MLX5_QPC_PM_STATE_ARMED:=0): 'MLX5_QPC_PM_STATE_ARMED', (MLX5_QPC_PM_STATE_REARM:=1): 'MLX5_QPC_PM_STATE_REARM', (MLX5_QPC_PM_STATE_RESERVED:=2): 'MLX5_QPC_PM_STATE_RESERVED', (MLX5_QPC_PM_STATE_MIGRATED:=3): 'MLX5_QPC_PM_STATE_MIGRATED'}
_anonenum40: dict[int, str] = {(MLX5_QPC_OFFLOAD_TYPE_RNDV:=1): 'MLX5_QPC_OFFLOAD_TYPE_RNDV'}
_anonenum41: dict[int, str] = {(MLX5_QPC_END_PADDING_MODE_SCATTER_AS_IS:=0): 'MLX5_QPC_END_PADDING_MODE_SCATTER_AS_IS', (MLX5_QPC_END_PADDING_MODE_PAD_TO_CACHE_LINE_ALIGNMENT:=1): 'MLX5_QPC_END_PADDING_MODE_PAD_TO_CACHE_LINE_ALIGNMENT'}
_anonenum42: dict[int, str] = {(MLX5_QPC_MTU_256_BYTES:=1): 'MLX5_QPC_MTU_256_BYTES', (MLX5_QPC_MTU_512_BYTES:=2): 'MLX5_QPC_MTU_512_BYTES', (MLX5_QPC_MTU_1K_BYTES:=3): 'MLX5_QPC_MTU_1K_BYTES', (MLX5_QPC_MTU_2K_BYTES:=4): 'MLX5_QPC_MTU_2K_BYTES', (MLX5_QPC_MTU_4K_BYTES:=5): 'MLX5_QPC_MTU_4K_BYTES', (MLX5_QPC_MTU_RAW_ETHERNET_QP:=7): 'MLX5_QPC_MTU_RAW_ETHERNET_QP'}
_anonenum43: dict[int, str] = {(MLX5_QPC_ATOMIC_MODE_IB_SPEC:=1): 'MLX5_QPC_ATOMIC_MODE_IB_SPEC', (MLX5_QPC_ATOMIC_MODE_ONLY_8B:=2): 'MLX5_QPC_ATOMIC_MODE_ONLY_8B', (MLX5_QPC_ATOMIC_MODE_UP_TO_8B:=3): 'MLX5_QPC_ATOMIC_MODE_UP_TO_8B', (MLX5_QPC_ATOMIC_MODE_UP_TO_16B:=4): 'MLX5_QPC_ATOMIC_MODE_UP_TO_16B', (MLX5_QPC_ATOMIC_MODE_UP_TO_32B:=5): 'MLX5_QPC_ATOMIC_MODE_UP_TO_32B', (MLX5_QPC_ATOMIC_MODE_UP_TO_64B:=6): 'MLX5_QPC_ATOMIC_MODE_UP_TO_64B', (MLX5_QPC_ATOMIC_MODE_UP_TO_128B:=7): 'MLX5_QPC_ATOMIC_MODE_UP_TO_128B', (MLX5_QPC_ATOMIC_MODE_UP_TO_256B:=8): 'MLX5_QPC_ATOMIC_MODE_UP_TO_256B'}
_anonenum44: dict[int, str] = {(MLX5_QPC_CS_REQ_DISABLE:=0): 'MLX5_QPC_CS_REQ_DISABLE', (MLX5_QPC_CS_REQ_UP_TO_32B:=17): 'MLX5_QPC_CS_REQ_UP_TO_32B', (MLX5_QPC_CS_REQ_UP_TO_64B:=34): 'MLX5_QPC_CS_REQ_UP_TO_64B'}
_anonenum45: dict[int, str] = {(MLX5_QPC_CS_RES_DISABLE:=0): 'MLX5_QPC_CS_RES_DISABLE', (MLX5_QPC_CS_RES_UP_TO_32B:=1): 'MLX5_QPC_CS_RES_UP_TO_32B', (MLX5_QPC_CS_RES_UP_TO_64B:=2): 'MLX5_QPC_CS_RES_UP_TO_64B'}
_anonenum46: dict[int, str] = {(MLX5_TIMESTAMP_FORMAT_FREE_RUNNING:=0): 'MLX5_TIMESTAMP_FORMAT_FREE_RUNNING', (MLX5_TIMESTAMP_FORMAT_DEFAULT:=1): 'MLX5_TIMESTAMP_FORMAT_DEFAULT', (MLX5_TIMESTAMP_FORMAT_REAL_TIME:=2): 'MLX5_TIMESTAMP_FORMAT_REAL_TIME'}
@c.record
class struct_mlx5_ifc_qpc_bits(c.Struct):
  SIZE = 1856
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[4]]
  st: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[2]]
  isolate_vl_tc: c.Array[ctypes.c_ubyte, Literal[1]]
  pm_state: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_15: c.Array[ctypes.c_ubyte, Literal[1]]
  req_e2e_credit_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  offload_type: c.Array[ctypes.c_ubyte, Literal[4]]
  end_padding_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1e: c.Array[ctypes.c_ubyte, Literal[2]]
  wq_signature: c.Array[ctypes.c_ubyte, Literal[1]]
  block_lb_mc: c.Array[ctypes.c_ubyte, Literal[1]]
  atomic_like_write_en: c.Array[ctypes.c_ubyte, Literal[1]]
  latency_sensitive: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_24: c.Array[ctypes.c_ubyte, Literal[1]]
  drain_sigerr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_26: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_force: c.Array[ctypes.c_ubyte, Literal[1]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  mtu: c.Array[ctypes.c_ubyte, Literal[3]]
  log_msg_max: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[1]]
  log_rq_size: c.Array[ctypes.c_ubyte, Literal[4]]
  log_rq_stride: c.Array[ctypes.c_ubyte, Literal[3]]
  no_sq: c.Array[ctypes.c_ubyte, Literal[1]]
  log_sq_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_55: c.Array[ctypes.c_ubyte, Literal[1]]
  retry_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_5a: c.Array[ctypes.c_ubyte, Literal[1]]
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  ulp_stateless_offload_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
  uar_page: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  remote_qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  primary_address_path: struct_mlx5_ifc_ads_bits
  secondary_address_path: struct_mlx5_ifc_ads_bits
  log_ack_req_freq: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_384: c.Array[ctypes.c_ubyte, Literal[4]]
  log_sra_max: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_38b: c.Array[ctypes.c_ubyte, Literal[2]]
  retry_count: c.Array[ctypes.c_ubyte, Literal[3]]
  rnr_retry: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_393: c.Array[ctypes.c_ubyte, Literal[1]]
  fre: c.Array[ctypes.c_ubyte, Literal[1]]
  cur_rnr_retry: c.Array[ctypes.c_ubyte, Literal[3]]
  cur_retry_count: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_39b: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_3a0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_3c0: c.Array[ctypes.c_ubyte, Literal[8]]
  next_send_psn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_3e0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_num_dci_stream_channels: c.Array[ctypes.c_ubyte, Literal[5]]
  cqn_snd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[3]]
  log_num_dci_errored_streams: c.Array[ctypes.c_ubyte, Literal[5]]
  deth_sqpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_420: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_440: c.Array[ctypes.c_ubyte, Literal[8]]
  last_acked_psn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_460: c.Array[ctypes.c_ubyte, Literal[8]]
  ssn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_480: c.Array[ctypes.c_ubyte, Literal[8]]
  log_rra_max: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_48b: c.Array[ctypes.c_ubyte, Literal[1]]
  atomic_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  rre: c.Array[ctypes.c_ubyte, Literal[1]]
  rwe: c.Array[ctypes.c_ubyte, Literal[1]]
  rae: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_493: c.Array[ctypes.c_ubyte, Literal[1]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_49a: c.Array[ctypes.c_ubyte, Literal[2]]
  dp_ordering_1: c.Array[ctypes.c_ubyte, Literal[1]]
  cd_slave_receive: c.Array[ctypes.c_ubyte, Literal[1]]
  cd_slave_send: c.Array[ctypes.c_ubyte, Literal[1]]
  cd_master: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4a0: c.Array[ctypes.c_ubyte, Literal[3]]
  min_rnr_nak: c.Array[ctypes.c_ubyte, Literal[5]]
  next_rcv_psn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_4c0: c.Array[ctypes.c_ubyte, Literal[8]]
  xrcd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_4e0: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn_rcv: c.Array[ctypes.c_ubyte, Literal[24]]
  dbr_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  q_key: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_560: c.Array[ctypes.c_ubyte, Literal[5]]
  rq_type: c.Array[ctypes.c_ubyte, Literal[3]]
  srqn_rmpn_xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_580: c.Array[ctypes.c_ubyte, Literal[8]]
  rmsn: c.Array[ctypes.c_ubyte, Literal[24]]
  hw_sq_wqebb_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  sw_sq_wqebb_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  hw_rq_counter: c.Array[ctypes.c_ubyte, Literal[32]]
  sw_rq_counter: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_600: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_620: c.Array[ctypes.c_ubyte, Literal[15]]
  cgs: c.Array[ctypes.c_ubyte, Literal[1]]
  cs_req: c.Array[ctypes.c_ubyte, Literal[8]]
  cs_res: c.Array[ctypes.c_ubyte, Literal[8]]
  dc_access_key: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_680: c.Array[ctypes.c_ubyte, Literal[3]]
  dbr_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_684: c.Array[ctypes.c_ubyte, Literal[188]]
struct_mlx5_ifc_qpc_bits.register_fields([('state', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('st', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('isolate_vl_tc', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('pm_state', c.Array[ctypes.c_ubyte, Literal[2]], 19), ('reserved_at_15', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('req_e2e_credit_mode', c.Array[ctypes.c_ubyte, Literal[2]], 22), ('offload_type', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('end_padding_mode', c.Array[ctypes.c_ubyte, Literal[2]], 28), ('reserved_at_1e', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('wq_signature', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('block_lb_mc', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('atomic_like_write_en', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('latency_sensitive', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('reserved_at_24', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('drain_sigerr', c.Array[ctypes.c_ubyte, Literal[1]], 37), ('reserved_at_26', c.Array[ctypes.c_ubyte, Literal[1]], 38), ('dp_ordering_force', c.Array[ctypes.c_ubyte, Literal[1]], 39), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('mtu', c.Array[ctypes.c_ubyte, Literal[3]], 64), ('log_msg_max', c.Array[ctypes.c_ubyte, Literal[5]], 67), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[1]], 72), ('log_rq_size', c.Array[ctypes.c_ubyte, Literal[4]], 73), ('log_rq_stride', c.Array[ctypes.c_ubyte, Literal[3]], 77), ('no_sq', c.Array[ctypes.c_ubyte, Literal[1]], 80), ('log_sq_size', c.Array[ctypes.c_ubyte, Literal[4]], 81), ('reserved_at_55', c.Array[ctypes.c_ubyte, Literal[1]], 85), ('retry_mode', c.Array[ctypes.c_ubyte, Literal[2]], 86), ('ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 88), ('reserved_at_5a', c.Array[ctypes.c_ubyte, Literal[1]], 90), ('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 91), ('ulp_stateless_offload_mode', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('uar_page', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[3]], 160), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 163), ('remote_qpn', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('primary_address_path', struct_mlx5_ifc_ads_bits, 192), ('secondary_address_path', struct_mlx5_ifc_ads_bits, 544), ('log_ack_req_freq', c.Array[ctypes.c_ubyte, Literal[4]], 896), ('reserved_at_384', c.Array[ctypes.c_ubyte, Literal[4]], 900), ('log_sra_max', c.Array[ctypes.c_ubyte, Literal[3]], 904), ('reserved_at_38b', c.Array[ctypes.c_ubyte, Literal[2]], 907), ('retry_count', c.Array[ctypes.c_ubyte, Literal[3]], 909), ('rnr_retry', c.Array[ctypes.c_ubyte, Literal[3]], 912), ('reserved_at_393', c.Array[ctypes.c_ubyte, Literal[1]], 915), ('fre', c.Array[ctypes.c_ubyte, Literal[1]], 916), ('cur_rnr_retry', c.Array[ctypes.c_ubyte, Literal[3]], 917), ('cur_retry_count', c.Array[ctypes.c_ubyte, Literal[3]], 920), ('reserved_at_39b', c.Array[ctypes.c_ubyte, Literal[5]], 923), ('reserved_at_3a0', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('reserved_at_3c0', c.Array[ctypes.c_ubyte, Literal[8]], 960), ('next_send_psn', c.Array[ctypes.c_ubyte, Literal[24]], 968), ('reserved_at_3e0', c.Array[ctypes.c_ubyte, Literal[3]], 992), ('log_num_dci_stream_channels', c.Array[ctypes.c_ubyte, Literal[5]], 995), ('cqn_snd', c.Array[ctypes.c_ubyte, Literal[24]], 1000), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[3]], 1024), ('log_num_dci_errored_streams', c.Array[ctypes.c_ubyte, Literal[5]], 1027), ('deth_sqpn', c.Array[ctypes.c_ubyte, Literal[24]], 1032), ('reserved_at_420', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('reserved_at_440', c.Array[ctypes.c_ubyte, Literal[8]], 1088), ('last_acked_psn', c.Array[ctypes.c_ubyte, Literal[24]], 1096), ('reserved_at_460', c.Array[ctypes.c_ubyte, Literal[8]], 1120), ('ssn', c.Array[ctypes.c_ubyte, Literal[24]], 1128), ('reserved_at_480', c.Array[ctypes.c_ubyte, Literal[8]], 1152), ('log_rra_max', c.Array[ctypes.c_ubyte, Literal[3]], 1160), ('reserved_at_48b', c.Array[ctypes.c_ubyte, Literal[1]], 1163), ('atomic_mode', c.Array[ctypes.c_ubyte, Literal[4]], 1164), ('rre', c.Array[ctypes.c_ubyte, Literal[1]], 1168), ('rwe', c.Array[ctypes.c_ubyte, Literal[1]], 1169), ('rae', c.Array[ctypes.c_ubyte, Literal[1]], 1170), ('reserved_at_493', c.Array[ctypes.c_ubyte, Literal[1]], 1171), ('page_offset', c.Array[ctypes.c_ubyte, Literal[6]], 1172), ('reserved_at_49a', c.Array[ctypes.c_ubyte, Literal[2]], 1178), ('dp_ordering_1', c.Array[ctypes.c_ubyte, Literal[1]], 1180), ('cd_slave_receive', c.Array[ctypes.c_ubyte, Literal[1]], 1181), ('cd_slave_send', c.Array[ctypes.c_ubyte, Literal[1]], 1182), ('cd_master', c.Array[ctypes.c_ubyte, Literal[1]], 1183), ('reserved_at_4a0', c.Array[ctypes.c_ubyte, Literal[3]], 1184), ('min_rnr_nak', c.Array[ctypes.c_ubyte, Literal[5]], 1187), ('next_rcv_psn', c.Array[ctypes.c_ubyte, Literal[24]], 1192), ('reserved_at_4c0', c.Array[ctypes.c_ubyte, Literal[8]], 1216), ('xrcd', c.Array[ctypes.c_ubyte, Literal[24]], 1224), ('reserved_at_4e0', c.Array[ctypes.c_ubyte, Literal[8]], 1248), ('cqn_rcv', c.Array[ctypes.c_ubyte, Literal[24]], 1256), ('dbr_addr', c.Array[ctypes.c_ubyte, Literal[64]], 1280), ('q_key', c.Array[ctypes.c_ubyte, Literal[32]], 1344), ('reserved_at_560', c.Array[ctypes.c_ubyte, Literal[5]], 1376), ('rq_type', c.Array[ctypes.c_ubyte, Literal[3]], 1381), ('srqn_rmpn_xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 1384), ('reserved_at_580', c.Array[ctypes.c_ubyte, Literal[8]], 1408), ('rmsn', c.Array[ctypes.c_ubyte, Literal[24]], 1416), ('hw_sq_wqebb_counter', c.Array[ctypes.c_ubyte, Literal[16]], 1440), ('sw_sq_wqebb_counter', c.Array[ctypes.c_ubyte, Literal[16]], 1456), ('hw_rq_counter', c.Array[ctypes.c_ubyte, Literal[32]], 1472), ('sw_rq_counter', c.Array[ctypes.c_ubyte, Literal[32]], 1504), ('reserved_at_600', c.Array[ctypes.c_ubyte, Literal[32]], 1536), ('reserved_at_620', c.Array[ctypes.c_ubyte, Literal[15]], 1568), ('cgs', c.Array[ctypes.c_ubyte, Literal[1]], 1583), ('cs_req', c.Array[ctypes.c_ubyte, Literal[8]], 1584), ('cs_res', c.Array[ctypes.c_ubyte, Literal[8]], 1592), ('dc_access_key', c.Array[ctypes.c_ubyte, Literal[64]], 1600), ('reserved_at_680', c.Array[ctypes.c_ubyte, Literal[3]], 1664), ('dbr_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 1667), ('reserved_at_684', c.Array[ctypes.c_ubyte, Literal[188]], 1668)])
@c.record
class struct_mlx5_ifc_roce_addr_layout_bits(c.Struct):
  SIZE = 256
  source_l3_address: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[3]]
  vlan_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  vlan_id: c.Array[ctypes.c_ubyte, Literal[12]]
  source_mac_47_32: c.Array[ctypes.c_ubyte, Literal[16]]
  source_mac_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[20]]
  roce_l3_type: c.Array[ctypes.c_ubyte, Literal[4]]
  roce_version: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_roce_addr_layout_bits.register_fields([('source_l3_address', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 0), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[3]], 128), ('vlan_valid', c.Array[ctypes.c_ubyte, Literal[1]], 131), ('vlan_id', c.Array[ctypes.c_ubyte, Literal[12]], 132), ('source_mac_47_32', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('source_mac_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[20]], 192), ('roce_l3_type', c.Array[ctypes.c_ubyte, Literal[4]], 212), ('roce_version', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_crypto_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[3]]
  synchronize_dek: c.Array[ctypes.c_ubyte, Literal[1]]
  int_kek_manual: c.Array[ctypes.c_ubyte, Literal[1]]
  int_kek_auto: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6: c.Array[ctypes.c_ubyte, Literal[26]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[3]]
  log_dek_max_alloc: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_deks: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[3]]
  log_dek_granularity: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_num_int_kek: c.Array[ctypes.c_ubyte, Literal[5]]
  sw_wrapped_dek: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1920]]
struct_mlx5_ifc_crypto_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('synchronize_dek', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('int_kek_manual', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('int_kek_auto', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('reserved_at_6', c.Array[ctypes.c_ubyte, Literal[26]], 6), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[3]], 32), ('log_dek_max_alloc', c.Array[ctypes.c_ubyte, Literal[5]], 35), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[3]], 40), ('log_max_num_deks', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[3]], 96), ('log_dek_granularity', c.Array[ctypes.c_ubyte, Literal[5]], 99), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[3]], 104), ('log_max_num_int_kek', c.Array[ctypes.c_ubyte, Literal[5]], 107), ('sw_wrapped_dek', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1920]], 128)])
@c.record
class struct_mlx5_ifc_shampo_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[3]]
  shampo_log_max_reservation_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[3]]
  shampo_log_min_reservation_size: c.Array[ctypes.c_ubyte, Literal[5]]
  shampo_min_mss_size: c.Array[ctypes.c_ubyte, Literal[16]]
  shampo_header_split: c.Array[ctypes.c_ubyte, Literal[1]]
  shampo_header_split_data_merge: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[1]]
  shampo_log_max_headers_entry_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[1984]]
struct_mlx5_ifc_shampo_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('shampo_log_max_reservation_size', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[3]], 8), ('shampo_log_min_reservation_size', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('shampo_min_mss_size', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('shampo_header_split', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('shampo_header_split_data_merge', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('shampo_log_max_headers_entry_size', c.Array[ctypes.c_ubyte, Literal[5]], 35), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[1984]], 64)])
@c.record
class union_mlx5_ifc_hca_cap_union_bits(c.Struct):
  SIZE = 32768
  cmd_hca_cap: struct_mlx5_ifc_cmd_hca_cap_bits
  cmd_hca_cap_2: struct_mlx5_ifc_cmd_hca_cap_2_bits
  odp_cap: struct_mlx5_ifc_odp_cap_bits
  atomic_caps: struct_mlx5_ifc_atomic_caps_bits
  roce_cap: struct_mlx5_ifc_roce_cap_bits
  per_protocol_networking_offload_caps: struct_mlx5_ifc_per_protocol_networking_offload_caps_bits
  flow_table_nic_cap: struct_mlx5_ifc_flow_table_nic_cap_bits
  flow_table_eswitch_cap: struct_mlx5_ifc_flow_table_eswitch_cap_bits
  wqe_based_flow_table_cap: struct_mlx5_ifc_wqe_based_flow_table_cap_bits
  esw_cap: struct_mlx5_ifc_esw_cap_bits
  e_switch_cap: struct_mlx5_ifc_e_switch_cap_bits
  port_selection_cap: struct_mlx5_ifc_port_selection_cap_bits
  qos_cap: struct_mlx5_ifc_qos_cap_bits
  debug_cap: struct_mlx5_ifc_debug_cap_bits
  fpga_cap: struct_mlx5_ifc_fpga_cap_bits
  tls_cap: struct_mlx5_ifc_tls_cap_bits
  device_mem_cap: struct_mlx5_ifc_device_mem_cap_bits
  virtio_emulation_cap: struct_mlx5_ifc_virtio_emulation_cap_bits
  macsec_cap: struct_mlx5_ifc_macsec_cap_bits
  crypto_cap: struct_mlx5_ifc_crypto_cap_bits
  ipsec_cap: struct_mlx5_ifc_ipsec_cap_bits
  psp_cap: struct_mlx5_ifc_psp_cap_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32768]]
@c.record
class struct_mlx5_ifc_fpga_cap_bits(c.Struct):
  SIZE = 2048
  fpga_id: c.Array[ctypes.c_ubyte, Literal[8]]
  fpga_device: c.Array[ctypes.c_ubyte, Literal[24]]
  register_file_ver: c.Array[ctypes.c_ubyte, Literal[32]]
  fpga_ctrl_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[5]]
  access_reg_query_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[6]]
  access_reg_modify_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  image_version: c.Array[ctypes.c_ubyte, Literal[32]]
  image_date: c.Array[ctypes.c_ubyte, Literal[32]]
  image_time: c.Array[ctypes.c_ubyte, Literal[32]]
  shell_version: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[128]]
  shell_caps: struct_mlx5_ifc_fpga_shell_caps_bits
  reserved_at_380: c.Array[ctypes.c_ubyte, Literal[8]]
  ieee_vendor_id: c.Array[ctypes.c_ubyte, Literal[24]]
  sandbox_product_version: c.Array[ctypes.c_ubyte, Literal[16]]
  sandbox_product_id: c.Array[ctypes.c_ubyte, Literal[16]]
  sandbox_basic_caps: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_3e0: c.Array[ctypes.c_ubyte, Literal[16]]
  sandbox_extended_caps_len: c.Array[ctypes.c_ubyte, Literal[16]]
  sandbox_extended_caps_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  fpga_ddr_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  fpga_cr_space_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  fpga_ddr_size: c.Array[ctypes.c_ubyte, Literal[32]]
  fpga_cr_space_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_500: c.Array[ctypes.c_ubyte, Literal[768]]
@c.record
class struct_mlx5_ifc_fpga_shell_caps_bits(c.Struct):
  SIZE = 512
  max_num_qps: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  total_rcv_credits: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[14]]
  qp_type: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[5]]
  rae: c.Array[ctypes.c_ubyte, Literal[1]]
  rwe: c.Array[ctypes.c_ubyte, Literal[1]]
  rre: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[4]]
  dc: c.Array[ctypes.c_ubyte, Literal[1]]
  ud: c.Array[ctypes.c_ubyte, Literal[1]]
  uc: c.Array[ctypes.c_ubyte, Literal[1]]
  rc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[26]]
  log_ddr_size: c.Array[ctypes.c_ubyte, Literal[6]]
  max_fpga_qp_msg_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_fpga_shell_caps_bits.register_fields([('max_num_qps', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('total_rcv_credits', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[14]], 32), ('qp_type', c.Array[ctypes.c_ubyte, Literal[2]], 46), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[5]], 48), ('rae', c.Array[ctypes.c_ubyte, Literal[1]], 53), ('rwe', c.Array[ctypes.c_ubyte, Literal[1]], 54), ('rre', c.Array[ctypes.c_ubyte, Literal[1]], 55), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[4]], 56), ('dc', c.Array[ctypes.c_ubyte, Literal[1]], 60), ('ud', c.Array[ctypes.c_ubyte, Literal[1]], 61), ('uc', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('rc', c.Array[ctypes.c_ubyte, Literal[1]], 63), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[26]], 64), ('log_ddr_size', c.Array[ctypes.c_ubyte, Literal[6]], 90), ('max_fpga_qp_msg_size', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
struct_mlx5_ifc_fpga_cap_bits.register_fields([('fpga_id', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('fpga_device', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('register_file_ver', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('fpga_ctrl_modify', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[5]], 65), ('access_reg_query_mode', c.Array[ctypes.c_ubyte, Literal[2]], 70), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[6]], 72), ('access_reg_modify_mode', c.Array[ctypes.c_ubyte, Literal[2]], 78), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('image_version', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('image_date', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('image_time', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('shell_version', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[128]], 256), ('shell_caps', struct_mlx5_ifc_fpga_shell_caps_bits, 384), ('reserved_at_380', c.Array[ctypes.c_ubyte, Literal[8]], 896), ('ieee_vendor_id', c.Array[ctypes.c_ubyte, Literal[24]], 904), ('sandbox_product_version', c.Array[ctypes.c_ubyte, Literal[16]], 928), ('sandbox_product_id', c.Array[ctypes.c_ubyte, Literal[16]], 944), ('sandbox_basic_caps', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('reserved_at_3e0', c.Array[ctypes.c_ubyte, Literal[16]], 992), ('sandbox_extended_caps_len', c.Array[ctypes.c_ubyte, Literal[16]], 1008), ('sandbox_extended_caps_addr', c.Array[ctypes.c_ubyte, Literal[64]], 1024), ('fpga_ddr_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 1088), ('fpga_cr_space_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 1152), ('fpga_ddr_size', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('fpga_cr_space_size', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('reserved_at_500', c.Array[ctypes.c_ubyte, Literal[768]], 1280)])
union_mlx5_ifc_hca_cap_union_bits.register_fields([('cmd_hca_cap', struct_mlx5_ifc_cmd_hca_cap_bits, 0), ('cmd_hca_cap_2', struct_mlx5_ifc_cmd_hca_cap_2_bits, 0), ('odp_cap', struct_mlx5_ifc_odp_cap_bits, 0), ('atomic_caps', struct_mlx5_ifc_atomic_caps_bits, 0), ('roce_cap', struct_mlx5_ifc_roce_cap_bits, 0), ('per_protocol_networking_offload_caps', struct_mlx5_ifc_per_protocol_networking_offload_caps_bits, 0), ('flow_table_nic_cap', struct_mlx5_ifc_flow_table_nic_cap_bits, 0), ('flow_table_eswitch_cap', struct_mlx5_ifc_flow_table_eswitch_cap_bits, 0), ('wqe_based_flow_table_cap', struct_mlx5_ifc_wqe_based_flow_table_cap_bits, 0), ('esw_cap', struct_mlx5_ifc_esw_cap_bits, 0), ('e_switch_cap', struct_mlx5_ifc_e_switch_cap_bits, 0), ('port_selection_cap', struct_mlx5_ifc_port_selection_cap_bits, 0), ('qos_cap', struct_mlx5_ifc_qos_cap_bits, 0), ('debug_cap', struct_mlx5_ifc_debug_cap_bits, 0), ('fpga_cap', struct_mlx5_ifc_fpga_cap_bits, 0), ('tls_cap', struct_mlx5_ifc_tls_cap_bits, 0), ('device_mem_cap', struct_mlx5_ifc_device_mem_cap_bits, 0), ('virtio_emulation_cap', struct_mlx5_ifc_virtio_emulation_cap_bits, 0), ('macsec_cap', struct_mlx5_ifc_macsec_cap_bits, 0), ('crypto_cap', struct_mlx5_ifc_crypto_cap_bits, 0), ('ipsec_cap', struct_mlx5_ifc_ipsec_cap_bits, 0), ('psp_cap', struct_mlx5_ifc_psp_cap_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32768]], 0)])
_anonenum47: dict[int, str] = {(MLX5_FLOW_CONTEXT_ACTION_ALLOW:=1): 'MLX5_FLOW_CONTEXT_ACTION_ALLOW', (MLX5_FLOW_CONTEXT_ACTION_DROP:=2): 'MLX5_FLOW_CONTEXT_ACTION_DROP', (MLX5_FLOW_CONTEXT_ACTION_FWD_DEST:=4): 'MLX5_FLOW_CONTEXT_ACTION_FWD_DEST', (MLX5_FLOW_CONTEXT_ACTION_COUNT:=8): 'MLX5_FLOW_CONTEXT_ACTION_COUNT', (MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT:=16): 'MLX5_FLOW_CONTEXT_ACTION_PACKET_REFORMAT', (MLX5_FLOW_CONTEXT_ACTION_DECAP:=32): 'MLX5_FLOW_CONTEXT_ACTION_DECAP', (MLX5_FLOW_CONTEXT_ACTION_MOD_HDR:=64): 'MLX5_FLOW_CONTEXT_ACTION_MOD_HDR', (MLX5_FLOW_CONTEXT_ACTION_VLAN_POP:=128): 'MLX5_FLOW_CONTEXT_ACTION_VLAN_POP', (MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH:=256): 'MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH', (MLX5_FLOW_CONTEXT_ACTION_VLAN_POP_2:=1024): 'MLX5_FLOW_CONTEXT_ACTION_VLAN_POP_2', (MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2:=2048): 'MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2', (MLX5_FLOW_CONTEXT_ACTION_CRYPTO_DECRYPT:=4096): 'MLX5_FLOW_CONTEXT_ACTION_CRYPTO_DECRYPT', (MLX5_FLOW_CONTEXT_ACTION_CRYPTO_ENCRYPT:=8192): 'MLX5_FLOW_CONTEXT_ACTION_CRYPTO_ENCRYPT', (MLX5_FLOW_CONTEXT_ACTION_EXECUTE_ASO:=16384): 'MLX5_FLOW_CONTEXT_ACTION_EXECUTE_ASO'}
_anonenum48: dict[int, str] = {(MLX5_FLOW_CONTEXT_FLOW_SOURCE_ANY_VPORT:=0): 'MLX5_FLOW_CONTEXT_FLOW_SOURCE_ANY_VPORT', (MLX5_FLOW_CONTEXT_FLOW_SOURCE_UPLINK:=1): 'MLX5_FLOW_CONTEXT_FLOW_SOURCE_UPLINK', (MLX5_FLOW_CONTEXT_FLOW_SOURCE_LOCAL_VPORT:=2): 'MLX5_FLOW_CONTEXT_FLOW_SOURCE_LOCAL_VPORT'}
_anonenum49: dict[int, str] = {(MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_IPSEC:=0): 'MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_IPSEC', (MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_MACSEC:=1): 'MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_MACSEC', (MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_PSP:=2): 'MLX5_FLOW_CONTEXT_ENCRYPT_DECRYPT_TYPE_PSP'}
@c.record
class struct_mlx5_ifc_vlan_bits(c.Struct):
  SIZE = 32
  ethtype: c.Array[ctypes.c_ubyte, Literal[16]]
  prio: c.Array[ctypes.c_ubyte, Literal[3]]
  cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  vid: c.Array[ctypes.c_ubyte, Literal[12]]
struct_mlx5_ifc_vlan_bits.register_fields([('ethtype', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('prio', c.Array[ctypes.c_ubyte, Literal[3]], 16), ('cfi', c.Array[ctypes.c_ubyte, Literal[1]], 19), ('vid', c.Array[ctypes.c_ubyte, Literal[12]], 20)])
_anonenum50: dict[int, str] = {(MLX5_FLOW_METER_COLOR_RED:=0): 'MLX5_FLOW_METER_COLOR_RED', (MLX5_FLOW_METER_COLOR_YELLOW:=1): 'MLX5_FLOW_METER_COLOR_YELLOW', (MLX5_FLOW_METER_COLOR_GREEN:=2): 'MLX5_FLOW_METER_COLOR_GREEN', (MLX5_FLOW_METER_COLOR_UNDEFINED:=3): 'MLX5_FLOW_METER_COLOR_UNDEFINED'}
_anonenum51: dict[int, str] = {(MLX5_EXE_ASO_FLOW_METER:=2): 'MLX5_EXE_ASO_FLOW_METER'}
@c.record
class struct_mlx5_ifc_exe_aso_ctrl_flow_meter_bits(c.Struct):
  SIZE = 32
  return_reg_id: c.Array[ctypes.c_ubyte, Literal[4]]
  aso_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[20]]
  action: c.Array[ctypes.c_ubyte, Literal[1]]
  init_color: c.Array[ctypes.c_ubyte, Literal[2]]
  meter_id: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_exe_aso_ctrl_flow_meter_bits.register_fields([('return_reg_id', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('aso_type', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[20]], 8), ('action', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('init_color', c.Array[ctypes.c_ubyte, Literal[2]], 29), ('meter_id', c.Array[ctypes.c_ubyte, Literal[1]], 31)])
@c.record
class union_mlx5_ifc_exe_aso_ctrl(c.Struct):
  SIZE = 32
  exe_aso_ctrl_flow_meter: struct_mlx5_ifc_exe_aso_ctrl_flow_meter_bits
union_mlx5_ifc_exe_aso_ctrl.register_fields([('exe_aso_ctrl_flow_meter', struct_mlx5_ifc_exe_aso_ctrl_flow_meter_bits, 0)])
@c.record
class struct_mlx5_ifc_execute_aso_bits(c.Struct):
  SIZE = 64
  valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[7]]
  aso_object_id: c.Array[ctypes.c_ubyte, Literal[24]]
  exe_aso_ctrl: union_mlx5_ifc_exe_aso_ctrl
struct_mlx5_ifc_execute_aso_bits.register_fields([('valid', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[7]], 1), ('aso_object_id', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('exe_aso_ctrl', union_mlx5_ifc_exe_aso_ctrl, 32)])
@c.record
class struct_mlx5_ifc_flow_context_bits(c.Struct):
  SIZE = 6144
  push_vlan: struct_mlx5_ifc_vlan_bits
  group_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  flow_tag: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  action: c.Array[ctypes.c_ubyte, Literal[16]]
  extended_destination: c.Array[ctypes.c_ubyte, Literal[1]]
  uplink_hairpin_en: c.Array[ctypes.c_ubyte, Literal[1]]
  flow_source: c.Array[ctypes.c_ubyte, Literal[2]]
  encrypt_decrypt_type: c.Array[ctypes.c_ubyte, Literal[4]]
  destination_list_size: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  flow_counter_list_size: c.Array[ctypes.c_ubyte, Literal[24]]
  packet_reformat_id: c.Array[ctypes.c_ubyte, Literal[32]]
  modify_header_id: c.Array[ctypes.c_ubyte, Literal[32]]
  push_vlan_2: struct_mlx5_ifc_vlan_bits
  encrypt_decrypt_obj_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[192]]
  match_value: struct_mlx5_ifc_fte_match_param_bits
  execute_aso: c.Array[struct_mlx5_ifc_execute_aso_bits, Literal[4]]
  reserved_at_1300: c.Array[ctypes.c_ubyte, Literal[1280]]
  destination: c.Array[union_mlx5_ifc_dest_format_flow_counter_list_auto_bits, Literal[0]]
struct_mlx5_ifc_flow_context_bits.register_fields([('push_vlan', struct_mlx5_ifc_vlan_bits, 0), ('group_id', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('flow_tag', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('action', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('extended_destination', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('uplink_hairpin_en', c.Array[ctypes.c_ubyte, Literal[1]], 129), ('flow_source', c.Array[ctypes.c_ubyte, Literal[2]], 130), ('encrypt_decrypt_type', c.Array[ctypes.c_ubyte, Literal[4]], 132), ('destination_list_size', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('flow_counter_list_size', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('packet_reformat_id', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('modify_header_id', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('push_vlan_2', struct_mlx5_ifc_vlan_bits, 256), ('encrypt_decrypt_obj_id', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[192]], 320), ('match_value', struct_mlx5_ifc_fte_match_param_bits, 512), ('execute_aso', c.Array[struct_mlx5_ifc_execute_aso_bits, Literal[4]], 4608), ('reserved_at_1300', c.Array[ctypes.c_ubyte, Literal[1280]], 4864), ('destination', c.Array[union_mlx5_ifc_dest_format_flow_counter_list_auto_bits, Literal[0]], 6144)])
_anonenum52: dict[int, str] = {(MLX5_XRC_SRQC_STATE_GOOD:=0): 'MLX5_XRC_SRQC_STATE_GOOD', (MLX5_XRC_SRQC_STATE_ERROR:=1): 'MLX5_XRC_SRQC_STATE_ERROR'}
@c.record
class struct_mlx5_ifc_xrc_srqc_bits(c.Struct):
  SIZE = 512
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  log_xrc_srq_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  wq_signature: c.Array[ctypes.c_ubyte, Literal[1]]
  cont_srq: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[1]]
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  basic_cyclic_rcv_wqe: c.Array[ctypes.c_ubyte, Literal[1]]
  log_rq_stride: c.Array[ctypes.c_ubyte, Literal[3]]
  xrcd: c.Array[ctypes.c_ubyte, Literal[24]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_46: c.Array[ctypes.c_ubyte, Literal[1]]
  dbr_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  user_index_equal_xrc_srqn: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_81: c.Array[ctypes.c_ubyte, Literal[1]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[6]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
  wqe_cnt: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[64]]
  db_record_addr_h: c.Array[ctypes.c_ubyte, Literal[32]]
  db_record_addr_l: c.Array[ctypes.c_ubyte, Literal[30]]
  reserved_at_17e: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_xrc_srqc_bits.register_fields([('state', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('log_xrc_srq_size', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('wq_signature', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('cont_srq', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('basic_cyclic_rcv_wqe', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('log_rq_stride', c.Array[ctypes.c_ubyte, Literal[3]], 37), ('xrcd', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('page_offset', c.Array[ctypes.c_ubyte, Literal[6]], 64), ('reserved_at_46', c.Array[ctypes.c_ubyte, Literal[1]], 70), ('dbr_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 71), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('user_index_equal_xrc_srqn', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('reserved_at_81', c.Array[ctypes.c_ubyte, Literal[1]], 129), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[6]], 130), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('wqe_cnt', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('db_record_addr_h', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('db_record_addr_l', c.Array[ctypes.c_ubyte, Literal[30]], 352), ('reserved_at_17e', c.Array[ctypes.c_ubyte, Literal[2]], 382), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[128]], 384)])
@c.record
class struct_mlx5_ifc_vnic_diagnostic_statistics_bits(c.Struct):
  SIZE = 4096
  counter_error_queues: c.Array[ctypes.c_ubyte, Literal[32]]
  total_error_queues: c.Array[ctypes.c_ubyte, Literal[32]]
  send_queue_priority_update_flow: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  nic_receive_steering_discard: c.Array[ctypes.c_ubyte, Literal[64]]
  receive_discard_vport_down: c.Array[ctypes.c_ubyte, Literal[64]]
  transmit_discard_vport_down: c.Array[ctypes.c_ubyte, Literal[64]]
  async_eq_overrun: c.Array[ctypes.c_ubyte, Literal[32]]
  comp_eq_overrun: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[32]]
  invalid_command: c.Array[ctypes.c_ubyte, Literal[32]]
  quota_exceeded_command: c.Array[ctypes.c_ubyte, Literal[32]]
  internal_rq_out_of_buffer: c.Array[ctypes.c_ubyte, Literal[32]]
  cq_overrun: c.Array[ctypes.c_ubyte, Literal[32]]
  eth_wqe_too_small: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_220: c.Array[ctypes.c_ubyte, Literal[192]]
  generated_pkt_steering_fail: c.Array[ctypes.c_ubyte, Literal[64]]
  handled_pkt_steering_fail: c.Array[ctypes.c_ubyte, Literal[64]]
  bar_uar_access: c.Array[ctypes.c_ubyte, Literal[32]]
  odp_local_triggered_page_fault: c.Array[ctypes.c_ubyte, Literal[32]]
  odp_remote_triggered_page_fault: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_3c0: c.Array[ctypes.c_ubyte, Literal[3104]]
struct_mlx5_ifc_vnic_diagnostic_statistics_bits.register_fields([('counter_error_queues', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('total_error_queues', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('send_queue_priority_update_flow', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('nic_receive_steering_discard', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('receive_discard_vport_down', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('transmit_discard_vport_down', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('async_eq_overrun', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('comp_eq_overrun', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('invalid_command', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('quota_exceeded_command', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('internal_rq_out_of_buffer', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('cq_overrun', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('eth_wqe_too_small', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('reserved_at_220', c.Array[ctypes.c_ubyte, Literal[192]], 576), ('generated_pkt_steering_fail', c.Array[ctypes.c_ubyte, Literal[64]], 768), ('handled_pkt_steering_fail', c.Array[ctypes.c_ubyte, Literal[64]], 832), ('bar_uar_access', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('odp_local_triggered_page_fault', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('odp_remote_triggered_page_fault', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('reserved_at_3c0', c.Array[ctypes.c_ubyte, Literal[3104]], 992)])
@c.record
class struct_mlx5_ifc_traffic_counter_bits(c.Struct):
  SIZE = 128
  packets: c.Array[ctypes.c_ubyte, Literal[64]]
  octets: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_traffic_counter_bits.register_fields([('packets', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('octets', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_tisc_bits(c.Struct):
  SIZE = 1280
  strict_lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  tls_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[2]]
  lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[4]]
  prio: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[256]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[8]]
  transport_domain: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[8]]
  underlay_qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[896]]
struct_mlx5_ifc_tisc_bits.register_fields([('strict_lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('tls_en', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('prio', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[256]], 32), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[8]], 288), ('transport_domain', c.Array[ctypes.c_ubyte, Literal[24]], 296), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[8]], 320), ('underlay_qpn', c.Array[ctypes.c_ubyte, Literal[24]], 328), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 360), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[896]], 384)])
_anonenum53: dict[int, str] = {(MLX5_TIRC_DISP_TYPE_DIRECT:=0): 'MLX5_TIRC_DISP_TYPE_DIRECT', (MLX5_TIRC_DISP_TYPE_INDIRECT:=1): 'MLX5_TIRC_DISP_TYPE_INDIRECT'}
_anonenum54: dict[int, str] = {(MLX5_TIRC_PACKET_MERGE_MASK_IPV4_LRO:=0): 'MLX5_TIRC_PACKET_MERGE_MASK_IPV4_LRO', (MLX5_TIRC_PACKET_MERGE_MASK_IPV6_LRO:=1): 'MLX5_TIRC_PACKET_MERGE_MASK_IPV6_LRO'}
_anonenum55: dict[int, str] = {(MLX5_RX_HASH_FN_NONE:=0): 'MLX5_RX_HASH_FN_NONE', (MLX5_RX_HASH_FN_INVERTED_XOR8:=1): 'MLX5_RX_HASH_FN_INVERTED_XOR8', (MLX5_RX_HASH_FN_TOEPLITZ:=2): 'MLX5_RX_HASH_FN_TOEPLITZ'}
_anonenum56: dict[int, str] = {(MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST:=1): 'MLX5_TIRC_SELF_LB_BLOCK_BLOCK_UNICAST', (MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST:=2): 'MLX5_TIRC_SELF_LB_BLOCK_BLOCK_MULTICAST'}
@c.record
class struct_mlx5_ifc_tirc_bits(c.Struct):
  SIZE = 1920
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  disp_type: c.Array[ctypes.c_ubyte, Literal[4]]
  tls_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_25: c.Array[ctypes.c_ubyte, Literal[27]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[4]]
  lro_timeout_period_usecs: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_merge_mask: c.Array[ctypes.c_ubyte, Literal[4]]
  lro_max_ip_payload_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[8]]
  inline_rqn: c.Array[ctypes.c_ubyte, Literal[24]]
  rx_hash_symmetric: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_101: c.Array[ctypes.c_ubyte, Literal[1]]
  tunneled_offload_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_103: c.Array[ctypes.c_ubyte, Literal[5]]
  indirect_table: c.Array[ctypes.c_ubyte, Literal[24]]
  rx_hash_fn: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_124: c.Array[ctypes.c_ubyte, Literal[2]]
  self_lb_block: c.Array[ctypes.c_ubyte, Literal[2]]
  transport_domain: c.Array[ctypes.c_ubyte, Literal[24]]
  rx_hash_toeplitz_key: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[10]]
  rx_hash_field_selector_outer: struct_mlx5_ifc_rx_hash_field_select_bits
  rx_hash_field_selector_inner: struct_mlx5_ifc_rx_hash_field_select_bits
  reserved_at_2c0: c.Array[ctypes.c_ubyte, Literal[1216]]
struct_mlx5_ifc_tirc_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('disp_type', c.Array[ctypes.c_ubyte, Literal[4]], 32), ('tls_en', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('reserved_at_25', c.Array[ctypes.c_ubyte, Literal[27]], 37), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[4]], 128), ('lro_timeout_period_usecs', c.Array[ctypes.c_ubyte, Literal[16]], 132), ('packet_merge_mask', c.Array[ctypes.c_ubyte, Literal[4]], 148), ('lro_max_ip_payload_size', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[64]], 160), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[8]], 224), ('inline_rqn', c.Array[ctypes.c_ubyte, Literal[24]], 232), ('rx_hash_symmetric', c.Array[ctypes.c_ubyte, Literal[1]], 256), ('reserved_at_101', c.Array[ctypes.c_ubyte, Literal[1]], 257), ('tunneled_offload_en', c.Array[ctypes.c_ubyte, Literal[1]], 258), ('reserved_at_103', c.Array[ctypes.c_ubyte, Literal[5]], 259), ('indirect_table', c.Array[ctypes.c_ubyte, Literal[24]], 264), ('rx_hash_fn', c.Array[ctypes.c_ubyte, Literal[4]], 288), ('reserved_at_124', c.Array[ctypes.c_ubyte, Literal[2]], 292), ('self_lb_block', c.Array[ctypes.c_ubyte, Literal[2]], 294), ('transport_domain', c.Array[ctypes.c_ubyte, Literal[24]], 296), ('rx_hash_toeplitz_key', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[10]], 320), ('rx_hash_field_selector_outer', struct_mlx5_ifc_rx_hash_field_select_bits, 640), ('rx_hash_field_selector_inner', struct_mlx5_ifc_rx_hash_field_select_bits, 672), ('reserved_at_2c0', c.Array[ctypes.c_ubyte, Literal[1216]], 704)])
_anonenum57: dict[int, str] = {(MLX5_SRQC_STATE_GOOD:=0): 'MLX5_SRQC_STATE_GOOD', (MLX5_SRQC_STATE_ERROR:=1): 'MLX5_SRQC_STATE_ERROR'}
@c.record
class struct_mlx5_ifc_srqc_bits(c.Struct):
  SIZE = 512
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  log_srq_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  wq_signature: c.Array[ctypes.c_ubyte, Literal[1]]
  cont_srq: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[1]]
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_24: c.Array[ctypes.c_ubyte, Literal[1]]
  log_rq_stride: c.Array[ctypes.c_ubyte, Literal[3]]
  xrcd: c.Array[ctypes.c_ubyte, Literal[24]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_46: c.Array[ctypes.c_ubyte, Literal[2]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[2]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
  wqe_cnt: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[64]]
  dbr_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_srqc_bits.register_fields([('state', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('log_srq_size', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('wq_signature', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('cont_srq', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 35), ('reserved_at_24', c.Array[ctypes.c_ubyte, Literal[1]], 36), ('log_rq_stride', c.Array[ctypes.c_ubyte, Literal[3]], 37), ('xrcd', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('page_offset', c.Array[ctypes.c_ubyte, Literal[6]], 64), ('reserved_at_46', c.Array[ctypes.c_ubyte, Literal[2]], 70), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[2]], 128), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[6]], 130), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('wqe_cnt', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('dbr_addr', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[128]], 384)])
_anonenum58: dict[int, str] = {(MLX5_SQC_STATE_RST:=0): 'MLX5_SQC_STATE_RST', (MLX5_SQC_STATE_RDY:=1): 'MLX5_SQC_STATE_RDY', (MLX5_SQC_STATE_ERR:=3): 'MLX5_SQC_STATE_ERR'}
@c.record
class struct_mlx5_ifc_sqc_bits(c.Struct):
  SIZE = 1920
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  cd_master: c.Array[ctypes.c_ubyte, Literal[1]]
  fre: c.Array[ctypes.c_ubyte, Literal[1]]
  flush_in_error_en: c.Array[ctypes.c_ubyte, Literal[1]]
  allow_multi_pkt_send_wqe: c.Array[ctypes.c_ubyte, Literal[1]]
  min_wqe_inline_mode: c.Array[ctypes.c_ubyte, Literal[3]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  reg_umr: c.Array[ctypes.c_ubyte, Literal[1]]
  allow_swp: c.Array[ctypes.c_ubyte, Literal[1]]
  hairpin: c.Array[ctypes.c_ubyte, Literal[1]]
  non_wire: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[10]]
  ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1c: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  hairpin_peer_rq: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  hairpin_peer_vhca: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  ts_cqe_to_dest_cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_pacing_rate_limit_index: c.Array[ctypes.c_ubyte, Literal[16]]
  tis_lst_sz: c.Array[ctypes.c_ubyte, Literal[16]]
  qos_queue_group_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  tis_num_0: c.Array[ctypes.c_ubyte, Literal[24]]
  wq: struct_mlx5_ifc_wq_bits
struct_mlx5_ifc_sqc_bits.register_fields([('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('cd_master', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('fre', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('flush_in_error_en', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('allow_multi_pkt_send_wqe', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('min_wqe_inline_mode', c.Array[ctypes.c_ubyte, Literal[3]], 5), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('reg_umr', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('allow_swp', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('hairpin', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('non_wire', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[10]], 16), ('ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 26), ('reserved_at_1c', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('hairpin_peer_rq', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('hairpin_peer_vhca', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('ts_cqe_to_dest_cqn', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('packet_pacing_rate_limit_index', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('tis_lst_sz', c.Array[ctypes.c_ubyte, Literal[16]], 256), ('qos_queue_group_id', c.Array[ctypes.c_ubyte, Literal[16]], 272), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[64]], 288), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('tis_num_0', c.Array[ctypes.c_ubyte, Literal[24]], 360), ('wq', struct_mlx5_ifc_wq_bits, 384)])
_anonenum59: dict[int, str] = {(SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR:=0): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR', (SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT:=1): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT', (SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT_TC:=2): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT_TC', (SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC:=3): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC', (SCHEDULING_CONTEXT_ELEMENT_TYPE_QUEUE_GROUP:=4): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_QUEUE_GROUP', (SCHEDULING_CONTEXT_ELEMENT_TYPE_RATE_LIMIT:=5): 'SCHEDULING_CONTEXT_ELEMENT_TYPE_RATE_LIMIT'}
_anonenum60: dict[int, str] = {(ELEMENT_TYPE_CAP_MASK_TSAR:=1): 'ELEMENT_TYPE_CAP_MASK_TSAR', (ELEMENT_TYPE_CAP_MASK_VPORT:=2): 'ELEMENT_TYPE_CAP_MASK_VPORT', (ELEMENT_TYPE_CAP_MASK_VPORT_TC:=4): 'ELEMENT_TYPE_CAP_MASK_VPORT_TC', (ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC:=8): 'ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC', (ELEMENT_TYPE_CAP_MASK_QUEUE_GROUP:=16): 'ELEMENT_TYPE_CAP_MASK_QUEUE_GROUP', (ELEMENT_TYPE_CAP_MASK_RATE_LIMIT:=32): 'ELEMENT_TYPE_CAP_MASK_RATE_LIMIT'}
_anonenum61: dict[int, str] = {(TSAR_ELEMENT_TSAR_TYPE_DWRR:=0): 'TSAR_ELEMENT_TSAR_TYPE_DWRR', (TSAR_ELEMENT_TSAR_TYPE_ROUND_ROBIN:=1): 'TSAR_ELEMENT_TSAR_TYPE_ROUND_ROBIN', (TSAR_ELEMENT_TSAR_TYPE_ETS:=2): 'TSAR_ELEMENT_TSAR_TYPE_ETS', (TSAR_ELEMENT_TSAR_TYPE_TC_ARB:=3): 'TSAR_ELEMENT_TSAR_TYPE_TC_ARB'}
_anonenum62: dict[int, str] = {(TSAR_TYPE_CAP_MASK_DWRR:=1): 'TSAR_TYPE_CAP_MASK_DWRR', (TSAR_TYPE_CAP_MASK_ROUND_ROBIN:=2): 'TSAR_TYPE_CAP_MASK_ROUND_ROBIN', (TSAR_TYPE_CAP_MASK_ETS:=4): 'TSAR_TYPE_CAP_MASK_ETS', (TSAR_TYPE_CAP_MASK_TC_ARB:=8): 'TSAR_TYPE_CAP_MASK_TC_ARB'}
@c.record
class struct_mlx5_ifc_tsar_element_bits(c.Struct):
  SIZE = 32
  traffic_class: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  tsar_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_tsar_element_bits.register_fields([('traffic_class', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('tsar_type', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class struct_mlx5_ifc_vport_element_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[11]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_vport_element_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[11]], 5), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class struct_mlx5_ifc_vport_tc_element_bits(c.Struct):
  SIZE = 32
  traffic_class: c.Array[ctypes.c_ubyte, Literal[4]]
  eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[11]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_vport_tc_element_bits.register_fields([('traffic_class', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[11]], 5), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class union_mlx5_ifc_element_attributes_bits(c.Struct):
  SIZE = 32
  tsar: struct_mlx5_ifc_tsar_element_bits
  vport: struct_mlx5_ifc_vport_element_bits
  vport_tc: struct_mlx5_ifc_vport_tc_element_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
union_mlx5_ifc_element_attributes_bits.register_fields([('tsar', struct_mlx5_ifc_tsar_element_bits, 0), ('vport', struct_mlx5_ifc_vport_element_bits, 0), ('vport_tc', struct_mlx5_ifc_vport_tc_element_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_scheduling_context_bits(c.Struct):
  SIZE = 512
  element_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  element_attributes: union_mlx5_ifc_element_attributes_bits
  parent_element_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[64]]
  bw_share: c.Array[ctypes.c_ubyte, Literal[32]]
  max_average_bw: c.Array[ctypes.c_ubyte, Literal[32]]
  max_bw_obj_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_scheduling_context_bits.register_fields([('element_type', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('element_attributes', union_mlx5_ifc_element_attributes_bits, 32), ('parent_element_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[64]], 96), ('bw_share', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('max_average_bw', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('max_bw_obj_id', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
@c.record
class struct_mlx5_ifc_rqtc_bits(c.Struct):
  SIZE = 1920
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[160]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[5]]
  list_q_type: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_a8: c.Array[ctypes.c_ubyte, Literal[8]]
  rqt_max_size: c.Array[ctypes.c_ubyte, Literal[16]]
  rq_vhca_id_format: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c1: c.Array[ctypes.c_ubyte, Literal[15]]
  rqt_actual_size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[1696]]
struct_mlx5_ifc_rqtc_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[160]], 0), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[5]], 160), ('list_q_type', c.Array[ctypes.c_ubyte, Literal[3]], 165), ('reserved_at_a8', c.Array[ctypes.c_ubyte, Literal[8]], 168), ('rqt_max_size', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('rq_vhca_id_format', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('reserved_at_c1', c.Array[ctypes.c_ubyte, Literal[15]], 193), ('rqt_actual_size', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[1696]], 224)])
_anonenum63: dict[int, str] = {(MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_INLINE:=0): 'MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_INLINE', (MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_RMP:=1): 'MLX5_RQC_MEM_RQ_TYPE_MEMORY_RQ_RMP'}
_anonenum64: dict[int, str] = {(MLX5_RQC_STATE_RST:=0): 'MLX5_RQC_STATE_RST', (MLX5_RQC_STATE_RDY:=1): 'MLX5_RQC_STATE_RDY', (MLX5_RQC_STATE_ERR:=3): 'MLX5_RQC_STATE_ERR'}
_anonenum65: dict[int, str] = {(MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_BYTE:=0): 'MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_BYTE', (MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_STRIDE:=1): 'MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_STRIDE', (MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_PAGE:=2): 'MLX5_RQC_SHAMPO_NO_MATCH_ALIGNMENT_GRANULARITY_PAGE'}
_anonenum66: dict[int, str] = {(MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_NO_MATCH:=0): 'MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_NO_MATCH', (MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_EXTENDED:=1): 'MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_EXTENDED', (MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_FIVE_TUPLE:=2): 'MLX5_RQC_SHAMPO_MATCH_CRITERIA_TYPE_FIVE_TUPLE'}
@c.record
class struct_mlx5_ifc_rqc_bits(c.Struct):
  SIZE = 1920
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  delay_drop_en: c.Array[ctypes.c_ubyte, Literal[1]]
  scatter_fcs: c.Array[ctypes.c_ubyte, Literal[1]]
  vsd: c.Array[ctypes.c_ubyte, Literal[1]]
  mem_rq_type: c.Array[ctypes.c_ubyte, Literal[4]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c: c.Array[ctypes.c_ubyte, Literal[1]]
  flush_in_error_en: c.Array[ctypes.c_ubyte, Literal[1]]
  hairpin: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f: c.Array[ctypes.c_ubyte, Literal[11]]
  ts_format: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1c: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  rmpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  hairpin_peer_sq: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[16]]
  hairpin_peer_vhca: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[70]]
  shampo_no_match_alignment_granularity: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_128: c.Array[ctypes.c_ubyte, Literal[6]]
  shampo_match_criteria_type: c.Array[ctypes.c_ubyte, Literal[2]]
  reservation_timeout: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[64]]
  wq: struct_mlx5_ifc_wq_bits
struct_mlx5_ifc_rqc_bits.register_fields([('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('delay_drop_en', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('scatter_fcs', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('vsd', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('mem_rq_type', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('reserved_at_c', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('flush_in_error_en', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('hairpin', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('reserved_at_f', c.Array[ctypes.c_ubyte, Literal[11]], 15), ('ts_format', c.Array[ctypes.c_ubyte, Literal[2]], 26), ('reserved_at_1c', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('rmpn', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('hairpin_peer_sq', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('hairpin_peer_vhca', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[70]], 224), ('shampo_no_match_alignment_granularity', c.Array[ctypes.c_ubyte, Literal[2]], 294), ('reserved_at_128', c.Array[ctypes.c_ubyte, Literal[6]], 296), ('shampo_match_criteria_type', c.Array[ctypes.c_ubyte, Literal[2]], 302), ('reservation_timeout', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('wq', struct_mlx5_ifc_wq_bits, 384)])
_anonenum67: dict[int, str] = {(MLX5_RMPC_STATE_RDY:=1): 'MLX5_RMPC_STATE_RDY', (MLX5_RMPC_STATE_ERR:=3): 'MLX5_RMPC_STATE_ERR'}
@c.record
class struct_mlx5_ifc_rmpc_bits(c.Struct):
  SIZE = 1920
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c: c.Array[ctypes.c_ubyte, Literal[20]]
  basic_cyclic_rcv_wqe: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[320]]
  wq: struct_mlx5_ifc_wq_bits
struct_mlx5_ifc_rmpc_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('reserved_at_c', c.Array[ctypes.c_ubyte, Literal[20]], 12), ('basic_cyclic_rcv_wqe', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[31]], 33), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[320]], 64), ('wq', struct_mlx5_ifc_wq_bits, 384)])
_anonenum68: dict[int, str] = {(VHCA_ID_TYPE_HW:=0): 'VHCA_ID_TYPE_HW', (VHCA_ID_TYPE_SW:=1): 'VHCA_ID_TYPE_SW'}
@c.record
class struct_mlx5_ifc_nic_vport_context_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[5]]
  min_wqe_inline_mode: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[21]]
  disable_mc_local_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_uc_local_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  roce_en: c.Array[ctypes.c_ubyte, Literal[1]]
  arm_change_event: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[26]]
  event_on_mtu: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_promisc_change: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_vlan_change: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_mc_address_change: c.Array[ctypes.c_ubyte, Literal[1]]
  event_on_uc_address_change: c.Array[ctypes.c_ubyte, Literal[1]]
  vhca_id_type: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  affiliation_criteria: c.Array[ctypes.c_ubyte, Literal[4]]
  affiliated_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[1]]
  sd_group: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_104: c.Array[ctypes.c_ubyte, Literal[28]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[16]]
  mtu: c.Array[ctypes.c_ubyte, Literal[16]]
  system_image_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  port_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  node_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_200: c.Array[ctypes.c_ubyte, Literal[320]]
  qkey_violation_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_350: c.Array[ctypes.c_ubyte, Literal[1072]]
  promisc_uc: c.Array[ctypes.c_ubyte, Literal[1]]
  promisc_mc: c.Array[ctypes.c_ubyte, Literal[1]]
  promisc_all: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_783: c.Array[ctypes.c_ubyte, Literal[2]]
  allowed_list_type: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_788: c.Array[ctypes.c_ubyte, Literal[12]]
  allowed_list_size: c.Array[ctypes.c_ubyte, Literal[12]]
  permanent_address: struct_mlx5_ifc_mac_address_layout_bits
  reserved_at_7e0: c.Array[ctypes.c_ubyte, Literal[32]]
  current_uc_mac_address: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_nic_vport_context_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[5]], 0), ('min_wqe_inline_mode', c.Array[ctypes.c_ubyte, Literal[3]], 5), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[21]], 8), ('disable_mc_local_lb', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('disable_uc_local_lb', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('roce_en', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('arm_change_event', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[26]], 33), ('event_on_mtu', c.Array[ctypes.c_ubyte, Literal[1]], 59), ('event_on_promisc_change', c.Array[ctypes.c_ubyte, Literal[1]], 60), ('event_on_vlan_change', c.Array[ctypes.c_ubyte, Literal[1]], 61), ('event_on_mc_address_change', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('event_on_uc_address_change', c.Array[ctypes.c_ubyte, Literal[1]], 63), ('vhca_id_type', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('affiliation_criteria', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('affiliated_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[1]], 256), ('sd_group', c.Array[ctypes.c_ubyte, Literal[3]], 257), ('reserved_at_104', c.Array[ctypes.c_ubyte, Literal[28]], 260), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[16]], 288), ('mtu', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('system_image_guid', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('port_guid', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('node_guid', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('reserved_at_200', c.Array[ctypes.c_ubyte, Literal[320]], 512), ('qkey_violation_counter', c.Array[ctypes.c_ubyte, Literal[16]], 832), ('reserved_at_350', c.Array[ctypes.c_ubyte, Literal[1072]], 848), ('promisc_uc', c.Array[ctypes.c_ubyte, Literal[1]], 1920), ('promisc_mc', c.Array[ctypes.c_ubyte, Literal[1]], 1921), ('promisc_all', c.Array[ctypes.c_ubyte, Literal[1]], 1922), ('reserved_at_783', c.Array[ctypes.c_ubyte, Literal[2]], 1923), ('allowed_list_type', c.Array[ctypes.c_ubyte, Literal[3]], 1925), ('reserved_at_788', c.Array[ctypes.c_ubyte, Literal[12]], 1928), ('allowed_list_size', c.Array[ctypes.c_ubyte, Literal[12]], 1940), ('permanent_address', struct_mlx5_ifc_mac_address_layout_bits, 1952), ('reserved_at_7e0', c.Array[ctypes.c_ubyte, Literal[32]], 2016), ('current_uc_mac_address', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2048)])
_anonenum69: dict[int, str] = {(MLX5_MKC_ACCESS_MODE_PA:=0): 'MLX5_MKC_ACCESS_MODE_PA', (MLX5_MKC_ACCESS_MODE_MTT:=1): 'MLX5_MKC_ACCESS_MODE_MTT', (MLX5_MKC_ACCESS_MODE_KLMS:=2): 'MLX5_MKC_ACCESS_MODE_KLMS', (MLX5_MKC_ACCESS_MODE_KSM:=3): 'MLX5_MKC_ACCESS_MODE_KSM', (MLX5_MKC_ACCESS_MODE_SW_ICM:=4): 'MLX5_MKC_ACCESS_MODE_SW_ICM', (MLX5_MKC_ACCESS_MODE_MEMIC:=5): 'MLX5_MKC_ACCESS_MODE_MEMIC', (MLX5_MKC_ACCESS_MODE_CROSSING:=6): 'MLX5_MKC_ACCESS_MODE_CROSSING'}
_anonenum70: dict[int, str] = {(MLX5_MKC_PCIE_TPH_NO_STEERING_TAG_INDEX:=0): 'MLX5_MKC_PCIE_TPH_NO_STEERING_TAG_INDEX'}
@c.record
class struct_mlx5_ifc_mkc_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1]]
  free: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[1]]
  access_mode_4_2: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_6: c.Array[ctypes.c_ubyte, Literal[7]]
  relaxed_ordering_write: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e: c.Array[ctypes.c_ubyte, Literal[1]]
  small_fence_on_rdma_read_response: c.Array[ctypes.c_ubyte, Literal[1]]
  umr_en: c.Array[ctypes.c_ubyte, Literal[1]]
  a: c.Array[ctypes.c_ubyte, Literal[1]]
  rw: c.Array[ctypes.c_ubyte, Literal[1]]
  rr: c.Array[ctypes.c_ubyte, Literal[1]]
  lw: c.Array[ctypes.c_ubyte, Literal[1]]
  lr: c.Array[ctypes.c_ubyte, Literal[1]]
  access_mode_1_0: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[2]]
  ma_translation_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_1c: c.Array[ctypes.c_ubyte, Literal[4]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  mkey_7_0: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  length64: c.Array[ctypes.c_ubyte, Literal[1]]
  bsf_en: c.Array[ctypes.c_ubyte, Literal[1]]
  sync_umr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_63: c.Array[ctypes.c_ubyte, Literal[2]]
  expected_sigerr_count: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_66: c.Array[ctypes.c_ubyte, Literal[1]]
  en_rinval: c.Array[ctypes.c_ubyte, Literal[1]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  len: c.Array[ctypes.c_ubyte, Literal[64]]
  bsf_octword_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[96]]
  crossing_target_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_190: c.Array[ctypes.c_ubyte, Literal[16]]
  translations_octword_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[25]]
  relaxed_ordering_read: c.Array[ctypes.c_ubyte, Literal[1]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[5]]
  pcie_tph_en: c.Array[ctypes.c_ubyte, Literal[1]]
  pcie_tph_ph: c.Array[ctypes.c_ubyte, Literal[2]]
  pcie_tph_steering_tag_index: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1f0: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_mkc_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('free', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('access_mode_4_2', c.Array[ctypes.c_ubyte, Literal[3]], 3), ('reserved_at_6', c.Array[ctypes.c_ubyte, Literal[7]], 6), ('relaxed_ordering_write', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('reserved_at_e', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('small_fence_on_rdma_read_response', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('umr_en', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('a', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('rw', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('rr', c.Array[ctypes.c_ubyte, Literal[1]], 19), ('lw', c.Array[ctypes.c_ubyte, Literal[1]], 20), ('lr', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('access_mode_1_0', c.Array[ctypes.c_ubyte, Literal[2]], 22), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[2]], 24), ('ma_translation_mode', c.Array[ctypes.c_ubyte, Literal[2]], 26), ('reserved_at_1c', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('mkey_7_0', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('length64', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('bsf_en', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('sync_umr', c.Array[ctypes.c_ubyte, Literal[1]], 98), ('reserved_at_63', c.Array[ctypes.c_ubyte, Literal[2]], 99), ('expected_sigerr_count', c.Array[ctypes.c_ubyte, Literal[1]], 101), ('reserved_at_66', c.Array[ctypes.c_ubyte, Literal[1]], 102), ('en_rinval', c.Array[ctypes.c_ubyte, Literal[1]], 103), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('len', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('bsf_octword_size', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[96]], 288), ('crossing_target_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 384), ('reserved_at_190', c.Array[ctypes.c_ubyte, Literal[16]], 400), ('translations_octword_size', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[25]], 448), ('relaxed_ordering_read', c.Array[ctypes.c_ubyte, Literal[1]], 473), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[6]], 474), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[5]], 480), ('pcie_tph_en', c.Array[ctypes.c_ubyte, Literal[1]], 485), ('pcie_tph_ph', c.Array[ctypes.c_ubyte, Literal[2]], 486), ('pcie_tph_steering_tag_index', c.Array[ctypes.c_ubyte, Literal[8]], 488), ('reserved_at_1f0', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
@c.record
class struct_mlx5_ifc_pkey_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  pkey: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_pkey_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('pkey', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class struct_mlx5_ifc_array128_auto_bits(c.Struct):
  SIZE = 128
  array128_auto: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_array128_auto_bits.register_fields([('array128_auto', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 0)])
@c.record
class struct_mlx5_ifc_hca_vport_context_bits(c.Struct):
  SIZE = 4096
  field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[224]]
  sm_virt_aware: c.Array[ctypes.c_ubyte, Literal[1]]
  has_smi: c.Array[ctypes.c_ubyte, Literal[1]]
  has_raw: c.Array[ctypes.c_ubyte, Literal[1]]
  grh_required: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_104: c.Array[ctypes.c_ubyte, Literal[4]]
  num_port_plane: c.Array[ctypes.c_ubyte, Literal[8]]
  port_physical_state: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_state_policy: c.Array[ctypes.c_ubyte, Literal[4]]
  port_state: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[32]]
  system_image_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  port_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  node_guid: c.Array[ctypes.c_ubyte, Literal[64]]
  cap_mask1: c.Array[ctypes.c_ubyte, Literal[32]]
  cap_mask1_field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  cap_mask2: c.Array[ctypes.c_ubyte, Literal[32]]
  cap_mask2_field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[128]]
  lid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_310: c.Array[ctypes.c_ubyte, Literal[4]]
  init_type_reply: c.Array[ctypes.c_ubyte, Literal[4]]
  lmc: c.Array[ctypes.c_ubyte, Literal[3]]
  subnet_timeout: c.Array[ctypes.c_ubyte, Literal[5]]
  sm_lid: c.Array[ctypes.c_ubyte, Literal[16]]
  sm_sl: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_334: c.Array[ctypes.c_ubyte, Literal[12]]
  qkey_violation_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  pkey_violation_counter: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_360: c.Array[ctypes.c_ubyte, Literal[3232]]
struct_mlx5_ifc_hca_vport_context_bits.register_fields([('field_select', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[224]], 32), ('sm_virt_aware', c.Array[ctypes.c_ubyte, Literal[1]], 256), ('has_smi', c.Array[ctypes.c_ubyte, Literal[1]], 257), ('has_raw', c.Array[ctypes.c_ubyte, Literal[1]], 258), ('grh_required', c.Array[ctypes.c_ubyte, Literal[1]], 259), ('reserved_at_104', c.Array[ctypes.c_ubyte, Literal[4]], 260), ('num_port_plane', c.Array[ctypes.c_ubyte, Literal[8]], 264), ('port_physical_state', c.Array[ctypes.c_ubyte, Literal[4]], 272), ('vport_state_policy', c.Array[ctypes.c_ubyte, Literal[4]], 276), ('port_state', c.Array[ctypes.c_ubyte, Literal[4]], 280), ('vport_state', c.Array[ctypes.c_ubyte, Literal[4]], 284), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('system_image_guid', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('port_guid', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('node_guid', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('cap_mask1', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('cap_mask1_field_select', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('cap_mask2', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('cap_mask2_field_select', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[128]], 640), ('lid', c.Array[ctypes.c_ubyte, Literal[16]], 768), ('reserved_at_310', c.Array[ctypes.c_ubyte, Literal[4]], 784), ('init_type_reply', c.Array[ctypes.c_ubyte, Literal[4]], 788), ('lmc', c.Array[ctypes.c_ubyte, Literal[3]], 792), ('subnet_timeout', c.Array[ctypes.c_ubyte, Literal[5]], 795), ('sm_lid', c.Array[ctypes.c_ubyte, Literal[16]], 800), ('sm_sl', c.Array[ctypes.c_ubyte, Literal[4]], 816), ('reserved_at_334', c.Array[ctypes.c_ubyte, Literal[12]], 820), ('qkey_violation_counter', c.Array[ctypes.c_ubyte, Literal[16]], 832), ('pkey_violation_counter', c.Array[ctypes.c_ubyte, Literal[16]], 848), ('reserved_at_360', c.Array[ctypes.c_ubyte, Literal[3232]], 864)])
@c.record
class struct_mlx5_ifc_esw_vport_context_bits(c.Struct):
  SIZE = 2048
  fdb_to_vport_reg_c: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[2]]
  vport_svlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_svlan_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_insert: c.Array[ctypes.c_ubyte, Literal[2]]
  fdb_to_vport_reg_c_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  svlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  svlan_pcp: c.Array[ctypes.c_ubyte, Literal[3]]
  svlan_id: c.Array[ctypes.c_ubyte, Literal[12]]
  cvlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  cvlan_pcp: c.Array[ctypes.c_ubyte, Literal[3]]
  cvlan_id: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[1824]]
  sw_steering_vport_icm_address_rx: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_vport_icm_address_tx: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_esw_vport_context_bits.register_fields([('fdb_to_vport_reg_c', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[2]], 1), ('vport_svlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('vport_cvlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('vport_svlan_insert', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('vport_cvlan_insert', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('fdb_to_vport_reg_c_id', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('svlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('svlan_pcp', c.Array[ctypes.c_ubyte, Literal[3]], 65), ('svlan_id', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('cvlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 80), ('cvlan_pcp', c.Array[ctypes.c_ubyte, Literal[3]], 81), ('cvlan_id', c.Array[ctypes.c_ubyte, Literal[12]], 84), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[1824]], 96), ('sw_steering_vport_icm_address_rx', c.Array[ctypes.c_ubyte, Literal[64]], 1920), ('sw_steering_vport_icm_address_tx', c.Array[ctypes.c_ubyte, Literal[64]], 1984)])
_anonenum71: dict[int, str] = {(MLX5_EQC_STATUS_OK:=0): 'MLX5_EQC_STATUS_OK', (MLX5_EQC_STATUS_EQ_WRITE_FAILURE:=10): 'MLX5_EQC_STATUS_EQ_WRITE_FAILURE'}
_anonenum72: dict[int, str] = {(MLX5_EQC_ST_ARMED:=9): 'MLX5_EQC_ST_ARMED', (MLX5_EQC_ST_FIRED:=10): 'MLX5_EQC_ST_FIRED'}
@c.record
class struct_mlx5_ifc_eqc_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[9]]
  ec: c.Array[ctypes.c_ubyte, Literal[1]]
  oi: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f: c.Array[ctypes.c_ubyte, Literal[5]]
  st: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[20]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_5a: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[3]]
  log_eq_size: c.Array[ctypes.c_ubyte, Literal[5]]
  uar_page: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[20]]
  intr: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_c8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[8]]
  consumer_counter: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  producer_counter: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_eqc_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[9]], 4), ('ec', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('oi', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('reserved_at_f', c.Array[ctypes.c_ubyte, Literal[5]], 15), ('st', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[20]], 64), ('page_offset', c.Array[ctypes.c_ubyte, Literal[6]], 84), ('reserved_at_5a', c.Array[ctypes.c_ubyte, Literal[6]], 90), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[3]], 96), ('log_eq_size', c.Array[ctypes.c_ubyte, Literal[5]], 99), ('uar_page', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[20]], 160), ('intr', c.Array[ctypes.c_ubyte, Literal[12]], 180), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[3]], 192), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 195), ('reserved_at_c8', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[96]], 224), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[8]], 320), ('consumer_counter', c.Array[ctypes.c_ubyte, Literal[24]], 328), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('producer_counter', c.Array[ctypes.c_ubyte, Literal[24]], 360), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[128]], 384)])
_anonenum73: dict[int, str] = {(MLX5_DCTC_STATE_ACTIVE:=0): 'MLX5_DCTC_STATE_ACTIVE', (MLX5_DCTC_STATE_DRAINING:=1): 'MLX5_DCTC_STATE_DRAINING', (MLX5_DCTC_STATE_DRAINED:=2): 'MLX5_DCTC_STATE_DRAINED'}
_anonenum74: dict[int, str] = {(MLX5_DCTC_CS_RES_DISABLE:=0): 'MLX5_DCTC_CS_RES_DISABLE', (MLX5_DCTC_CS_RES_NA:=1): 'MLX5_DCTC_CS_RES_NA', (MLX5_DCTC_CS_RES_UP_TO_64B:=2): 'MLX5_DCTC_CS_RES_UP_TO_64B'}
_anonenum75: dict[int, str] = {(MLX5_DCTC_MTU_256_BYTES:=1): 'MLX5_DCTC_MTU_256_BYTES', (MLX5_DCTC_MTU_512_BYTES:=2): 'MLX5_DCTC_MTU_512_BYTES', (MLX5_DCTC_MTU_1K_BYTES:=3): 'MLX5_DCTC_MTU_1K_BYTES', (MLX5_DCTC_MTU_2K_BYTES:=4): 'MLX5_DCTC_MTU_2K_BYTES', (MLX5_DCTC_MTU_4K_BYTES:=5): 'MLX5_DCTC_MTU_4K_BYTES'}
@c.record
class struct_mlx5_ifc_dctc_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[7]]
  dp_ordering_force: c.Array[ctypes.c_ubyte, Literal[1]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
  atomic_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  rre: c.Array[ctypes.c_ubyte, Literal[1]]
  rwe: c.Array[ctypes.c_ubyte, Literal[1]]
  rae: c.Array[ctypes.c_ubyte, Literal[1]]
  atomic_like_write_en: c.Array[ctypes.c_ubyte, Literal[1]]
  latency_sensitive: c.Array[ctypes.c_ubyte, Literal[1]]
  rlky: c.Array[ctypes.c_ubyte, Literal[1]]
  free_ar: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_73: c.Array[ctypes.c_ubyte, Literal[1]]
  dp_ordering_1: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_75: c.Array[ctypes.c_ubyte, Literal[11]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  cs_res: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_90: c.Array[ctypes.c_ubyte, Literal[3]]
  min_rnr_nak: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_98: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  srqn_xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  tclass: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e8: c.Array[ctypes.c_ubyte, Literal[4]]
  flow_label: c.Array[ctypes.c_ubyte, Literal[20]]
  dc_access_key: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[5]]
  mtu: c.Array[ctypes.c_ubyte, Literal[3]]
  port: c.Array[ctypes.c_ubyte, Literal[8]]
  pkey_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  my_addr_index: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_170: c.Array[ctypes.c_ubyte, Literal[8]]
  hop_limit: c.Array[ctypes.c_ubyte, Literal[8]]
  dc_access_key_violation_count: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1a0: c.Array[ctypes.c_ubyte, Literal[20]]
  dei_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  eth_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  ecn: c.Array[ctypes.c_ubyte, Literal[2]]
  dscp: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dctc_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[7]], 32), ('dp_ordering_force', c.Array[ctypes.c_ubyte, Literal[1]], 39), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('atomic_mode', c.Array[ctypes.c_ubyte, Literal[4]], 104), ('rre', c.Array[ctypes.c_ubyte, Literal[1]], 108), ('rwe', c.Array[ctypes.c_ubyte, Literal[1]], 109), ('rae', c.Array[ctypes.c_ubyte, Literal[1]], 110), ('atomic_like_write_en', c.Array[ctypes.c_ubyte, Literal[1]], 111), ('latency_sensitive', c.Array[ctypes.c_ubyte, Literal[1]], 112), ('rlky', c.Array[ctypes.c_ubyte, Literal[1]], 113), ('free_ar', c.Array[ctypes.c_ubyte, Literal[1]], 114), ('reserved_at_73', c.Array[ctypes.c_ubyte, Literal[1]], 115), ('dp_ordering_1', c.Array[ctypes.c_ubyte, Literal[1]], 116), ('reserved_at_75', c.Array[ctypes.c_ubyte, Literal[11]], 117), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('cs_res', c.Array[ctypes.c_ubyte, Literal[8]], 136), ('reserved_at_90', c.Array[ctypes.c_ubyte, Literal[3]], 144), ('min_rnr_nak', c.Array[ctypes.c_ubyte, Literal[5]], 147), ('reserved_at_98', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('srqn_xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('tclass', c.Array[ctypes.c_ubyte, Literal[8]], 224), ('reserved_at_e8', c.Array[ctypes.c_ubyte, Literal[4]], 232), ('flow_label', c.Array[ctypes.c_ubyte, Literal[20]], 236), ('dc_access_key', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[5]], 320), ('mtu', c.Array[ctypes.c_ubyte, Literal[3]], 325), ('port', c.Array[ctypes.c_ubyte, Literal[8]], 328), ('pkey_index', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('my_addr_index', c.Array[ctypes.c_ubyte, Literal[8]], 360), ('reserved_at_170', c.Array[ctypes.c_ubyte, Literal[8]], 368), ('hop_limit', c.Array[ctypes.c_ubyte, Literal[8]], 376), ('dc_access_key_violation_count', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('reserved_at_1a0', c.Array[ctypes.c_ubyte, Literal[20]], 416), ('dei_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 436), ('eth_prio', c.Array[ctypes.c_ubyte, Literal[3]], 437), ('ecn', c.Array[ctypes.c_ubyte, Literal[2]], 440), ('dscp', c.Array[ctypes.c_ubyte, Literal[6]], 442), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
_anonenum76: dict[int, str] = {(MLX5_CQC_STATUS_OK:=0): 'MLX5_CQC_STATUS_OK', (MLX5_CQC_STATUS_CQ_OVERFLOW:=9): 'MLX5_CQC_STATUS_CQ_OVERFLOW', (MLX5_CQC_STATUS_CQ_WRITE_FAIL:=10): 'MLX5_CQC_STATUS_CQ_WRITE_FAIL'}
_anonenum77: dict[int, str] = {(MLX5_CQC_CQE_SZ_64_BYTES:=0): 'MLX5_CQC_CQE_SZ_64_BYTES', (MLX5_CQC_CQE_SZ_128_BYTES:=1): 'MLX5_CQC_CQE_SZ_128_BYTES'}
_anonenum78: dict[int, str] = {(MLX5_CQC_ST_SOLICITED_NOTIFICATION_REQUEST_ARMED:=6): 'MLX5_CQC_ST_SOLICITED_NOTIFICATION_REQUEST_ARMED', (MLX5_CQC_ST_NOTIFICATION_REQUEST_ARMED:=9): 'MLX5_CQC_ST_NOTIFICATION_REQUEST_ARMED', (MLX5_CQC_ST_FIRED:=10): 'MLX5_CQC_ST_FIRED'}
enum_mlx5_cq_period_mode: dict[int, str] = {(MLX5_CQ_PERIOD_MODE_START_FROM_EQE:=0): 'MLX5_CQ_PERIOD_MODE_START_FROM_EQE', (MLX5_CQ_PERIOD_MODE_START_FROM_CQE:=1): 'MLX5_CQ_PERIOD_MODE_START_FROM_CQE', (MLX5_CQ_PERIOD_NUM_MODES:=2): 'MLX5_CQ_PERIOD_NUM_MODES'}
@c.record
class struct_mlx5_ifc_cqc_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[2]]
  dbr_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  apu_cq: c.Array[ctypes.c_ubyte, Literal[1]]
  cqe_sz: c.Array[ctypes.c_ubyte, Literal[3]]
  cc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c: c.Array[ctypes.c_ubyte, Literal[1]]
  scqe_break_moderation_en: c.Array[ctypes.c_ubyte, Literal[1]]
  oi: c.Array[ctypes.c_ubyte, Literal[1]]
  cq_period_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  cqe_comp_en: c.Array[ctypes.c_ubyte, Literal[1]]
  mini_cqe_res_format: c.Array[ctypes.c_ubyte, Literal[2]]
  st: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[6]]
  cqe_compression_layout: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[20]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_5a: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[3]]
  log_cq_size: c.Array[ctypes.c_ubyte, Literal[5]]
  uar_page: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[4]]
  cq_period: c.Array[ctypes.c_ubyte, Literal[12]]
  cq_max_count: c.Array[ctypes.c_ubyte, Literal[16]]
  c_eqn_or_apu_element: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[3]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_c8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  last_notified_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[8]]
  last_solicit_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[8]]
  consumer_counter: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  producer_counter: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[64]]
  dbr_addr: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_cqc_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[2]], 4), ('dbr_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('apu_cq', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('cqe_sz', c.Array[ctypes.c_ubyte, Literal[3]], 8), ('cc', c.Array[ctypes.c_ubyte, Literal[1]], 11), ('reserved_at_c', c.Array[ctypes.c_ubyte, Literal[1]], 12), ('scqe_break_moderation_en', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('oi', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('cq_period_mode', c.Array[ctypes.c_ubyte, Literal[2]], 15), ('cqe_comp_en', c.Array[ctypes.c_ubyte, Literal[1]], 17), ('mini_cqe_res_format', c.Array[ctypes.c_ubyte, Literal[2]], 18), ('st', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[6]], 24), ('cqe_compression_layout', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[20]], 64), ('page_offset', c.Array[ctypes.c_ubyte, Literal[6]], 84), ('reserved_at_5a', c.Array[ctypes.c_ubyte, Literal[6]], 90), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[3]], 96), ('log_cq_size', c.Array[ctypes.c_ubyte, Literal[5]], 99), ('uar_page', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[4]], 128), ('cq_period', c.Array[ctypes.c_ubyte, Literal[12]], 132), ('cq_max_count', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('c_eqn_or_apu_element', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[3]], 192), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 195), ('reserved_at_c8', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('last_notified_index', c.Array[ctypes.c_ubyte, Literal[24]], 264), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[8]], 288), ('last_solicit_index', c.Array[ctypes.c_ubyte, Literal[24]], 296), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[8]], 320), ('consumer_counter', c.Array[ctypes.c_ubyte, Literal[24]], 328), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('producer_counter', c.Array[ctypes.c_ubyte, Literal[24]], 360), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('dbr_addr', c.Array[ctypes.c_ubyte, Literal[64]], 448)])
@c.record
class union_mlx5_ifc_cong_control_roce_ecn_auto_bits(c.Struct):
  SIZE = 2048
  cong_control_802_1qau_rp: struct_mlx5_ifc_cong_control_802_1qau_rp_bits
  cong_control_r_roce_ecn_rp: struct_mlx5_ifc_cong_control_r_roce_ecn_rp_bits
  cong_control_r_roce_ecn_np: struct_mlx5_ifc_cong_control_r_roce_ecn_np_bits
  cong_control_r_roce_general: struct_mlx5_ifc_cong_control_r_roce_general_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[2048]]
union_mlx5_ifc_cong_control_roce_ecn_auto_bits.register_fields([('cong_control_802_1qau_rp', struct_mlx5_ifc_cong_control_802_1qau_rp_bits, 0), ('cong_control_r_roce_ecn_rp', struct_mlx5_ifc_cong_control_r_roce_ecn_rp_bits, 0), ('cong_control_r_roce_ecn_np', struct_mlx5_ifc_cong_control_r_roce_ecn_np_bits, 0), ('cong_control_r_roce_general', struct_mlx5_ifc_cong_control_r_roce_general_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[2048]], 0)])
@c.record
class struct_mlx5_ifc_query_adapter_param_block_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[192]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  ieee_vendor_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[16]]
  vsd_vendor_id: c.Array[ctypes.c_ubyte, Literal[16]]
  vsd: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[208]]
  vsd_contd_psid: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_query_adapter_param_block_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[192]], 0), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('ieee_vendor_id', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('vsd_vendor_id', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('vsd', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[208]], 256), ('vsd_contd_psid', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 1920)])
_anonenum79: dict[int, str] = {(MLX5_XRQC_STATE_GOOD:=0): 'MLX5_XRQC_STATE_GOOD', (MLX5_XRQC_STATE_ERROR:=1): 'MLX5_XRQC_STATE_ERROR'}
_anonenum80: dict[int, str] = {(MLX5_XRQC_TOPOLOGY_NO_SPECIAL_TOPOLOGY:=0): 'MLX5_XRQC_TOPOLOGY_NO_SPECIAL_TOPOLOGY', (MLX5_XRQC_TOPOLOGY_TAG_MATCHING:=1): 'MLX5_XRQC_TOPOLOGY_TAG_MATCHING'}
_anonenum81: dict[int, str] = {(MLX5_XRQC_OFFLOAD_RNDV:=1): 'MLX5_XRQC_OFFLOAD_RNDV'}
@c.record
class struct_mlx5_ifc_tag_matching_topology_context_bits(c.Struct):
  SIZE = 128
  log_matching_list_sz: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[12]]
  append_next_index: c.Array[ctypes.c_ubyte, Literal[16]]
  sw_phase_cnt: c.Array[ctypes.c_ubyte, Literal[16]]
  hw_phase_cnt: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_tag_matching_topology_context_bits.register_fields([('log_matching_list_sz', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('append_next_index', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('sw_phase_cnt', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('hw_phase_cnt', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_xrqc_bits(c.Struct):
  SIZE = 2560
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  rlkey: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5: c.Array[ctypes.c_ubyte, Literal[15]]
  topology: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[4]]
  offload: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  user_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
  tag_matching_topology_context: struct_mlx5_ifc_tag_matching_topology_context_bits
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[640]]
  wq: struct_mlx5_ifc_wq_bits
struct_mlx5_ifc_xrqc_bits.register_fields([('state', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('rlkey', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('reserved_at_5', c.Array[ctypes.c_ubyte, Literal[15]], 5), ('topology', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('offload', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('user_index', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96), ('tag_matching_topology_context', struct_mlx5_ifc_tag_matching_topology_context_bits, 256), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[640]], 384), ('wq', struct_mlx5_ifc_wq_bits, 1024)])
@c.record
class union_mlx5_ifc_modify_field_select_resize_field_select_auto_bits(c.Struct):
  SIZE = 32
  modify_field_select: struct_mlx5_ifc_modify_field_select_bits
  resize_field_select: struct_mlx5_ifc_resize_field_select_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
union_mlx5_ifc_modify_field_select_resize_field_select_auto_bits.register_fields([('modify_field_select', struct_mlx5_ifc_modify_field_select_bits, 0), ('resize_field_select', struct_mlx5_ifc_resize_field_select_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class union_mlx5_ifc_field_select_802_1_r_roce_auto_bits(c.Struct):
  SIZE = 32
  field_select_802_1qau_rp: struct_mlx5_ifc_field_select_802_1qau_rp_bits
  field_select_r_roce_rp: struct_mlx5_ifc_field_select_r_roce_rp_bits
  field_select_r_roce_np: struct_mlx5_ifc_field_select_r_roce_np_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
union_mlx5_ifc_field_select_802_1_r_roce_auto_bits.register_fields([('field_select_802_1qau_rp', struct_mlx5_ifc_field_select_802_1qau_rp_bits, 0), ('field_select_r_roce_rp', struct_mlx5_ifc_field_select_r_roce_rp_bits, 0), ('field_select_r_roce_np', struct_mlx5_ifc_field_select_r_roce_np_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_rs_histogram_cntrs_bits(c.Struct):
  SIZE = 1728
  hist: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[16]]
  reserved_at_400: c.Array[ctypes.c_ubyte, Literal[704]]
struct_mlx5_ifc_rs_histogram_cntrs_bits.register_fields([('hist', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[16]], 0), ('reserved_at_400', c.Array[ctypes.c_ubyte, Literal[704]], 1024)])
@c.record
class union_mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits(c.Struct):
  SIZE = 1984
  eth_802_3_cntrs_grp_data_layout: struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits
  eth_2863_cntrs_grp_data_layout: struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits
  eth_2819_cntrs_grp_data_layout: struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits
  eth_3635_cntrs_grp_data_layout: struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits
  eth_extended_cntrs_grp_data_layout: struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits
  eth_per_prio_grp_data_layout: struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits
  eth_per_tc_prio_grp_data_layout: struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits
  eth_per_tc_congest_prio_grp_data_layout: struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits
  ib_port_cntrs_grp_data_layout: struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits
  ib_ext_port_cntrs_grp_data_layout: struct_mlx5_ifc_ib_ext_port_cntrs_grp_data_layout_bits
  phys_layer_cntrs: struct_mlx5_ifc_phys_layer_cntrs_bits
  phys_layer_statistical_cntrs: struct_mlx5_ifc_phys_layer_statistical_cntrs_bits
  phys_layer_recovery_cntrs: struct_mlx5_ifc_phys_layer_recovery_cntrs_bits
  rs_histogram_cntrs: struct_mlx5_ifc_rs_histogram_cntrs_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1984]]
union_mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits.register_fields([('eth_802_3_cntrs_grp_data_layout', struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits, 0), ('eth_2863_cntrs_grp_data_layout', struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits, 0), ('eth_2819_cntrs_grp_data_layout', struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits, 0), ('eth_3635_cntrs_grp_data_layout', struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits, 0), ('eth_extended_cntrs_grp_data_layout', struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits, 0), ('eth_per_prio_grp_data_layout', struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits, 0), ('eth_per_tc_prio_grp_data_layout', struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits, 0), ('eth_per_tc_congest_prio_grp_data_layout', struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits, 0), ('ib_port_cntrs_grp_data_layout', struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits, 0), ('ib_ext_port_cntrs_grp_data_layout', struct_mlx5_ifc_ib_ext_port_cntrs_grp_data_layout_bits, 0), ('phys_layer_cntrs', struct_mlx5_ifc_phys_layer_cntrs_bits, 0), ('phys_layer_statistical_cntrs', struct_mlx5_ifc_phys_layer_statistical_cntrs_bits, 0), ('phys_layer_recovery_cntrs', struct_mlx5_ifc_phys_layer_recovery_cntrs_bits, 0), ('rs_histogram_cntrs', struct_mlx5_ifc_rs_histogram_cntrs_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1984]], 0)])
@c.record
class union_mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits(c.Struct):
  SIZE = 1984
  pcie_perf_cntrs_grp_data_layout: struct_mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1984]]
union_mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits.register_fields([('pcie_perf_cntrs_grp_data_layout', struct_mlx5_ifc_pcie_perf_cntrs_grp_data_layout_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1984]], 0)])
@c.record
class union_mlx5_ifc_event_auto_bits(c.Struct):
  SIZE = 224
  comp_event: struct_mlx5_ifc_comp_event_bits
  dct_events: struct_mlx5_ifc_dct_events_bits
  qp_events: struct_mlx5_ifc_qp_events_bits
  wqe_associated_page_fault_event: struct_mlx5_ifc_wqe_associated_page_fault_event_bits
  rdma_page_fault_event: struct_mlx5_ifc_rdma_page_fault_event_bits
  cq_error: struct_mlx5_ifc_cq_error_bits
  dropped_packet_logged: struct_mlx5_ifc_dropped_packet_logged_bits
  port_state_change_event: struct_mlx5_ifc_port_state_change_event_bits
  gpio_event: struct_mlx5_ifc_gpio_event_bits
  db_bf_congestion_event: struct_mlx5_ifc_db_bf_congestion_event_bits
  stall_vl_event: struct_mlx5_ifc_stall_vl_event_bits
  cmd_inter_comp_event: struct_mlx5_ifc_cmd_inter_comp_event_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[224]]
union_mlx5_ifc_event_auto_bits.register_fields([('comp_event', struct_mlx5_ifc_comp_event_bits, 0), ('dct_events', struct_mlx5_ifc_dct_events_bits, 0), ('qp_events', struct_mlx5_ifc_qp_events_bits, 0), ('wqe_associated_page_fault_event', struct_mlx5_ifc_wqe_associated_page_fault_event_bits, 0), ('rdma_page_fault_event', struct_mlx5_ifc_rdma_page_fault_event_bits, 0), ('cq_error', struct_mlx5_ifc_cq_error_bits, 0), ('dropped_packet_logged', struct_mlx5_ifc_dropped_packet_logged_bits, 0), ('port_state_change_event', struct_mlx5_ifc_port_state_change_event_bits, 0), ('gpio_event', struct_mlx5_ifc_gpio_event_bits, 0), ('db_bf_congestion_event', struct_mlx5_ifc_db_bf_congestion_event_bits, 0), ('stall_vl_event', struct_mlx5_ifc_stall_vl_event_bits, 0), ('cmd_inter_comp_event', struct_mlx5_ifc_cmd_inter_comp_event_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[224]], 0)])
@c.record
class struct_mlx5_ifc_health_buffer_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[256]]
  assert_existptr: c.Array[ctypes.c_ubyte, Literal[32]]
  assert_callra: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[32]]
  time: c.Array[ctypes.c_ubyte, Literal[32]]
  fw_version: c.Array[ctypes.c_ubyte, Literal[32]]
  hw_id: c.Array[ctypes.c_ubyte, Literal[32]]
  rfr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1c1: c.Array[ctypes.c_ubyte, Literal[3]]
  valid: c.Array[ctypes.c_ubyte, Literal[1]]
  severity: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_1c8: c.Array[ctypes.c_ubyte, Literal[24]]
  irisc_index: c.Array[ctypes.c_ubyte, Literal[8]]
  synd: c.Array[ctypes.c_ubyte, Literal[8]]
  ext_synd: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_health_buffer_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[256]], 0), ('assert_existptr', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('assert_callra', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('time', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('fw_version', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('hw_id', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('rfr', c.Array[ctypes.c_ubyte, Literal[1]], 448), ('reserved_at_1c1', c.Array[ctypes.c_ubyte, Literal[3]], 449), ('valid', c.Array[ctypes.c_ubyte, Literal[1]], 452), ('severity', c.Array[ctypes.c_ubyte, Literal[3]], 453), ('reserved_at_1c8', c.Array[ctypes.c_ubyte, Literal[24]], 456), ('irisc_index', c.Array[ctypes.c_ubyte, Literal[8]], 480), ('synd', c.Array[ctypes.c_ubyte, Literal[8]], 488), ('ext_synd', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
@c.record
class struct_mlx5_ifc_register_loopback_control_bits(c.Struct):
  SIZE = 128
  no_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[7]]
  port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_register_loopback_control_bits.register_fields([('no_lb', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[7]], 1), ('port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
_anonenum82: dict[int, str] = {(MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_SUCCESS:=0): 'MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_SUCCESS', (MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_FAIL:=1): 'MLX5_TEARDOWN_HCA_OUT_FORCE_STATE_FAIL'}
@c.record
class struct_mlx5_ifc_teardown_hca_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[63]]
  state: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_teardown_hca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[63]], 64), ('state', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
_anonenum83: dict[int, str] = {(MLX5_TEARDOWN_HCA_IN_PROFILE_GRACEFUL_CLOSE:=0): 'MLX5_TEARDOWN_HCA_IN_PROFILE_GRACEFUL_CLOSE', (MLX5_TEARDOWN_HCA_IN_PROFILE_FORCE_CLOSE:=1): 'MLX5_TEARDOWN_HCA_IN_PROFILE_FORCE_CLOSE', (MLX5_TEARDOWN_HCA_IN_PROFILE_PREPARE_FAST_TEARDOWN:=2): 'MLX5_TEARDOWN_HCA_IN_PROFILE_PREPARE_FAST_TEARDOWN'}
@c.record
class struct_mlx5_ifc_teardown_hca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  profile: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_teardown_hca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('profile', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_sqerr2rts_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_sqerr2rts_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_sqerr2rts_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_sqerr2rts_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_sqd2rts_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_sqd2rts_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_sqd2rts_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_sqd2rts_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_set_roce_address_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_roce_address_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_roce_address_in_bits(c.Struct):
  SIZE = 384
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  roce_address_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[12]]
  vhca_port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_address: struct_mlx5_ifc_roce_addr_layout_bits
struct_mlx5_ifc_set_roce_address_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('roce_address_index', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[12]], 80), ('vhca_port_num', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('roce_address', struct_mlx5_ifc_roce_addr_layout_bits, 128)])
@c.record
class struct_mlx5_ifc_set_mad_demux_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_mad_demux_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum84: dict[int, str] = {(MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_PASS_ALL:=0): 'MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_PASS_ALL', (MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_SELECTIVE:=2): 'MLX5_SET_MAD_DEMUX_IN_DEMUX_MODE_SELECTIVE'}
@c.record
class struct_mlx5_ifc_set_mad_demux_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[6]]
  demux_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_set_mad_demux_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[6]], 96), ('demux_mode', c.Array[ctypes.c_ubyte, Literal[2]], 102), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[24]], 104)])
@c.record
class struct_mlx5_ifc_set_l2_table_entry_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_l2_table_entry_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_l2_table_entry_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[16]]
  silent_mode_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  silent_mode: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_f2: c.Array[ctypes.c_ubyte, Literal[1]]
  vlan_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  vlan: c.Array[ctypes.c_ubyte, Literal[12]]
  mac_address: struct_mlx5_ifc_mac_address_layout_bits
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[192]]
struct_mlx5_ifc_set_l2_table_entry_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[96]], 64), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_index', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('silent_mode_valid', c.Array[ctypes.c_ubyte, Literal[1]], 240), ('silent_mode', c.Array[ctypes.c_ubyte, Literal[1]], 241), ('reserved_at_f2', c.Array[ctypes.c_ubyte, Literal[1]], 242), ('vlan_valid', c.Array[ctypes.c_ubyte, Literal[1]], 243), ('vlan', c.Array[ctypes.c_ubyte, Literal[12]], 244), ('mac_address', struct_mlx5_ifc_mac_address_layout_bits, 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[192]], 320)])
@c.record
class struct_mlx5_ifc_set_issi_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_issi_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_issi_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  current_issi: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_set_issi_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('current_issi', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_set_hca_cap_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_hca_cap_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_hca_cap_in_bits(c.Struct):
  SIZE = 32896
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_function: c.Array[ctypes.c_ubyte, Literal[1]]
  ec_vf_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[1]]
  function_id_type: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[12]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  capability: union_mlx5_ifc_hca_cap_union_bits
struct_mlx5_ifc_set_hca_cap_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('ec_vf_function', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('function_id_type', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('capability', union_mlx5_ifc_hca_cap_union_bits, 128)])
_anonenum85: dict[int, str] = {(MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION:=0): 'MLX5_SET_FTE_MODIFY_ENABLE_MASK_ACTION', (MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_TAG:=1): 'MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_TAG', (MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST:=2): 'MLX5_SET_FTE_MODIFY_ENABLE_MASK_DESTINATION_LIST', (MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS:=3): 'MLX5_SET_FTE_MODIFY_ENABLE_MASK_FLOW_COUNTERS', (MLX5_SET_FTE_MODIFY_ENABLE_MASK_IPSEC_OBJ_ID:=4): 'MLX5_SET_FTE_MODIFY_ENABLE_MASK_IPSEC_OBJ_ID'}
@c.record
class struct_mlx5_ifc_set_fte_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_fte_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_fte_in_bits(c.Struct):
  SIZE = 6656
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  ignore_flow_level: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c1: c.Array[ctypes.c_ubyte, Literal[23]]
  modify_enable_mask: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
  flow_context: struct_mlx5_ifc_flow_context_bits
struct_mlx5_ifc_set_fte_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('ignore_flow_level', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('reserved_at_c1', c.Array[ctypes.c_ubyte, Literal[23]], 193), ('modify_enable_mask', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288), ('flow_context', struct_mlx5_ifc_flow_context_bits, 512)])
@c.record
class struct_mlx5_ifc_dest_format_bits(c.Struct):
  SIZE = 64
  destination_type: c.Array[ctypes.c_ubyte, Literal[8]]
  destination_id: c.Array[ctypes.c_ubyte, Literal[24]]
  destination_eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_reformat: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[14]]
  destination_eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_dest_format_bits.register_fields([('destination_type', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('destination_id', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('destination_eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('packet_reformat', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[14]], 34), ('destination_eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48)])
@c.record
class struct_mlx5_ifc_rts2rts_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_rts2rts_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_rts2rts_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_rts2rts_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_rtr2rts_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_rtr2rts_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_rtr2rts_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_rtr2rts_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_rst2init_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_rst2init_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_rst2init_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_rst2init_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_query_xrq_out_bits(c.Struct):
  SIZE = 2688
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  xrq_context: struct_mlx5_ifc_xrqc_bits
struct_mlx5_ifc_query_xrq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('xrq_context', struct_mlx5_ifc_xrqc_bits, 128)])
@c.record
class struct_mlx5_ifc_query_xrq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_xrq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_xrc_srq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  xrc_srq_context_entry: struct_mlx5_ifc_xrc_srqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1536]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_query_xrc_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('xrc_srq_context_entry', struct_mlx5_ifc_xrc_srqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1536]], 640), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_query_xrc_srq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrc_srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_xrc_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrc_srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum86: dict[int, str] = {(MLX5_QUERY_VPORT_STATE_OUT_STATE_DOWN:=0): 'MLX5_QUERY_VPORT_STATE_OUT_STATE_DOWN', (MLX5_QUERY_VPORT_STATE_OUT_STATE_UP:=1): 'MLX5_QUERY_VPORT_STATE_OUT_STATE_UP'}
@c.record
class struct_mlx5_ifc_query_vport_state_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[24]]
  admin_state: c.Array[ctypes.c_ubyte, Literal[4]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_query_vport_state_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[24]], 96), ('admin_state', c.Array[ctypes.c_ubyte, Literal[4]], 120), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 124)])
@c.record
class struct_mlx5_ifc_array1024_auto_bits(c.Struct):
  SIZE = 1024
  array1024_auto: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[32]]
struct_mlx5_ifc_array1024_auto_bits.register_fields([('array1024_auto', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_query_vuid_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[64]]
  query_vfs_vuid: c.Array[ctypes.c_ubyte, Literal[1]]
  data_direct: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_62: c.Array[ctypes.c_ubyte, Literal[14]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_query_vuid_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[64]], 32), ('query_vfs_vuid', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('data_direct', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('reserved_at_62', c.Array[ctypes.c_ubyte, Literal[14]], 98), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_query_vuid_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[416]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_entries: c.Array[ctypes.c_ubyte, Literal[16]]
  vuid: c.Array[struct_mlx5_ifc_array1024_auto_bits, Literal[0]]
struct_mlx5_ifc_query_vuid_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[416]], 64), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('num_of_entries', c.Array[ctypes.c_ubyte, Literal[16]], 496), ('vuid', c.Array[struct_mlx5_ifc_array1024_auto_bits, Literal[0]], 512)])
_anonenum87: dict[int, str] = {(MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT:=0): 'MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT', (MLX5_VPORT_STATE_OP_MOD_ESW_VPORT:=1): 'MLX5_VPORT_STATE_OP_MOD_ESW_VPORT', (MLX5_VPORT_STATE_OP_MOD_UPLINK:=2): 'MLX5_VPORT_STATE_OP_MOD_UPLINK'}
@c.record
class struct_mlx5_ifc_arm_monitor_counter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_arm_monitor_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_arm_monitor_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_arm_monitor_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum88: dict[int, str] = {(MLX5_QUERY_MONITOR_CNT_TYPE_PPCNT:=0): 'MLX5_QUERY_MONITOR_CNT_TYPE_PPCNT', (MLX5_QUERY_MONITOR_CNT_TYPE_Q_COUNTER:=1): 'MLX5_QUERY_MONITOR_CNT_TYPE_Q_COUNTER'}
enum_mlx5_monitor_counter_ppcnt: dict[int, str] = {(MLX5_QUERY_MONITOR_PPCNT_IN_RANGE_LENGTH_ERRORS:=0): 'MLX5_QUERY_MONITOR_PPCNT_IN_RANGE_LENGTH_ERRORS', (MLX5_QUERY_MONITOR_PPCNT_OUT_OF_RANGE_LENGTH_FIELD:=1): 'MLX5_QUERY_MONITOR_PPCNT_OUT_OF_RANGE_LENGTH_FIELD', (MLX5_QUERY_MONITOR_PPCNT_FRAME_TOO_LONG_ERRORS:=2): 'MLX5_QUERY_MONITOR_PPCNT_FRAME_TOO_LONG_ERRORS', (MLX5_QUERY_MONITOR_PPCNT_FRAME_CHECK_SEQUENCE_ERRORS:=3): 'MLX5_QUERY_MONITOR_PPCNT_FRAME_CHECK_SEQUENCE_ERRORS', (MLX5_QUERY_MONITOR_PPCNT_ALIGNMENT_ERRORS:=4): 'MLX5_QUERY_MONITOR_PPCNT_ALIGNMENT_ERRORS', (MLX5_QUERY_MONITOR_PPCNT_IF_OUT_DISCARDS:=5): 'MLX5_QUERY_MONITOR_PPCNT_IF_OUT_DISCARDS'}
_anonenum89: dict[int, str] = {(MLX5_QUERY_MONITOR_Q_COUNTER_RX_OUT_OF_BUFFER:=4): 'MLX5_QUERY_MONITOR_Q_COUNTER_RX_OUT_OF_BUFFER'}
@c.record
class struct_mlx5_ifc_monitor_counter_output_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[8]]
  counter: c.Array[ctypes.c_ubyte, Literal[16]]
  counter_group_id: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_monitor_counter_output_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('type', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('counter', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('counter_group_id', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_set_monitor_counter_in_bits(c.Struct):
  SIZE = 576
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_counters: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  monitor_counter: c.Array[struct_mlx5_ifc_monitor_counter_output_bits, Literal[7]]
struct_mlx5_ifc_set_monitor_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('num_of_counters', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('monitor_counter', c.Array[struct_mlx5_ifc_monitor_counter_output_bits, Literal[7]], 128)])
@c.record
class struct_mlx5_ifc_set_monitor_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_monitor_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_query_vport_state_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_vport_state_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_vnic_env_out_bits(c.Struct):
  SIZE = 4224
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  vport_env: struct_mlx5_ifc_vnic_diagnostic_statistics_bits
struct_mlx5_ifc_query_vnic_env_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('vport_env', struct_mlx5_ifc_vnic_diagnostic_statistics_bits, 128)])
_anonenum90: dict[int, str] = {(MLX5_QUERY_VNIC_ENV_IN_OP_MOD_VPORT_DIAG_STATISTICS:=0): 'MLX5_QUERY_VNIC_ENV_IN_OP_MOD_VPORT_DIAG_STATISTICS'}
@c.record
class struct_mlx5_ifc_query_vnic_env_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_vnic_env_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_vport_counter_out_bits(c.Struct):
  SIZE = 4224
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  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: struct_mlx5_ifc_traffic_counter_bits
  local_loopback: struct_mlx5_ifc_traffic_counter_bits
  reserved_at_700: c.Array[ctypes.c_ubyte, Literal[2432]]
struct_mlx5_ifc_query_vport_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('received_errors', struct_mlx5_ifc_traffic_counter_bits, 128), ('transmit_errors', struct_mlx5_ifc_traffic_counter_bits, 256), ('received_ib_unicast', struct_mlx5_ifc_traffic_counter_bits, 384), ('transmitted_ib_unicast', struct_mlx5_ifc_traffic_counter_bits, 512), ('received_ib_multicast', struct_mlx5_ifc_traffic_counter_bits, 640), ('transmitted_ib_multicast', struct_mlx5_ifc_traffic_counter_bits, 768), ('received_eth_broadcast', struct_mlx5_ifc_traffic_counter_bits, 896), ('transmitted_eth_broadcast', struct_mlx5_ifc_traffic_counter_bits, 1024), ('received_eth_unicast', struct_mlx5_ifc_traffic_counter_bits, 1152), ('transmitted_eth_unicast', struct_mlx5_ifc_traffic_counter_bits, 1280), ('received_eth_multicast', struct_mlx5_ifc_traffic_counter_bits, 1408), ('transmitted_eth_multicast', struct_mlx5_ifc_traffic_counter_bits, 1536), ('local_loopback', struct_mlx5_ifc_traffic_counter_bits, 1664), ('reserved_at_700', c.Array[ctypes.c_ubyte, Literal[2432]], 1792)])
_anonenum91: dict[int, str] = {(MLX5_QUERY_VPORT_COUNTER_IN_OP_MOD_VPORT_COUNTERS:=0): 'MLX5_QUERY_VPORT_COUNTER_IN_OP_MOD_VPORT_COUNTERS'}
@c.record
class struct_mlx5_ifc_query_vport_counter_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[96]]
  clear: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_vport_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[96]], 96), ('clear', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('reserved_at_c1', c.Array[ctypes.c_ubyte, Literal[31]], 193), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_query_tis_out_bits(c.Struct):
  SIZE = 1408
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  tis_context: struct_mlx5_ifc_tisc_bits
struct_mlx5_ifc_query_tis_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('tis_context', struct_mlx5_ifc_tisc_bits, 128)])
@c.record
class struct_mlx5_ifc_query_tis_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tisn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_tis_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tisn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_tir_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  tir_context: struct_mlx5_ifc_tirc_bits
struct_mlx5_ifc_query_tir_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('tir_context', struct_mlx5_ifc_tirc_bits, 256)])
@c.record
class struct_mlx5_ifc_query_tir_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tirn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_tir_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tirn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_srq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  srq_context_entry: struct_mlx5_ifc_srqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1536]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_query_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('srq_context_entry', struct_mlx5_ifc_srqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1536]], 640), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_query_srq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_sq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  sq_context: struct_mlx5_ifc_sqc_bits
struct_mlx5_ifc_query_sq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('sq_context', struct_mlx5_ifc_sqc_bits, 256)])
@c.record
class struct_mlx5_ifc_query_sq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  sqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_sq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('sqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_special_contexts_out_bits(c.Struct):
  SIZE = 256
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  dump_fill_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  resd_lkey: c.Array[ctypes.c_ubyte, Literal[32]]
  null_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  terminate_scatter_list_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  repeated_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_special_contexts_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('dump_fill_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('resd_lkey', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('null_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('terminate_scatter_list_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('repeated_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_query_special_contexts_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_special_contexts_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_query_scheduling_element_out_bits(c.Struct):
  SIZE = 1024
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  scheduling_context: struct_mlx5_ifc_scheduling_context_bits
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_query_scheduling_element_out_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('scheduling_context', struct_mlx5_ifc_scheduling_context_bits, 256), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[256]], 768)])
_anonenum92: dict[int, str] = {(SCHEDULING_HIERARCHY_E_SWITCH:=2): 'SCHEDULING_HIERARCHY_E_SWITCH', (SCHEDULING_HIERARCHY_NIC:=3): 'SCHEDULING_HIERARCHY_NIC'}
@c.record
class struct_mlx5_ifc_query_scheduling_element_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  scheduling_hierarchy: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[24]]
  scheduling_element_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_query_scheduling_element_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('scheduling_hierarchy', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('scheduling_element_id', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_query_rqt_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  rqt_context: struct_mlx5_ifc_rqtc_bits
struct_mlx5_ifc_query_rqt_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('rqt_context', struct_mlx5_ifc_rqtc_bits, 256)])
@c.record
class struct_mlx5_ifc_query_rqt_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqtn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_rqt_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqtn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_rq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  rq_context: struct_mlx5_ifc_rqc_bits
struct_mlx5_ifc_query_rq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('rq_context', struct_mlx5_ifc_rqc_bits, 256)])
@c.record
class struct_mlx5_ifc_query_rq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_rq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_roce_address_out_bits(c.Struct):
  SIZE = 384
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  roce_address: struct_mlx5_ifc_roce_addr_layout_bits
struct_mlx5_ifc_query_roce_address_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('roce_address', struct_mlx5_ifc_roce_addr_layout_bits, 128)])
@c.record
class struct_mlx5_ifc_query_roce_address_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  roce_address_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[12]]
  vhca_port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_roce_address_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('roce_address_index', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[12]], 80), ('vhca_port_num', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_rmp_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  rmp_context: struct_mlx5_ifc_rmpc_bits
struct_mlx5_ifc_query_rmp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('rmp_context', struct_mlx5_ifc_rmpc_bits, 256)])
@c.record
class struct_mlx5_ifc_query_rmp_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rmpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_rmp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rmpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_cqe_error_syndrome_bits(c.Struct):
  SIZE = 32
  hw_error_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  hw_syndrome_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c: c.Array[ctypes.c_ubyte, Literal[4]]
  vendor_error_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_cqe_error_syndrome_bits.register_fields([('hw_error_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('hw_syndrome_type', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('reserved_at_c', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('vendor_error_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 24)])
@c.record
class struct_mlx5_ifc_qp_context_extension_bits(c.Struct):
  SIZE = 1536
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[96]]
  error_syndrome: struct_mlx5_ifc_cqe_error_syndrome_bits
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1408]]
struct_mlx5_ifc_qp_context_extension_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[96]], 0), ('error_syndrome', struct_mlx5_ifc_cqe_error_syndrome_bits, 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1408]], 128)])
@c.record
class struct_mlx5_ifc_qpc_extension_and_pas_list_in_bits(c.Struct):
  SIZE = 1536
  qpc_data_extension: struct_mlx5_ifc_qp_context_extension_bits
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_qpc_extension_and_pas_list_in_bits.register_fields([('qpc_data_extension', struct_mlx5_ifc_qp_context_extension_bits, 0), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 1536)])
@c.record
class struct_mlx5_ifc_qp_pas_list_in_bits(c.Struct):
  SIZE = 0
  pas: c.Array[struct_mlx5_ifc_cmd_pas_bits, Literal[0]]
struct_mlx5_ifc_qp_pas_list_in_bits.register_fields([('pas', c.Array[struct_mlx5_ifc_cmd_pas_bits, Literal[0]], 0)])
@c.record
class union_mlx5_ifc_qp_pas_or_qpc_ext_and_pas_bits(c.Struct):
  SIZE = 1536
  qp_pas_list: struct_mlx5_ifc_qp_pas_list_in_bits
  qpc_ext_and_pas_list: struct_mlx5_ifc_qpc_extension_and_pas_list_in_bits
union_mlx5_ifc_qp_pas_or_qpc_ext_and_pas_bits.register_fields([('qp_pas_list', struct_mlx5_ifc_qp_pas_list_in_bits, 0), ('qpc_ext_and_pas_list', struct_mlx5_ifc_qpc_extension_and_pas_list_in_bits, 0)])
@c.record
class struct_mlx5_ifc_query_qp_out_bits(c.Struct):
  SIZE = 3712
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
  qp_pas_or_qpc_ext_and_pas: union_mlx5_ifc_qp_pas_or_qpc_ext_and_pas_bits
struct_mlx5_ifc_query_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048), ('qp_pas_or_qpc_ext_and_pas', union_mlx5_ifc_qp_pas_or_qpc_ext_and_pas_bits, 2176)])
@c.record
class struct_mlx5_ifc_query_qp_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  qpc_ext: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[7]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('qpc_ext', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[7]], 65), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_q_counter_out_bits(c.Struct):
  SIZE = 2048
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  rx_write_requests: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_read_requests: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_atomic_requests: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[32]]
  rx_dct_connect: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[32]]
  out_of_buffer: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1a0: c.Array[ctypes.c_ubyte, Literal[32]]
  out_of_sequence: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[32]]
  duplicate_request: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_220: c.Array[ctypes.c_ubyte, Literal[32]]
  rnr_nak_retry_err: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_260: c.Array[ctypes.c_ubyte, Literal[32]]
  packet_seq_err: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_2a0: c.Array[ctypes.c_ubyte, Literal[32]]
  implied_nak_seq_err: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_2e0: c.Array[ctypes.c_ubyte, Literal[32]]
  local_ack_timeout_err: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_320: c.Array[ctypes.c_ubyte, Literal[96]]
  req_rnr_retries_exceeded: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_3a0: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_local_length_error: c.Array[ctypes.c_ubyte, Literal[32]]
  req_local_length_error: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_local_qp_error: c.Array[ctypes.c_ubyte, Literal[32]]
  local_operation_error: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_local_protection: c.Array[ctypes.c_ubyte, Literal[32]]
  req_local_protection: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_cqe_error: c.Array[ctypes.c_ubyte, Literal[32]]
  req_cqe_error: c.Array[ctypes.c_ubyte, Literal[32]]
  req_mw_binding: c.Array[ctypes.c_ubyte, Literal[32]]
  req_bad_response: c.Array[ctypes.c_ubyte, Literal[32]]
  req_remote_invalid_request: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_remote_invalid_request: c.Array[ctypes.c_ubyte, Literal[32]]
  req_remote_access_errors: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_remote_access_errors: c.Array[ctypes.c_ubyte, Literal[32]]
  req_remote_operation_errors: c.Array[ctypes.c_ubyte, Literal[32]]
  req_transport_retries_exceeded: c.Array[ctypes.c_ubyte, Literal[32]]
  cq_overflow: c.Array[ctypes.c_ubyte, Literal[32]]
  resp_cqe_flush_error: c.Array[ctypes.c_ubyte, Literal[32]]
  req_cqe_flush_error: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_620: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_adp_retrans: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_adp_retrans_to: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_slow_restart: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_slow_restart_cnps: c.Array[ctypes.c_ubyte, Literal[32]]
  roce_slow_restart_trans: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_6e0: c.Array[ctypes.c_ubyte, Literal[288]]
struct_mlx5_ifc_query_q_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('rx_write_requests', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('rx_read_requests', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('rx_atomic_requests', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('rx_dct_connect', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('out_of_buffer', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('reserved_at_1a0', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('out_of_sequence', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('duplicate_request', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('reserved_at_220', c.Array[ctypes.c_ubyte, Literal[32]], 544), ('rnr_nak_retry_err', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('reserved_at_260', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('packet_seq_err', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('reserved_at_2a0', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('implied_nak_seq_err', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('reserved_at_2e0', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('local_ack_timeout_err', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('reserved_at_320', c.Array[ctypes.c_ubyte, Literal[96]], 800), ('req_rnr_retries_exceeded', c.Array[ctypes.c_ubyte, Literal[32]], 896), ('reserved_at_3a0', c.Array[ctypes.c_ubyte, Literal[32]], 928), ('resp_local_length_error', c.Array[ctypes.c_ubyte, Literal[32]], 960), ('req_local_length_error', c.Array[ctypes.c_ubyte, Literal[32]], 992), ('resp_local_qp_error', c.Array[ctypes.c_ubyte, Literal[32]], 1024), ('local_operation_error', c.Array[ctypes.c_ubyte, Literal[32]], 1056), ('resp_local_protection', c.Array[ctypes.c_ubyte, Literal[32]], 1088), ('req_local_protection', c.Array[ctypes.c_ubyte, Literal[32]], 1120), ('resp_cqe_error', c.Array[ctypes.c_ubyte, Literal[32]], 1152), ('req_cqe_error', c.Array[ctypes.c_ubyte, Literal[32]], 1184), ('req_mw_binding', c.Array[ctypes.c_ubyte, Literal[32]], 1216), ('req_bad_response', c.Array[ctypes.c_ubyte, Literal[32]], 1248), ('req_remote_invalid_request', c.Array[ctypes.c_ubyte, Literal[32]], 1280), ('resp_remote_invalid_request', c.Array[ctypes.c_ubyte, Literal[32]], 1312), ('req_remote_access_errors', c.Array[ctypes.c_ubyte, Literal[32]], 1344), ('resp_remote_access_errors', c.Array[ctypes.c_ubyte, Literal[32]], 1376), ('req_remote_operation_errors', c.Array[ctypes.c_ubyte, Literal[32]], 1408), ('req_transport_retries_exceeded', c.Array[ctypes.c_ubyte, Literal[32]], 1440), ('cq_overflow', c.Array[ctypes.c_ubyte, Literal[32]], 1472), ('resp_cqe_flush_error', c.Array[ctypes.c_ubyte, Literal[32]], 1504), ('req_cqe_flush_error', c.Array[ctypes.c_ubyte, Literal[32]], 1536), ('reserved_at_620', c.Array[ctypes.c_ubyte, Literal[32]], 1568), ('roce_adp_retrans', c.Array[ctypes.c_ubyte, Literal[32]], 1600), ('roce_adp_retrans_to', c.Array[ctypes.c_ubyte, Literal[32]], 1632), ('roce_slow_restart', c.Array[ctypes.c_ubyte, Literal[32]], 1664), ('roce_slow_restart_cnps', c.Array[ctypes.c_ubyte, Literal[32]], 1696), ('roce_slow_restart_trans', c.Array[ctypes.c_ubyte, Literal[32]], 1728), ('reserved_at_6e0', c.Array[ctypes.c_ubyte, Literal[288]], 1760)])
@c.record
class struct_mlx5_ifc_query_q_counter_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[96]]
  clear: c.Array[ctypes.c_ubyte, Literal[1]]
  aggregate: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c2: c.Array[ctypes.c_ubyte, Literal[30]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[24]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_query_q_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[96]], 96), ('clear', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('aggregate', c.Array[ctypes.c_ubyte, Literal[1]], 193), ('reserved_at_c2', c.Array[ctypes.c_ubyte, Literal[30]], 194), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[24]], 224), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 248)])
@c.record
class struct_mlx5_ifc_query_pages_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  embedded_cpu_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  num_pages: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_pages_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('embedded_cpu_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('num_pages', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum93: dict[int, str] = {(MLX5_QUERY_PAGES_IN_OP_MOD_BOOT_PAGES:=1): 'MLX5_QUERY_PAGES_IN_OP_MOD_BOOT_PAGES', (MLX5_QUERY_PAGES_IN_OP_MOD_INIT_PAGES:=2): 'MLX5_QUERY_PAGES_IN_OP_MOD_INIT_PAGES', (MLX5_QUERY_PAGES_IN_OP_MOD_REGULAR_PAGES:=3): 'MLX5_QUERY_PAGES_IN_OP_MOD_REGULAR_PAGES'}
@c.record
class struct_mlx5_ifc_query_pages_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  embedded_cpu_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_pages_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('embedded_cpu_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_nic_vport_context_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  nic_vport_context: struct_mlx5_ifc_nic_vport_context_bits
struct_mlx5_ifc_query_nic_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('nic_vport_context', struct_mlx5_ifc_nic_vport_context_bits, 128)])
@c.record
class struct_mlx5_ifc_query_nic_vport_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[5]]
  allowed_list_type: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_query_nic_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[5]], 96), ('allowed_list_type', c.Array[ctypes.c_ubyte, Literal[3]], 101), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[24]], 104)])
@c.record
class struct_mlx5_ifc_query_mkey_out_bits(c.Struct):
  SIZE = 2432
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  memory_key_mkey_entry: struct_mlx5_ifc_mkc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1536]]
  bsf0_klm0_pas_mtt0_1: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
  bsf1_klm1_pas_mtt2_3: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_query_mkey_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('memory_key_mkey_entry', struct_mlx5_ifc_mkc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1536]], 640), ('bsf0_klm0_pas_mtt0_1', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 2176), ('bsf1_klm1_pas_mtt2_3', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 2304)])
@c.record
class struct_mlx5_ifc_query_mkey_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  mkey_index: c.Array[ctypes.c_ubyte, Literal[24]]
  pg_access: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_61: c.Array[ctypes.c_ubyte, Literal[31]]
struct_mlx5_ifc_query_mkey_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('mkey_index', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('pg_access', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('reserved_at_61', c.Array[ctypes.c_ubyte, Literal[31]], 97)])
@c.record
class struct_mlx5_ifc_query_mad_demux_out_bits(c.Struct):
  SIZE = 160
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  mad_dumux_parameters_block: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_mad_demux_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('mad_dumux_parameters_block', c.Array[ctypes.c_ubyte, Literal[32]], 128)])
@c.record
class struct_mlx5_ifc_query_mad_demux_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_mad_demux_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_query_l2_table_entry_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[160]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[19]]
  vlan_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  vlan: c.Array[ctypes.c_ubyte, Literal[12]]
  mac_address: struct_mlx5_ifc_mac_address_layout_bits
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[192]]
struct_mlx5_ifc_query_l2_table_entry_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[160]], 64), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[19]], 224), ('vlan_valid', c.Array[ctypes.c_ubyte, Literal[1]], 243), ('vlan', c.Array[ctypes.c_ubyte, Literal[12]], 244), ('mac_address', struct_mlx5_ifc_mac_address_layout_bits, 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[192]], 320)])
@c.record
class struct_mlx5_ifc_query_l2_table_entry_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_query_l2_table_entry_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[96]], 64), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_index', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_query_issi_out_bits(c.Struct):
  SIZE = 896
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  current_issi: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
  reserved_at_100: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[76]]
  supported_issi_dw0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_issi_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('current_issi', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96), ('reserved_at_100', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[76]], 256), ('supported_issi_dw0', c.Array[ctypes.c_ubyte, Literal[32]], 864)])
@c.record
class struct_mlx5_ifc_query_issi_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_issi_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_driver_version_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_0: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_1: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_driver_version_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_0', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_1', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_driver_version_in_bits(c.Struct):
  SIZE = 640
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_0: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_1: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_2: c.Array[ctypes.c_ubyte, Literal[64]]
  driver_version: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]]
struct_mlx5_ifc_set_driver_version_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_0', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_1', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_2', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('driver_version', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]], 128)])
@c.record
class struct_mlx5_ifc_query_hca_vport_pkey_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  pkey: c.Array[struct_mlx5_ifc_pkey_bits, Literal[0]]
struct_mlx5_ifc_query_hca_vport_pkey_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('pkey', c.Array[struct_mlx5_ifc_pkey_bits, Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_query_hca_vport_pkey_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  pkey_index: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_query_hca_vport_pkey_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('pkey_index', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
_anonenum94: dict[int, str] = {(MLX5_HCA_VPORT_SEL_PORT_GUID:=1): 'MLX5_HCA_VPORT_SEL_PORT_GUID', (MLX5_HCA_VPORT_SEL_NODE_GUID:=2): 'MLX5_HCA_VPORT_SEL_NODE_GUID', (MLX5_HCA_VPORT_SEL_STATE_POLICY:=4): 'MLX5_HCA_VPORT_SEL_STATE_POLICY'}
@c.record
class struct_mlx5_ifc_query_hca_vport_gid_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  gids_num: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[16]]
  gid: c.Array[struct_mlx5_ifc_array128_auto_bits, Literal[0]]
struct_mlx5_ifc_query_hca_vport_gid_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('gids_num', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('gid', c.Array[struct_mlx5_ifc_array128_auto_bits, Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_query_hca_vport_gid_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  gid_index: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_query_hca_vport_gid_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('gid_index', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_query_hca_vport_context_out_bits(c.Struct):
  SIZE = 4224
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  hca_vport_context: struct_mlx5_ifc_hca_vport_context_bits
struct_mlx5_ifc_query_hca_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('hca_vport_context', struct_mlx5_ifc_hca_vport_context_bits, 128)])
@c.record
class struct_mlx5_ifc_query_hca_vport_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_hca_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_hca_cap_out_bits(c.Struct):
  SIZE = 32896
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  capability: union_mlx5_ifc_hca_cap_union_bits
struct_mlx5_ifc_query_hca_cap_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('capability', union_mlx5_ifc_hca_cap_union_bits, 128)])
@c.record
class struct_mlx5_ifc_query_hca_cap_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_function: c.Array[ctypes.c_ubyte, Literal[1]]
  ec_vf_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[1]]
  function_id_type: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[12]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_hca_cap_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('ec_vf_function', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('function_id_type', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_other_hca_cap_bits(c.Struct):
  SIZE = 640
  roce: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[639]]
struct_mlx5_ifc_other_hca_cap_bits.register_fields([('roce', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[639]], 1)])
@c.record
class struct_mlx5_ifc_query_other_hca_cap_out_bits(c.Struct):
  SIZE = 768
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  other_capability: struct_mlx5_ifc_other_hca_cap_bits
struct_mlx5_ifc_query_other_hca_cap_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('other_capability', struct_mlx5_ifc_other_hca_cap_bits, 128)])
@c.record
class struct_mlx5_ifc_query_other_hca_cap_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_other_hca_cap_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_modify_other_hca_cap_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_other_hca_cap_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_other_hca_cap_in_bits(c.Struct):
  SIZE = 768
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  other_capability: struct_mlx5_ifc_other_hca_cap_bits
struct_mlx5_ifc_modify_other_hca_cap_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('field_select', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('other_capability', struct_mlx5_ifc_other_hca_cap_bits, 128)])
@c.record
class struct_mlx5_ifc_sw_owner_icm_root_params_bits(c.Struct):
  SIZE = 128
  sw_owner_icm_root_1: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_owner_icm_root_0: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_sw_owner_icm_root_params_bits.register_fields([('sw_owner_icm_root_1', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('sw_owner_icm_root_0', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_rtc_params_bits(c.Struct):
  SIZE = 128
  rtc_id_0: c.Array[ctypes.c_ubyte, Literal[32]]
  rtc_id_1: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_rtc_params_bits.register_fields([('rtc_id_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('rtc_id_1', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_flow_table_context_bits(c.Struct):
  SIZE = 320
  reformat_en: c.Array[ctypes.c_ubyte, Literal[1]]
  decap_en: c.Array[ctypes.c_ubyte, Literal[1]]
  sw_owner: c.Array[ctypes.c_ubyte, Literal[1]]
  termination_table: c.Array[ctypes.c_ubyte, Literal[1]]
  table_miss_action: c.Array[ctypes.c_ubyte, Literal[4]]
  level: c.Array[ctypes.c_ubyte, Literal[8]]
  rtc_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[7]]
  log_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  table_miss_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  lag_master_next_table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[96]]
  sws: struct_mlx5_ifc_sw_owner_icm_root_params_bits
  hws: struct_mlx5_ifc_rtc_params_bits
struct_mlx5_ifc_flow_table_context_bits.register_fields([('reformat_en', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('decap_en', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('sw_owner', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('termination_table', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('table_miss_action', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('level', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('rtc_valid', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[7]], 17), ('log_size', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('table_miss_id', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('lag_master_next_table_id', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[96]], 96), ('sws', struct_mlx5_ifc_sw_owner_icm_root_params_bits, 192), ('hws', struct_mlx5_ifc_rtc_params_bits, 192)])
@c.record
class struct_mlx5_ifc_query_flow_table_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[128]]
  flow_table_context: struct_mlx5_ifc_flow_table_context_bits
struct_mlx5_ifc_query_flow_table_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[128]], 64), ('flow_table_context', struct_mlx5_ifc_flow_table_context_bits, 192)])
@c.record
class struct_mlx5_ifc_query_flow_table_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_query_flow_table_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_query_fte_out_bits(c.Struct):
  SIZE = 6656
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[448]]
  flow_context: struct_mlx5_ifc_flow_context_bits
struct_mlx5_ifc_query_fte_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[448]], 64), ('flow_context', struct_mlx5_ifc_flow_context_bits, 512)])
@c.record
class struct_mlx5_ifc_query_fte_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
struct_mlx5_ifc_query_fte_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288)])
@c.record
class struct_mlx5_ifc_match_definer_format_0_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[256]]
  metadata_reg_c_0: c.Array[ctypes.c_ubyte, Literal[32]]
  metadata_reg_c_1: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_ethertype: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[1]]
  sx_sniffer: c.Array[ctypes.c_ubyte, Literal[1]]
  functional_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_frag: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_qp_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_encap_type: c.Array[ctypes.c_ubyte, Literal[2]]
  port_number: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_l3_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_l4_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_first_vlan_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_first_vlan_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  outer_first_vlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_first_vlan_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  outer_l4_type_ext: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_1a4: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_ipsec_layer: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_l2_type: c.Array[ctypes.c_ubyte, Literal[2]]
  force_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l2_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l3_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l4_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_vlan_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_second_vlan_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  outer_second_vlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_second_vlan_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  outer_smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  inner_ipv4_checksum_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_l4_checksum_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ipv4_checksum_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l4_checksum_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_l3_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_l4_ok: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l3_ok_duplicate: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_l4_ok_duplicate: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_cwr: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_ece: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_urg: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_ack: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_psh: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_rst: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_syn: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_tcp_fin: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_match_definer_format_0_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[256]], 0), ('metadata_reg_c_0', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('metadata_reg_c_1', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('outer_dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('outer_dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 352), ('outer_ethertype', c.Array[ctypes.c_ubyte, Literal[16]], 368), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[1]], 384), ('sx_sniffer', c.Array[ctypes.c_ubyte, Literal[1]], 385), ('functional_lb', c.Array[ctypes.c_ubyte, Literal[1]], 386), ('outer_ip_frag', c.Array[ctypes.c_ubyte, Literal[1]], 387), ('outer_qp_type', c.Array[ctypes.c_ubyte, Literal[2]], 388), ('outer_encap_type', c.Array[ctypes.c_ubyte, Literal[2]], 390), ('port_number', c.Array[ctypes.c_ubyte, Literal[2]], 392), ('outer_l3_type', c.Array[ctypes.c_ubyte, Literal[2]], 394), ('outer_l4_type', c.Array[ctypes.c_ubyte, Literal[2]], 396), ('outer_first_vlan_type', c.Array[ctypes.c_ubyte, Literal[2]], 398), ('outer_first_vlan_prio', c.Array[ctypes.c_ubyte, Literal[3]], 400), ('outer_first_vlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 403), ('outer_first_vlan_vid', c.Array[ctypes.c_ubyte, Literal[12]], 404), ('outer_l4_type_ext', c.Array[ctypes.c_ubyte, Literal[4]], 416), ('reserved_at_1a4', c.Array[ctypes.c_ubyte, Literal[2]], 420), ('outer_ipsec_layer', c.Array[ctypes.c_ubyte, Literal[2]], 422), ('outer_l2_type', c.Array[ctypes.c_ubyte, Literal[2]], 424), ('force_lb', c.Array[ctypes.c_ubyte, Literal[1]], 426), ('outer_l2_ok', c.Array[ctypes.c_ubyte, Literal[1]], 427), ('outer_l3_ok', c.Array[ctypes.c_ubyte, Literal[1]], 428), ('outer_l4_ok', c.Array[ctypes.c_ubyte, Literal[1]], 429), ('outer_second_vlan_type', c.Array[ctypes.c_ubyte, Literal[2]], 430), ('outer_second_vlan_prio', c.Array[ctypes.c_ubyte, Literal[3]], 432), ('outer_second_vlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 435), ('outer_second_vlan_vid', c.Array[ctypes.c_ubyte, Literal[12]], 436), ('outer_smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('outer_smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('inner_ipv4_checksum_ok', c.Array[ctypes.c_ubyte, Literal[1]], 496), ('inner_l4_checksum_ok', c.Array[ctypes.c_ubyte, Literal[1]], 497), ('outer_ipv4_checksum_ok', c.Array[ctypes.c_ubyte, Literal[1]], 498), ('outer_l4_checksum_ok', c.Array[ctypes.c_ubyte, Literal[1]], 499), ('inner_l3_ok', c.Array[ctypes.c_ubyte, Literal[1]], 500), ('inner_l4_ok', c.Array[ctypes.c_ubyte, Literal[1]], 501), ('outer_l3_ok_duplicate', c.Array[ctypes.c_ubyte, Literal[1]], 502), ('outer_l4_ok_duplicate', c.Array[ctypes.c_ubyte, Literal[1]], 503), ('outer_tcp_cwr', c.Array[ctypes.c_ubyte, Literal[1]], 504), ('outer_tcp_ece', c.Array[ctypes.c_ubyte, Literal[1]], 505), ('outer_tcp_urg', c.Array[ctypes.c_ubyte, Literal[1]], 506), ('outer_tcp_ack', c.Array[ctypes.c_ubyte, Literal[1]], 507), ('outer_tcp_psh', c.Array[ctypes.c_ubyte, Literal[1]], 508), ('outer_tcp_rst', c.Array[ctypes.c_ubyte, Literal[1]], 509), ('outer_tcp_syn', c.Array[ctypes.c_ubyte, Literal[1]], 510), ('outer_tcp_fin', c.Array[ctypes.c_ubyte, Literal[1]], 511)])
@c.record
class struct_mlx5_ifc_match_definer_format_22_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[256]]
  outer_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_l4_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_l4_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[1]]
  sx_sniffer: c.Array[ctypes.c_ubyte, Literal[1]]
  functional_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_ip_frag: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_qp_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_encap_type: c.Array[ctypes.c_ubyte, Literal[2]]
  port_number: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_l3_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_l4_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_first_vlan_type: c.Array[ctypes.c_ubyte, Literal[2]]
  outer_first_vlan_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  outer_first_vlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  outer_first_vlan_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  metadata_reg_c_0: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_match_definer_format_22_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[256]], 0), ('outer_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('outer_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('outer_l4_sport', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('outer_l4_dport', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[1]], 352), ('sx_sniffer', c.Array[ctypes.c_ubyte, Literal[1]], 353), ('functional_lb', c.Array[ctypes.c_ubyte, Literal[1]], 354), ('outer_ip_frag', c.Array[ctypes.c_ubyte, Literal[1]], 355), ('outer_qp_type', c.Array[ctypes.c_ubyte, Literal[2]], 356), ('outer_encap_type', c.Array[ctypes.c_ubyte, Literal[2]], 358), ('port_number', c.Array[ctypes.c_ubyte, Literal[2]], 360), ('outer_l3_type', c.Array[ctypes.c_ubyte, Literal[2]], 362), ('outer_l4_type', c.Array[ctypes.c_ubyte, Literal[2]], 364), ('outer_first_vlan_type', c.Array[ctypes.c_ubyte, Literal[2]], 366), ('outer_first_vlan_prio', c.Array[ctypes.c_ubyte, Literal[3]], 368), ('outer_first_vlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 371), ('outer_first_vlan_vid', c.Array[ctypes.c_ubyte, Literal[12]], 372), ('metadata_reg_c_0', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('outer_dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('outer_smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('outer_smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('outer_dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
@c.record
class struct_mlx5_ifc_match_definer_format_23_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[256]]
  inner_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_l4_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  inner_l4_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[1]]
  sx_sniffer: c.Array[ctypes.c_ubyte, Literal[1]]
  functional_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_ip_frag: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_qp_type: c.Array[ctypes.c_ubyte, Literal[2]]
  inner_encap_type: c.Array[ctypes.c_ubyte, Literal[2]]
  port_number: c.Array[ctypes.c_ubyte, Literal[2]]
  inner_l3_type: c.Array[ctypes.c_ubyte, Literal[2]]
  inner_l4_type: c.Array[ctypes.c_ubyte, Literal[2]]
  inner_first_vlan_type: c.Array[ctypes.c_ubyte, Literal[2]]
  inner_first_vlan_prio: c.Array[ctypes.c_ubyte, Literal[3]]
  inner_first_vlan_cfi: c.Array[ctypes.c_ubyte, Literal[1]]
  inner_first_vlan_vid: c.Array[ctypes.c_ubyte, Literal[12]]
  tunnel_header_0: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  inner_dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_match_definer_format_23_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[256]], 0), ('inner_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('inner_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('inner_l4_sport', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('inner_l4_dport', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[1]], 352), ('sx_sniffer', c.Array[ctypes.c_ubyte, Literal[1]], 353), ('functional_lb', c.Array[ctypes.c_ubyte, Literal[1]], 354), ('inner_ip_frag', c.Array[ctypes.c_ubyte, Literal[1]], 355), ('inner_qp_type', c.Array[ctypes.c_ubyte, Literal[2]], 356), ('inner_encap_type', c.Array[ctypes.c_ubyte, Literal[2]], 358), ('port_number', c.Array[ctypes.c_ubyte, Literal[2]], 360), ('inner_l3_type', c.Array[ctypes.c_ubyte, Literal[2]], 362), ('inner_l4_type', c.Array[ctypes.c_ubyte, Literal[2]], 364), ('inner_first_vlan_type', c.Array[ctypes.c_ubyte, Literal[2]], 366), ('inner_first_vlan_prio', c.Array[ctypes.c_ubyte, Literal[3]], 368), ('inner_first_vlan_cfi', c.Array[ctypes.c_ubyte, Literal[1]], 371), ('inner_first_vlan_vid', c.Array[ctypes.c_ubyte, Literal[12]], 372), ('tunnel_header_0', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('inner_dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('inner_smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('inner_smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('inner_dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
@c.record
class struct_mlx5_ifc_match_definer_format_29_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[192]]
  outer_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  outer_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  outer_l4_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_l4_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_match_definer_format_29_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[192]], 0), ('outer_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('outer_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[128]], 320), ('outer_l4_sport', c.Array[ctypes.c_ubyte, Literal[16]], 448), ('outer_l4_dport', c.Array[ctypes.c_ubyte, Literal[16]], 464), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
@c.record
class struct_mlx5_ifc_match_definer_format_30_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[160]]
  outer_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  outer_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  outer_dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  outer_smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  outer_dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_match_definer_format_30_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[160]], 0), ('outer_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[128]], 160), ('outer_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[128]], 288), ('outer_dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('outer_smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('outer_smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('outer_dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
@c.record
class struct_mlx5_ifc_match_definer_format_31_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[192]]
  inner_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  inner_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  inner_l4_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  inner_l4_dport: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_match_definer_format_31_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[192]], 0), ('inner_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('inner_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[128]], 320), ('inner_l4_sport', c.Array[ctypes.c_ubyte, Literal[16]], 448), ('inner_l4_dport', c.Array[ctypes.c_ubyte, Literal[16]], 464), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
@c.record
class struct_mlx5_ifc_match_definer_format_32_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[160]]
  inner_ip_dest_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  inner_ip_src_addr: c.Array[ctypes.c_ubyte, Literal[128]]
  inner_dmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_smac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  inner_smac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  inner_dmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_match_definer_format_32_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[160]], 0), ('inner_ip_dest_addr', c.Array[ctypes.c_ubyte, Literal[128]], 160), ('inner_ip_src_addr', c.Array[ctypes.c_ubyte, Literal[128]], 288), ('inner_dmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('inner_smac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('inner_smac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('inner_dmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 496)])
_anonenum95: dict[int, str] = {(MLX5_IFC_DEFINER_FORMAT_ID_SELECT:=61): 'MLX5_IFC_DEFINER_FORMAT_ID_SELECT'}
@c.record
class struct_mlx5_ifc_match_definer_match_mask_bits(c.Struct):
  SIZE = 512
  reserved_at_1c0: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[5]]
  match_dw_8: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_7: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_6: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_5: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_4: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_3: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_2: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_1: c.Array[ctypes.c_ubyte, Literal[32]]
  match_dw_0: c.Array[ctypes.c_ubyte, Literal[32]]
  match_byte_7: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_6: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_5: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_4: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_3: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_2: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_1: c.Array[ctypes.c_ubyte, Literal[8]]
  match_byte_0: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_match_definer_match_mask_bits.register_fields([('reserved_at_1c0', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[5]], 0), ('match_dw_8', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('match_dw_7', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('match_dw_6', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('match_dw_5', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('match_dw_4', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('match_dw_3', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('match_dw_2', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('match_dw_1', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('match_dw_0', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('match_byte_7', c.Array[ctypes.c_ubyte, Literal[8]], 448), ('match_byte_6', c.Array[ctypes.c_ubyte, Literal[8]], 456), ('match_byte_5', c.Array[ctypes.c_ubyte, Literal[8]], 464), ('match_byte_4', c.Array[ctypes.c_ubyte, Literal[8]], 472), ('match_byte_3', c.Array[ctypes.c_ubyte, Literal[8]], 480), ('match_byte_2', c.Array[ctypes.c_ubyte, Literal[8]], 488), ('match_byte_1', c.Array[ctypes.c_ubyte, Literal[8]], 496), ('match_byte_0', c.Array[ctypes.c_ubyte, Literal[8]], 504)])
@c.record
class struct_mlx5_ifc_match_definer_bits(c.Struct):
  SIZE = 1024
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  format_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[96]]
  format_select_dw3: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw2: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw1: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw0: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw7: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw6: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw5: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_dw4: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[24]]
  format_select_dw8: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[32]]
  format_select_byte3: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte2: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte1: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte0: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte7: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte6: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte5: c.Array[ctypes.c_ubyte, Literal[8]]
  format_select_byte4: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[64]]
  match_mask: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[16]]
  match_mask_format: struct_mlx5_ifc_match_definer_match_mask_bits
struct_mlx5_ifc_match_definer_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('format_id', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[96]], 160), ('format_select_dw3', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('format_select_dw2', c.Array[ctypes.c_ubyte, Literal[8]], 264), ('format_select_dw1', c.Array[ctypes.c_ubyte, Literal[8]], 272), ('format_select_dw0', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('format_select_dw7', c.Array[ctypes.c_ubyte, Literal[8]], 288), ('format_select_dw6', c.Array[ctypes.c_ubyte, Literal[8]], 296), ('format_select_dw5', c.Array[ctypes.c_ubyte, Literal[8]], 304), ('format_select_dw4', c.Array[ctypes.c_ubyte, Literal[8]], 312), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[24]], 320), ('format_select_dw8', c.Array[ctypes.c_ubyte, Literal[8]], 344), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('format_select_byte3', c.Array[ctypes.c_ubyte, Literal[8]], 384), ('format_select_byte2', c.Array[ctypes.c_ubyte, Literal[8]], 392), ('format_select_byte1', c.Array[ctypes.c_ubyte, Literal[8]], 400), ('format_select_byte0', c.Array[ctypes.c_ubyte, Literal[8]], 408), ('format_select_byte7', c.Array[ctypes.c_ubyte, Literal[8]], 416), ('format_select_byte6', c.Array[ctypes.c_ubyte, Literal[8]], 424), ('format_select_byte5', c.Array[ctypes.c_ubyte, Literal[8]], 432), ('format_select_byte4', c.Array[ctypes.c_ubyte, Literal[8]], 440), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('match_mask', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[16]], 512), ('match_mask_format', struct_mlx5_ifc_match_definer_match_mask_bits, 512)])
@c.record
class struct_mlx5_ifc_general_obj_create_param_bits(c.Struct):
  SIZE = 32
  alias_object: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[2]]
  log_obj_range: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_general_obj_create_param_bits.register_fields([('alias_object', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[2]], 1), ('log_obj_range', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8)])
@c.record
class struct_mlx5_ifc_general_obj_query_param_bits(c.Struct):
  SIZE = 32
  alias_object: c.Array[ctypes.c_ubyte, Literal[1]]
  obj_offset: c.Array[ctypes.c_ubyte, Literal[31]]
struct_mlx5_ifc_general_obj_query_param_bits.register_fields([('alias_object', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('obj_offset', c.Array[ctypes.c_ubyte, Literal[31]], 1)])
@c.record
class struct_mlx5_ifc_general_obj_in_cmd_hdr_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_tunnel_id: c.Array[ctypes.c_ubyte, Literal[16]]
  obj_type: c.Array[ctypes.c_ubyte, Literal[16]]
  obj_id: c.Array[ctypes.c_ubyte, Literal[32]]
  op_param: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits_op_param
@c.record
class struct_mlx5_ifc_general_obj_in_cmd_hdr_bits_op_param(c.Struct):
  SIZE = 32
  create: struct_mlx5_ifc_general_obj_create_param_bits
  query: struct_mlx5_ifc_general_obj_query_param_bits
struct_mlx5_ifc_general_obj_in_cmd_hdr_bits_op_param.register_fields([('create', struct_mlx5_ifc_general_obj_create_param_bits, 0), ('query', struct_mlx5_ifc_general_obj_query_param_bits, 0)])
struct_mlx5_ifc_general_obj_in_cmd_hdr_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('vhca_tunnel_id', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('obj_type', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('obj_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('op_param', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits_op_param, 96)])
@c.record
class struct_mlx5_ifc_general_obj_out_cmd_hdr_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  obj_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_general_obj_out_cmd_hdr_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('obj_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_allow_other_vhca_access_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[80]]
  object_type_to_be_accessed: c.Array[ctypes.c_ubyte, Literal[16]]
  object_id_to_be_accessed: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  access_key_raw: c.Array[ctypes.c_ubyte, Literal[256]]
  access_key: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
struct_mlx5_ifc_allow_other_vhca_access_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[80]], 64), ('object_type_to_be_accessed', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('object_id_to_be_accessed', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('access_key_raw', c.Array[ctypes.c_ubyte, Literal[256]], 256), ('access_key', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 256)])
@c.record
class struct_mlx5_ifc_allow_other_vhca_access_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_allow_other_vhca_access_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_header_arg_bits(c.Struct):
  SIZE = 160
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  access_pd: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_modify_header_arg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('access_pd', c.Array[ctypes.c_ubyte, Literal[24]], 136)])
@c.record
class struct_mlx5_ifc_create_modify_header_arg_in_bits(c.Struct):
  SIZE = 288
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  arg: struct_mlx5_ifc_modify_header_arg_bits
struct_mlx5_ifc_create_modify_header_arg_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('arg', struct_mlx5_ifc_modify_header_arg_bits, 128)])
@c.record
class struct_mlx5_ifc_create_match_definer_in_bits(c.Struct):
  SIZE = 1152
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  obj_context: struct_mlx5_ifc_match_definer_bits
struct_mlx5_ifc_create_match_definer_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('obj_context', struct_mlx5_ifc_match_definer_bits, 128)])
@c.record
class struct_mlx5_ifc_create_match_definer_out_bits(c.Struct):
  SIZE = 128
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
struct_mlx5_ifc_create_match_definer_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0)])
@c.record
class struct_mlx5_ifc_alias_context_bits(c.Struct):
  SIZE = 512
  vhca_id_to_be_accessed: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[13]]
  status: c.Array[ctypes.c_ubyte, Literal[3]]
  object_id_to_be_accessed: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  access_key_raw: c.Array[ctypes.c_ubyte, Literal[256]]
  access_key: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
  metadata: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_alias_context_bits.register_fields([('vhca_id_to_be_accessed', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[13]], 16), ('status', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('object_id_to_be_accessed', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('access_key_raw', c.Array[ctypes.c_ubyte, Literal[256]], 128), ('access_key', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 128), ('metadata', c.Array[ctypes.c_ubyte, Literal[128]], 384)])
@c.record
class struct_mlx5_ifc_create_alias_obj_in_bits(c.Struct):
  SIZE = 640
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  alias_ctx: struct_mlx5_ifc_alias_context_bits
struct_mlx5_ifc_create_alias_obj_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('alias_ctx', struct_mlx5_ifc_alias_context_bits, 128)])
_anonenum96: dict[int, str] = {(MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_OUTER_HEADERS:=0): 'MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_OUTER_HEADERS', (MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS:=1): 'MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS', (MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_INNER_HEADERS:=2): 'MLX5_QUERY_FLOW_GROUP_OUT_MATCH_CRITERIA_ENABLE_INNER_HEADERS', (MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2:=3): 'MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2', (MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_3:=4): 'MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_3', (MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_4:=5): 'MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_4', (MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_5:=6): 'MLX5_QUERY_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_5'}
@c.record
class struct_mlx5_ifc_query_flow_group_out_bits(c.Struct):
  SIZE = 8192
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[160]]
  start_flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[32]]
  end_flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[160]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[24]]
  match_criteria_enable: c.Array[ctypes.c_ubyte, Literal[8]]
  match_criteria: struct_mlx5_ifc_fte_match_param_bits
  reserved_at_1200: c.Array[ctypes.c_ubyte, Literal[3584]]
struct_mlx5_ifc_query_flow_group_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[160]], 64), ('start_flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('end_flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[160]], 320), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[24]], 480), ('match_criteria_enable', c.Array[ctypes.c_ubyte, Literal[8]], 504), ('match_criteria', struct_mlx5_ifc_fte_match_param_bits, 512), ('reserved_at_1200', c.Array[ctypes.c_ubyte, Literal[3584]], 4608)])
@c.record
class struct_mlx5_ifc_query_flow_group_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  group_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[288]]
struct_mlx5_ifc_query_flow_group_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('group_id', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[288]], 224)])
@c.record
class struct_mlx5_ifc_query_flow_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  flow_statistics: c.Array[struct_mlx5_ifc_traffic_counter_bits, Literal[0]]
struct_mlx5_ifc_query_flow_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('flow_statistics', c.Array[struct_mlx5_ifc_traffic_counter_bits, Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_query_flow_counter_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[128]]
  clear: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c1: c.Array[ctypes.c_ubyte, Literal[15]]
  num_of_counters: c.Array[ctypes.c_ubyte, Literal[16]]
  flow_counter_id: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_flow_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[128]], 64), ('clear', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('reserved_at_c1', c.Array[ctypes.c_ubyte, Literal[15]], 193), ('num_of_counters', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('flow_counter_id', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_query_esw_vport_context_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  esw_vport_context: struct_mlx5_ifc_esw_vport_context_bits
struct_mlx5_ifc_query_esw_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('esw_vport_context', struct_mlx5_ifc_esw_vport_context_bits, 128)])
@c.record
class struct_mlx5_ifc_query_esw_vport_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_esw_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_esw_vport_out_bits(c.Struct):
  SIZE = 96
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_esw_vport_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64)])
@c.record
class struct_mlx5_ifc_destroy_esw_vport_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  vport_num: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_esw_vport_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('vport_num', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_modify_esw_vport_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_esw_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_esw_vport_context_fields_select_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[27]]
  fdb_to_vport_reg_c_id: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_svlan_insert: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_cvlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
  vport_svlan_strip: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_esw_vport_context_fields_select_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[27]], 0), ('fdb_to_vport_reg_c_id', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('vport_cvlan_insert', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('vport_svlan_insert', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('vport_cvlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('vport_svlan_strip', c.Array[ctypes.c_ubyte, Literal[1]], 31)])
@c.record
class struct_mlx5_ifc_modify_esw_vport_context_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  field_select: struct_mlx5_ifc_esw_vport_context_fields_select_bits
  esw_vport_context: struct_mlx5_ifc_esw_vport_context_bits
struct_mlx5_ifc_modify_esw_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('field_select', struct_mlx5_ifc_esw_vport_context_fields_select_bits, 96), ('esw_vport_context', struct_mlx5_ifc_esw_vport_context_bits, 128)])
@c.record
class struct_mlx5_ifc_query_eq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  eq_context_entry: struct_mlx5_ifc_eqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[64]]
  event_bitmask: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[1408]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_query_eq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('eq_context_entry', struct_mlx5_ifc_eqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[64]], 640), ('event_bitmask', c.Array[ctypes.c_ubyte, Literal[64]], 704), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[1408]], 768), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_query_eq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  eq_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_eq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('eq_number', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_packet_reformat_context_in_bits(c.Struct):
  SIZE = 64
  reformat_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[4]]
  reformat_param_0: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[6]]
  reformat_data_size: c.Array[ctypes.c_ubyte, Literal[10]]
  reformat_param_1: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[8]]
  reformat_data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[2]]
  more_reformat_data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[0]]
struct_mlx5_ifc_packet_reformat_context_in_bits.register_fields([('reformat_type', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('reformat_param_0', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[6]], 16), ('reformat_data_size', c.Array[ctypes.c_ubyte, Literal[10]], 22), ('reformat_param_1', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reformat_data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[2]], 48), ('more_reformat_data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[0]], 64)])
@c.record
class struct_mlx5_ifc_query_packet_reformat_context_out_bits(c.Struct):
  SIZE = 224
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[160]]
  packet_reformat_context: c.Array[struct_mlx5_ifc_packet_reformat_context_in_bits, Literal[0]]
struct_mlx5_ifc_query_packet_reformat_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[160]], 64), ('packet_reformat_context', c.Array[struct_mlx5_ifc_packet_reformat_context_in_bits, Literal[0]], 224)])
@c.record
class struct_mlx5_ifc_query_packet_reformat_context_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_reformat_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_query_packet_reformat_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('packet_reformat_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96)])
@c.record
class struct_mlx5_ifc_alloc_packet_reformat_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  packet_reformat_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_packet_reformat_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('packet_reformat_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum97: dict[int, str] = {(MLX5_REFORMAT_CONTEXT_ANCHOR_MAC_START:=1): 'MLX5_REFORMAT_CONTEXT_ANCHOR_MAC_START', (MLX5_REFORMAT_CONTEXT_ANCHOR_VLAN_START:=2): 'MLX5_REFORMAT_CONTEXT_ANCHOR_VLAN_START', (MLX5_REFORMAT_CONTEXT_ANCHOR_IP_START:=7): 'MLX5_REFORMAT_CONTEXT_ANCHOR_IP_START', (MLX5_REFORMAT_CONTEXT_ANCHOR_TCP_UDP_START:=9): 'MLX5_REFORMAT_CONTEXT_ANCHOR_TCP_UDP_START'}
enum_mlx5_reformat_ctx_type: dict[int, str] = {(MLX5_REFORMAT_TYPE_L2_TO_VXLAN:=0): 'MLX5_REFORMAT_TYPE_L2_TO_VXLAN', (MLX5_REFORMAT_TYPE_L2_TO_NVGRE:=1): 'MLX5_REFORMAT_TYPE_L2_TO_NVGRE', (MLX5_REFORMAT_TYPE_L2_TO_L2_TUNNEL:=2): 'MLX5_REFORMAT_TYPE_L2_TO_L2_TUNNEL', (MLX5_REFORMAT_TYPE_L3_TUNNEL_TO_L2:=3): 'MLX5_REFORMAT_TYPE_L3_TUNNEL_TO_L2', (MLX5_REFORMAT_TYPE_L2_TO_L3_TUNNEL:=4): 'MLX5_REFORMAT_TYPE_L2_TO_L3_TUNNEL', (MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_IPV4:=5): 'MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_IPV4', (MLX5_REFORMAT_TYPE_L2_TO_L3_ESP_TUNNEL:=6): 'MLX5_REFORMAT_TYPE_L2_TO_L3_ESP_TUNNEL', (MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_UDPV4:=7): 'MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_UDPV4', (MLX5_REFORMAT_TYPE_DEL_ESP_TRANSPORT:=8): 'MLX5_REFORMAT_TYPE_DEL_ESP_TRANSPORT', (MLX5_REFORMAT_TYPE_L3_ESP_TUNNEL_TO_L2:=9): 'MLX5_REFORMAT_TYPE_L3_ESP_TUNNEL_TO_L2', (MLX5_REFORMAT_TYPE_DEL_ESP_TRANSPORT_OVER_UDP:=10): 'MLX5_REFORMAT_TYPE_DEL_ESP_TRANSPORT_OVER_UDP', (MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_IPV6:=11): 'MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_IPV6', (MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_UDPV6:=12): 'MLX5_REFORMAT_TYPE_ADD_ESP_TRANSPORT_OVER_UDPV6', (MLX5_REFORMAT_TYPE_ADD_PSP_TUNNEL:=13): 'MLX5_REFORMAT_TYPE_ADD_PSP_TUNNEL', (MLX5_REFORMAT_TYPE_DEL_PSP_TUNNEL:=14): 'MLX5_REFORMAT_TYPE_DEL_PSP_TUNNEL', (MLX5_REFORMAT_TYPE_INSERT_HDR:=15): 'MLX5_REFORMAT_TYPE_INSERT_HDR', (MLX5_REFORMAT_TYPE_REMOVE_HDR:=16): 'MLX5_REFORMAT_TYPE_REMOVE_HDR', (MLX5_REFORMAT_TYPE_ADD_MACSEC:=17): 'MLX5_REFORMAT_TYPE_ADD_MACSEC', (MLX5_REFORMAT_TYPE_DEL_MACSEC:=18): 'MLX5_REFORMAT_TYPE_DEL_MACSEC'}
@c.record
class struct_mlx5_ifc_alloc_packet_reformat_context_in_bits(c.Struct):
  SIZE = 288
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[160]]
  packet_reformat_context: struct_mlx5_ifc_packet_reformat_context_in_bits
struct_mlx5_ifc_alloc_packet_reformat_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[160]], 64), ('packet_reformat_context', struct_mlx5_ifc_packet_reformat_context_in_bits, 224)])
@c.record
class struct_mlx5_ifc_dealloc_packet_reformat_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_packet_reformat_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_packet_reformat_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  packet_reformat_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_packet_reformat_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('packet_reformat_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_set_action_in_bits(c.Struct):
  SIZE = 64
  action_type: c.Array[ctypes.c_ubyte, Literal[4]]
  field: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[3]]
  offset: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[3]]
  length: c.Array[ctypes.c_ubyte, Literal[5]]
  data: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_set_action_in_bits.register_fields([('action_type', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('field', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[3]], 16), ('offset', c.Array[ctypes.c_ubyte, Literal[5]], 19), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[3]], 24), ('length', c.Array[ctypes.c_ubyte, Literal[5]], 27), ('data', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_add_action_in_bits(c.Struct):
  SIZE = 64
  action_type: c.Array[ctypes.c_ubyte, Literal[4]]
  field: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  data: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_add_action_in_bits.register_fields([('action_type', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('field', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('data', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_copy_action_in_bits(c.Struct):
  SIZE = 64
  action_type: c.Array[ctypes.c_ubyte, Literal[4]]
  src_field: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[3]]
  src_offset: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[3]]
  length: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[4]]
  dst_field: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[3]]
  dst_offset: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_copy_action_in_bits.register_fields([('action_type', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('src_field', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[3]], 16), ('src_offset', c.Array[ctypes.c_ubyte, Literal[5]], 19), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[3]], 24), ('length', c.Array[ctypes.c_ubyte, Literal[5]], 27), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[4]], 32), ('dst_field', c.Array[ctypes.c_ubyte, Literal[12]], 36), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[3]], 48), ('dst_offset', c.Array[ctypes.c_ubyte, Literal[5]], 51), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[8]], 56)])
@c.record
class union_mlx5_ifc_set_add_copy_action_in_auto_bits(c.Struct):
  SIZE = 64
  set_action_in: struct_mlx5_ifc_set_action_in_bits
  add_action_in: struct_mlx5_ifc_add_action_in_bits
  copy_action_in: struct_mlx5_ifc_copy_action_in_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
union_mlx5_ifc_set_add_copy_action_in_auto_bits.register_fields([('set_action_in', struct_mlx5_ifc_set_action_in_bits, 0), ('add_action_in', struct_mlx5_ifc_add_action_in_bits, 0), ('copy_action_in', struct_mlx5_ifc_copy_action_in_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0)])
_anonenum98: dict[int, str] = {(MLX5_ACTION_TYPE_SET:=1): 'MLX5_ACTION_TYPE_SET', (MLX5_ACTION_TYPE_ADD:=2): 'MLX5_ACTION_TYPE_ADD', (MLX5_ACTION_TYPE_COPY:=3): 'MLX5_ACTION_TYPE_COPY'}
_anonenum99: dict[int, str] = {(MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16:=1): 'MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16', (MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0:=2): 'MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0', (MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE:=3): 'MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE', (MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16:=4): 'MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16', (MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0:=5): 'MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0', (MLX5_ACTION_IN_FIELD_OUT_IP_DSCP:=6): 'MLX5_ACTION_IN_FIELD_OUT_IP_DSCP', (MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS:=7): 'MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS', (MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT:=8): 'MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT', (MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT:=9): 'MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT', (MLX5_ACTION_IN_FIELD_OUT_IP_TTL:=10): 'MLX5_ACTION_IN_FIELD_OUT_IP_TTL', (MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT:=11): 'MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT', (MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT:=12): 'MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT', (MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96:=13): 'MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96', (MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64:=14): 'MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64', (MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32:=15): 'MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32', (MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0:=16): 'MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0', (MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96:=17): 'MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96', (MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64:=18): 'MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64', (MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32:=19): 'MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32', (MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0:=20): 'MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0', (MLX5_ACTION_IN_FIELD_OUT_SIPV4:=21): 'MLX5_ACTION_IN_FIELD_OUT_SIPV4', (MLX5_ACTION_IN_FIELD_OUT_DIPV4:=22): 'MLX5_ACTION_IN_FIELD_OUT_DIPV4', (MLX5_ACTION_IN_FIELD_OUT_FIRST_VID:=23): 'MLX5_ACTION_IN_FIELD_OUT_FIRST_VID', (MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT:=71): 'MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT', (MLX5_ACTION_IN_FIELD_METADATA_REG_A:=73): 'MLX5_ACTION_IN_FIELD_METADATA_REG_A', (MLX5_ACTION_IN_FIELD_METADATA_REG_B:=80): 'MLX5_ACTION_IN_FIELD_METADATA_REG_B', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_0:=81): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_0', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_1:=82): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_1', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_2:=83): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_2', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_3:=84): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_3', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_4:=85): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_4', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_5:=86): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_5', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_6:=87): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_6', (MLX5_ACTION_IN_FIELD_METADATA_REG_C_7:=88): 'MLX5_ACTION_IN_FIELD_METADATA_REG_C_7', (MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM:=89): 'MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM', (MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM:=91): 'MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM', (MLX5_ACTION_IN_FIELD_IPSEC_SYNDROME:=93): 'MLX5_ACTION_IN_FIELD_IPSEC_SYNDROME', (MLX5_ACTION_IN_FIELD_OUT_EMD_47_32:=111): 'MLX5_ACTION_IN_FIELD_OUT_EMD_47_32', (MLX5_ACTION_IN_FIELD_OUT_EMD_31_0:=112): 'MLX5_ACTION_IN_FIELD_OUT_EMD_31_0', (MLX5_ACTION_IN_FIELD_PSP_SYNDROME:=113): 'MLX5_ACTION_IN_FIELD_PSP_SYNDROME'}
@c.record
class struct_mlx5_ifc_alloc_modify_header_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  modify_header_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_modify_header_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('modify_header_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_modify_header_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_actions: c.Array[ctypes.c_ubyte, Literal[8]]
  actions: c.Array[union_mlx5_ifc_set_add_copy_action_in_auto_bits, Literal[0]]
struct_mlx5_ifc_alloc_modify_header_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[16]], 104), ('num_of_actions', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('actions', c.Array[union_mlx5_ifc_set_add_copy_action_in_auto_bits, Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_dealloc_modify_header_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_modify_header_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_modify_header_context_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  modify_header_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_modify_header_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('modify_header_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_modify_header_context_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  modify_header_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_query_modify_header_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('modify_header_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96)])
@c.record
class struct_mlx5_ifc_query_dct_out_bits(c.Struct):
  SIZE = 1024
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  dct_context_entry: struct_mlx5_ifc_dctc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_query_dct_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('dct_context_entry', struct_mlx5_ifc_dctc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[384]], 640)])
@c.record
class struct_mlx5_ifc_query_dct_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  dctn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_dct_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('dctn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_cq_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  cq_context: struct_mlx5_ifc_cqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1536]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_query_cq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('cq_context', struct_mlx5_ifc_cqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1536]], 640), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_query_cq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_cq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_cong_status_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  enable: c.Array[ctypes.c_ubyte, Literal[1]]
  tag_enable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_62: c.Array[ctypes.c_ubyte, Literal[30]]
struct_mlx5_ifc_query_cong_status_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('enable', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('tag_enable', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('reserved_at_62', c.Array[ctypes.c_ubyte, Literal[30]], 98)])
@c.record
class struct_mlx5_ifc_query_cong_status_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  priority: c.Array[ctypes.c_ubyte, Literal[4]]
  cong_protocol: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_cong_status_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('priority', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('cong_protocol', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_cong_statistics_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  rp_cur_flows: c.Array[ctypes.c_ubyte, Literal[32]]
  sum_flows: c.Array[ctypes.c_ubyte, Literal[32]]
  rp_cnp_ignored_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rp_cnp_ignored_low: c.Array[ctypes.c_ubyte, Literal[32]]
  rp_cnp_handled_high: c.Array[ctypes.c_ubyte, Literal[32]]
  rp_cnp_handled_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[256]]
  time_stamp_high: c.Array[ctypes.c_ubyte, Literal[32]]
  time_stamp_low: c.Array[ctypes.c_ubyte, Literal[32]]
  accumulators_period: c.Array[ctypes.c_ubyte, Literal[32]]
  np_ecn_marked_roce_packets_high: c.Array[ctypes.c_ubyte, Literal[32]]
  np_ecn_marked_roce_packets_low: c.Array[ctypes.c_ubyte, Literal[32]]
  np_cnp_sent_high: c.Array[ctypes.c_ubyte, Literal[32]]
  np_cnp_sent_low: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_320: c.Array[ctypes.c_ubyte, Literal[1376]]
struct_mlx5_ifc_query_cong_statistics_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('rp_cur_flows', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('sum_flows', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('rp_cnp_ignored_high', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('rp_cnp_ignored_low', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('rp_cnp_handled_high', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('rp_cnp_handled_low', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[256]], 320), ('time_stamp_high', c.Array[ctypes.c_ubyte, Literal[32]], 576), ('time_stamp_low', c.Array[ctypes.c_ubyte, Literal[32]], 608), ('accumulators_period', c.Array[ctypes.c_ubyte, Literal[32]], 640), ('np_ecn_marked_roce_packets_high', c.Array[ctypes.c_ubyte, Literal[32]], 672), ('np_ecn_marked_roce_packets_low', c.Array[ctypes.c_ubyte, Literal[32]], 704), ('np_cnp_sent_high', c.Array[ctypes.c_ubyte, Literal[32]], 736), ('np_cnp_sent_low', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('reserved_at_320', c.Array[ctypes.c_ubyte, Literal[1376]], 800)])
@c.record
class struct_mlx5_ifc_query_cong_statistics_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  clear: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_cong_statistics_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('clear', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[31]], 65), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_cong_params_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  congestion_parameters: union_mlx5_ifc_cong_control_roce_ecn_auto_bits
struct_mlx5_ifc_query_cong_params_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('congestion_parameters', union_mlx5_ifc_cong_control_roce_ecn_auto_bits, 128)])
@c.record
class struct_mlx5_ifc_query_cong_params_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[28]]
  cong_protocol: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_cong_params_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[28]], 64), ('cong_protocol', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_adapter_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  query_adapter_struct: struct_mlx5_ifc_query_adapter_param_block_bits
struct_mlx5_ifc_query_adapter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('query_adapter_struct', struct_mlx5_ifc_query_adapter_param_block_bits, 128)])
@c.record
class struct_mlx5_ifc_query_adapter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_adapter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_function_vhca_rid_info_reg_bits(c.Struct):
  SIZE = 128
  host_number: c.Array[ctypes.c_ubyte, Literal[8]]
  host_pci_device_function: c.Array[ctypes.c_ubyte, Literal[8]]
  host_pci_bus: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[3]]
  pci_bus_assigned: c.Array[ctypes.c_ubyte, Literal[1]]
  function_type: c.Array[ctypes.c_ubyte, Literal[4]]
  parent_pci_device_function: c.Array[ctypes.c_ubyte, Literal[8]]
  parent_pci_bus: c.Array[ctypes.c_ubyte, Literal[8]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_function_vhca_rid_info_reg_bits.register_fields([('host_number', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('host_pci_device_function', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('host_pci_bus', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[3]], 24), ('pci_bus_assigned', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('function_type', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('parent_pci_device_function', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('parent_pci_bus', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_delegated_function_vhca_rid_info_bits(c.Struct):
  SIZE = 256
  function_vhca_rid_info: struct_mlx5_ifc_function_vhca_rid_info_reg_bits
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[24]]
  manage_profile: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_delegated_function_vhca_rid_info_bits.register_fields([('function_vhca_rid_info', struct_mlx5_ifc_function_vhca_rid_info_reg_bits, 0), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[24]], 128), ('manage_profile', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[96]], 160)])
@c.record
class struct_mlx5_ifc_query_delegated_vhca_out_bits(c.Struct):
  SIZE = 256
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  functions_count: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[128]]
  delegated_function_vhca_rid_info: c.Array[struct_mlx5_ifc_delegated_function_vhca_rid_info_bits, Literal[0]]
struct_mlx5_ifc_query_delegated_vhca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('functions_count', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[128]], 128), ('delegated_function_vhca_rid_info', c.Array[struct_mlx5_ifc_delegated_function_vhca_rid_info_bits, Literal[0]], 256)])
@c.record
class struct_mlx5_ifc_query_delegated_vhca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_delegated_vhca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_esw_vport_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  vport_num: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_create_esw_vport_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('vport_num', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_create_esw_vport_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  managed_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_esw_vport_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('managed_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_qp_2rst_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_qp_2rst_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_qp_2rst_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_qp_2rst_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_qp_2err_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_qp_2err_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_qp_2err_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_qp_2err_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_trans_page_fault_info_bits(c.Struct):
  SIZE = 64
  error: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[4]]
  page_fault_type: c.Array[ctypes.c_ubyte, Literal[3]]
  wq_number: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  fault_token: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_trans_page_fault_info_bits.register_fields([('error', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[4]], 1), ('page_fault_type', c.Array[ctypes.c_ubyte, Literal[3]], 5), ('wq_number', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('fault_token', c.Array[ctypes.c_ubyte, Literal[24]], 40)])
@c.record
class struct_mlx5_ifc_mem_page_fault_info_bits(c.Struct):
  SIZE = 64
  error: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[15]]
  fault_token_47_32: c.Array[ctypes.c_ubyte, Literal[16]]
  fault_token_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mem_page_fault_info_bits.register_fields([('error', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[15]], 1), ('fault_token_47_32', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('fault_token_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class union_mlx5_ifc_page_fault_resume_in_page_fault_info_auto_bits(c.Struct):
  SIZE = 64
  trans_page_fault_info: struct_mlx5_ifc_trans_page_fault_info_bits
  mem_page_fault_info: struct_mlx5_ifc_mem_page_fault_info_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
union_mlx5_ifc_page_fault_resume_in_page_fault_info_auto_bits.register_fields([('trans_page_fault_info', struct_mlx5_ifc_trans_page_fault_info_bits, 0), ('mem_page_fault_info', struct_mlx5_ifc_mem_page_fault_info_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0)])
@c.record
class struct_mlx5_ifc_page_fault_resume_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_page_fault_resume_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_page_fault_resume_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  page_fault_info: union_mlx5_ifc_page_fault_resume_in_page_fault_info_auto_bits
struct_mlx5_ifc_page_fault_resume_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('page_fault_info', union_mlx5_ifc_page_fault_resume_in_page_fault_info_auto_bits, 64)])
@c.record
class struct_mlx5_ifc_nop_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_nop_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_nop_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_nop_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_vport_state_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_vport_state_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_vport_state_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  ingress_connect: c.Array[ctypes.c_ubyte, Literal[1]]
  egress_connect: c.Array[ctypes.c_ubyte, Literal[1]]
  ingress_connect_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  egress_connect_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_74: c.Array[ctypes.c_ubyte, Literal[4]]
  admin_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_7c: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_modify_vport_state_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('ingress_connect', c.Array[ctypes.c_ubyte, Literal[1]], 112), ('egress_connect', c.Array[ctypes.c_ubyte, Literal[1]], 113), ('ingress_connect_valid', c.Array[ctypes.c_ubyte, Literal[1]], 114), ('egress_connect_valid', c.Array[ctypes.c_ubyte, Literal[1]], 115), ('reserved_at_74', c.Array[ctypes.c_ubyte, Literal[4]], 116), ('admin_state', c.Array[ctypes.c_ubyte, Literal[4]], 120), ('reserved_at_7c', c.Array[ctypes.c_ubyte, Literal[4]], 124)])
@c.record
class struct_mlx5_ifc_modify_tis_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_tis_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_tis_bitmask_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[29]]
  lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  strict_lag_tx_port_affinity: c.Array[ctypes.c_ubyte, Literal[1]]
  prio: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_modify_tis_bitmask_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[29]], 32), ('lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 61), ('strict_lag_tx_port_affinity', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('prio', c.Array[ctypes.c_ubyte, Literal[1]], 63)])
@c.record
class struct_mlx5_ifc_modify_tis_in_bits(c.Struct):
  SIZE = 1536
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tisn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  bitmask: struct_mlx5_ifc_modify_tis_bitmask_bits
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_tisc_bits
struct_mlx5_ifc_modify_tis_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tisn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('bitmask', struct_mlx5_ifc_modify_tis_bitmask_bits, 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_tisc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_tir_bitmask_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[27]]
  self_lb_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3c: c.Array[ctypes.c_ubyte, Literal[1]]
  hash: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3e: c.Array[ctypes.c_ubyte, Literal[1]]
  packet_merge: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_modify_tir_bitmask_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[27]], 32), ('self_lb_en', c.Array[ctypes.c_ubyte, Literal[1]], 59), ('reserved_at_3c', c.Array[ctypes.c_ubyte, Literal[1]], 60), ('hash', c.Array[ctypes.c_ubyte, Literal[1]], 61), ('reserved_at_3e', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('packet_merge', c.Array[ctypes.c_ubyte, Literal[1]], 63)])
@c.record
class struct_mlx5_ifc_modify_tir_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_tir_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_tir_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tirn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  bitmask: struct_mlx5_ifc_modify_tir_bitmask_bits
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_tirc_bits
struct_mlx5_ifc_modify_tir_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tirn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('bitmask', struct_mlx5_ifc_modify_tir_bitmask_bits, 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_tirc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_sq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_sq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_sq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  sq_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[4]]
  sqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  modify_bitmask: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_sqc_bits
struct_mlx5_ifc_modify_sq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('sq_state', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('sqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('modify_bitmask', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_sqc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_scheduling_element_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[448]]
struct_mlx5_ifc_modify_scheduling_element_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[448]], 64)])
_anonenum100: dict[int, str] = {(MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_BW_SHARE:=1): 'MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_BW_SHARE', (MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_MAX_AVERAGE_BW:=2): 'MODIFY_SCHEDULING_ELEMENT_IN_MODIFY_BITMASK_MAX_AVERAGE_BW'}
@c.record
class struct_mlx5_ifc_modify_scheduling_element_in_bits(c.Struct):
  SIZE = 1024
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  scheduling_hierarchy: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[24]]
  scheduling_element_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[32]]
  modify_bitmask: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  scheduling_context: struct_mlx5_ifc_scheduling_context_bits
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_modify_scheduling_element_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('scheduling_hierarchy', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('scheduling_element_id', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('modify_bitmask', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('scheduling_context', struct_mlx5_ifc_scheduling_context_bits, 256), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[256]], 768)])
@c.record
class struct_mlx5_ifc_modify_rqt_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_rqt_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_rqt_bitmask_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[31]]
  rqn_list: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_rqt_bitmask_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[31]], 32), ('rqn_list', c.Array[ctypes.c_ubyte, Literal[1]], 63)])
@c.record
class struct_mlx5_ifc_modify_rqt_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqtn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  bitmask: struct_mlx5_ifc_rqt_bitmask_bits
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_rqtc_bits
struct_mlx5_ifc_modify_rqt_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqtn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('bitmask', struct_mlx5_ifc_rqt_bitmask_bits, 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_rqtc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_rq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_rq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum101: dict[int, str] = {(MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_VSD:=2): 'MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_VSD', (MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_SCATTER_FCS:=4): 'MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_SCATTER_FCS', (MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_RQ_COUNTER_SET_ID:=8): 'MLX5_MODIFY_RQ_IN_MODIFY_BITMASK_RQ_COUNTER_SET_ID'}
@c.record
class struct_mlx5_ifc_modify_rq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  rq_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[4]]
  rqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  modify_bitmask: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_rqc_bits
struct_mlx5_ifc_modify_rq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('rq_state', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('rqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('modify_bitmask', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_rqc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_rmp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_rmp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_rmp_bitmask_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[31]]
  lwm: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_rmp_bitmask_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[31]], 32), ('lwm', c.Array[ctypes.c_ubyte, Literal[1]], 63)])
@c.record
class struct_mlx5_ifc_modify_rmp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  rmp_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[4]]
  rmpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  bitmask: struct_mlx5_ifc_rmp_bitmask_bits
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  ctx: struct_mlx5_ifc_rmpc_bits
struct_mlx5_ifc_modify_rmp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('rmp_state', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('rmpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('bitmask', struct_mlx5_ifc_rmp_bitmask_bits, 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('ctx', struct_mlx5_ifc_rmpc_bits, 256)])
@c.record
class struct_mlx5_ifc_modify_nic_vport_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_nic_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_nic_vport_field_select_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[18]]
  affiliation: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_13: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_uc_local_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  disable_mc_local_lb: c.Array[ctypes.c_ubyte, Literal[1]]
  node_guid: c.Array[ctypes.c_ubyte, Literal[1]]
  port_guid: c.Array[ctypes.c_ubyte, Literal[1]]
  min_inline: c.Array[ctypes.c_ubyte, Literal[1]]
  mtu: c.Array[ctypes.c_ubyte, Literal[1]]
  change_event: c.Array[ctypes.c_ubyte, Literal[1]]
  promisc: c.Array[ctypes.c_ubyte, Literal[1]]
  permanent_address: c.Array[ctypes.c_ubyte, Literal[1]]
  addresses_list: c.Array[ctypes.c_ubyte, Literal[1]]
  roce_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1f: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_modify_nic_vport_field_select_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[18]], 0), ('affiliation', c.Array[ctypes.c_ubyte, Literal[1]], 18), ('reserved_at_13', c.Array[ctypes.c_ubyte, Literal[1]], 19), ('disable_uc_local_lb', c.Array[ctypes.c_ubyte, Literal[1]], 20), ('disable_mc_local_lb', c.Array[ctypes.c_ubyte, Literal[1]], 21), ('node_guid', c.Array[ctypes.c_ubyte, Literal[1]], 22), ('port_guid', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('min_inline', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('mtu', c.Array[ctypes.c_ubyte, Literal[1]], 25), ('change_event', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('promisc', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('permanent_address', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('addresses_list', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('roce_en', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('reserved_at_1f', c.Array[ctypes.c_ubyte, Literal[1]], 31)])
@c.record
class struct_mlx5_ifc_modify_nic_vport_context_in_bits(c.Struct):
  SIZE = 4096
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  field_select: struct_mlx5_ifc_modify_nic_vport_field_select_bits
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[1920]]
  nic_vport_context: struct_mlx5_ifc_nic_vport_context_bits
struct_mlx5_ifc_modify_nic_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('field_select', struct_mlx5_ifc_modify_nic_vport_field_select_bits, 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[1920]], 128), ('nic_vport_context', struct_mlx5_ifc_nic_vport_context_bits, 2048)])
@c.record
class struct_mlx5_ifc_modify_hca_vport_context_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_hca_vport_context_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_hca_vport_context_in_bits(c.Struct):
  SIZE = 4224
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[11]]
  port_num: c.Array[ctypes.c_ubyte, Literal[4]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  hca_vport_context: struct_mlx5_ifc_hca_vport_context_bits
struct_mlx5_ifc_modify_hca_vport_context_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[11]], 65), ('port_num', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('hca_vport_context', struct_mlx5_ifc_hca_vport_context_bits, 128)])
@c.record
class struct_mlx5_ifc_modify_cq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_cq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum102: dict[int, str] = {(MLX5_MODIFY_CQ_IN_OP_MOD_MODIFY_CQ:=0): 'MLX5_MODIFY_CQ_IN_OP_MOD_MODIFY_CQ', (MLX5_MODIFY_CQ_IN_OP_MOD_RESIZE_CQ:=1): 'MLX5_MODIFY_CQ_IN_OP_MOD_RESIZE_CQ'}
@c.record
class struct_mlx5_ifc_modify_cq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  modify_field_select_resize_field_select: union_mlx5_ifc_modify_field_select_resize_field_select_auto_bits
  cq_context: struct_mlx5_ifc_cqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[96]]
  cq_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2e1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[1408]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_modify_cq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('modify_field_select_resize_field_select', union_mlx5_ifc_modify_field_select_resize_field_select_auto_bits, 96), ('cq_context', struct_mlx5_ifc_cqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[96]], 640), ('cq_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 736), ('reserved_at_2e1', c.Array[ctypes.c_ubyte, Literal[31]], 737), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[1408]], 768), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_modify_cong_status_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_cong_status_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_cong_status_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  priority: c.Array[ctypes.c_ubyte, Literal[4]]
  cong_protocol: c.Array[ctypes.c_ubyte, Literal[4]]
  enable: c.Array[ctypes.c_ubyte, Literal[1]]
  tag_enable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_62: c.Array[ctypes.c_ubyte, Literal[30]]
struct_mlx5_ifc_modify_cong_status_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('priority', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('cong_protocol', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('enable', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('tag_enable', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('reserved_at_62', c.Array[ctypes.c_ubyte, Literal[30]], 98)])
@c.record
class struct_mlx5_ifc_modify_cong_params_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_cong_params_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_cong_params_in_bits(c.Struct):
  SIZE = 2304
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[28]]
  cong_protocol: c.Array[ctypes.c_ubyte, Literal[4]]
  field_select: union_mlx5_ifc_field_select_802_1_r_roce_auto_bits
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[128]]
  congestion_parameters: union_mlx5_ifc_cong_control_roce_ecn_auto_bits
struct_mlx5_ifc_modify_cong_params_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[28]], 64), ('cong_protocol', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('field_select', union_mlx5_ifc_field_select_802_1_r_roce_auto_bits, 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[128]], 128), ('congestion_parameters', union_mlx5_ifc_cong_control_roce_ecn_auto_bits, 256)])
@c.record
class struct_mlx5_ifc_manage_pages_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  output_num_entries: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_manage_pages_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('output_num_entries', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 128)])
_anonenum103: dict[int, str] = {(MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_FAIL:=0): 'MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_FAIL', (MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_SUCCESS:=1): 'MLX5_MANAGE_PAGES_IN_OP_MOD_ALLOCATION_SUCCESS', (MLX5_MANAGE_PAGES_IN_OP_MOD_HCA_RETURN_PAGES:=2): 'MLX5_MANAGE_PAGES_IN_OP_MOD_HCA_RETURN_PAGES'}
@c.record
class struct_mlx5_ifc_manage_pages_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  embedded_cpu_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  input_num_entries: c.Array[ctypes.c_ubyte, Literal[32]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_manage_pages_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('embedded_cpu_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('input_num_entries', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_mad_ifc_out_bits(c.Struct):
  SIZE = 2176
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  response_mad_packet: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[256]]
struct_mlx5_ifc_mad_ifc_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('response_mad_packet', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[256]], 128)])
@c.record
class struct_mlx5_ifc_mad_ifc_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  remote_lid: c.Array[ctypes.c_ubyte, Literal[16]]
  plane_index: c.Array[ctypes.c_ubyte, Literal[8]]
  port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  mad: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[256]]
struct_mlx5_ifc_mad_ifc_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('remote_lid', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('plane_index', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('port', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('mad', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[256]], 128)])
@c.record
class struct_mlx5_ifc_init_hca_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_init_hca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_init_hca_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[2]]
  sw_vhca_id: c.Array[ctypes.c_ubyte, Literal[14]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[16]]
  sw_owner_id: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
struct_mlx5_ifc_init_hca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[2]], 96), ('sw_vhca_id', c.Array[ctypes.c_ubyte, Literal[14]], 98), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('sw_owner_id', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 128)])
@c.record
class struct_mlx5_ifc_init2rtr_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_init2rtr_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_init2rtr_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_init2rtr_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_init2init_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_init2init_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_init2init_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_init2init_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[128]], 2048)])
@c.record
class struct_mlx5_ifc_get_dropped_packet_log_out_bits(c.Struct):
  SIZE = 1664
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  packet_headers_log: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[128]]
  packet_syndrome: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]]
struct_mlx5_ifc_get_dropped_packet_log_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('packet_headers_log', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[128]], 128), ('packet_syndrome', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]], 1152)])
@c.record
class struct_mlx5_ifc_get_dropped_packet_log_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_get_dropped_packet_log_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_gen_eqe_in_bits(c.Struct):
  SIZE = 640
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  eq_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  eqe: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]]
struct_mlx5_ifc_gen_eqe_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('eq_number', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('eqe', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]], 128)])
@c.record
class struct_mlx5_ifc_gen_eq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_gen_eq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_enable_hca_out_bits(c.Struct):
  SIZE = 96
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_enable_hca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64)])
@c.record
class struct_mlx5_ifc_enable_hca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  embedded_cpu_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_enable_hca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('embedded_cpu_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_drain_dct_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_drain_dct_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_drain_dct_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  dctn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_drain_dct_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('dctn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_disable_hca_out_bits(c.Struct):
  SIZE = 96
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_disable_hca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64)])
@c.record
class struct_mlx5_ifc_disable_hca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  embedded_cpu_function: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_disable_hca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('embedded_cpu_function', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_detach_from_mcg_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_detach_from_mcg_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_detach_from_mcg_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  multicast_gid: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_detach_from_mcg_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('multicast_gid', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 128)])
@c.record
class struct_mlx5_ifc_destroy_xrq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_xrq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_xrq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_xrq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_xrc_srq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_xrc_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_xrc_srq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrc_srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_xrc_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrc_srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_tis_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_tis_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_tis_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tisn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_tis_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tisn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_tir_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_tir_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_tir_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tirn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_tir_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tirn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_srq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_srq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_sq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_sq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_sq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  sqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_sq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('sqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_scheduling_element_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[448]]
struct_mlx5_ifc_destroy_scheduling_element_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[448]], 64)])
@c.record
class struct_mlx5_ifc_destroy_scheduling_element_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  scheduling_hierarchy: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[24]]
  scheduling_element_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_destroy_scheduling_element_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('scheduling_hierarchy', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('scheduling_element_id', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_destroy_rqt_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_rqt_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_rqt_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqtn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_rqt_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqtn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_rq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_rq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_rq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_rq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_set_delay_drop_params_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  delay_drop_timeout: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_set_delay_drop_params_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('delay_drop_timeout', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_set_delay_drop_params_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_delay_drop_params_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_rmp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_rmp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_rmp_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rmpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_rmp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rmpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_qp_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_psv_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_psv_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_psv_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  psvn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_psv_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('psvn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_mkey_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_mkey_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_mkey_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  mkey_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_mkey_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('mkey_index', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_flow_table_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_flow_table_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_flow_table_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_destroy_flow_table_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_destroy_flow_group_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_flow_group_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_flow_group_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  group_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[288]]
struct_mlx5_ifc_destroy_flow_group_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('group_id', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[288]], 224)])
@c.record
class struct_mlx5_ifc_destroy_eq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_eq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_eq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  eq_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_eq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('eq_number', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_dct_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_dct_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_dct_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  dctn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_dct_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('dctn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_cq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_cq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_cq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_cq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_delete_vxlan_udp_dport_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_delete_vxlan_udp_dport_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_delete_vxlan_udp_dport_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  vxlan_udp_port: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_delete_vxlan_udp_dport_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('vxlan_udp_port', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_delete_l2_table_entry_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_delete_l2_table_entry_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_delete_l2_table_entry_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_delete_l2_table_entry_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[96]], 64), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_index', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_delete_fte_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_delete_fte_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_delete_fte_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
struct_mlx5_ifc_delete_fte_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288)])
@c.record
class struct_mlx5_ifc_dealloc_xrcd_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_xrcd_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_xrcd_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrcd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_xrcd_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrcd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_dealloc_uar_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_uar_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_uar_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  uar: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_uar_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('uar', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_dealloc_transport_domain_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_transport_domain_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_transport_domain_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  transport_domain: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_transport_domain_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('transport_domain', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_dealloc_q_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_q_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_q_counter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_q_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_dealloc_pd_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_pd_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_pd_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_pd_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_dealloc_flow_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_flow_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_flow_counter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  flow_counter_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_flow_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('flow_counter_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_xrq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_xrq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_xrq_in_bits(c.Struct):
  SIZE = 2688
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  xrq_context: struct_mlx5_ifc_xrqc_bits
struct_mlx5_ifc_create_xrq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('xrq_context', struct_mlx5_ifc_xrqc_bits, 128)])
@c.record
class struct_mlx5_ifc_create_xrc_srq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrc_srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_xrc_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrc_srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_xrc_srq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  xrc_srq_context_entry: struct_mlx5_ifc_xrc_srqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[96]]
  xrc_srq_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2e1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[1408]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_create_xrc_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('xrc_srq_context_entry', struct_mlx5_ifc_xrc_srqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[96]], 640), ('xrc_srq_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 736), ('reserved_at_2e1', c.Array[ctypes.c_ubyte, Literal[31]], 737), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[1408]], 768), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_create_tis_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  tisn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_tis_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tisn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_tis_in_bits(c.Struct):
  SIZE = 1536
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  ctx: struct_mlx5_ifc_tisc_bits
struct_mlx5_ifc_create_tis_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('ctx', struct_mlx5_ifc_tisc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_tir_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  icm_address_63_40: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  icm_address_39_32: c.Array[ctypes.c_ubyte, Literal[8]]
  tirn: c.Array[ctypes.c_ubyte, Literal[24]]
  icm_address_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_tir_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('icm_address_63_40', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('icm_address_39_32', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('tirn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('icm_address_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_tir_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  ctx: struct_mlx5_ifc_tirc_bits
struct_mlx5_ifc_create_tir_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('ctx', struct_mlx5_ifc_tirc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_srq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_srq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  srq_context_entry: struct_mlx5_ifc_srqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[1536]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_create_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('srq_context_entry', struct_mlx5_ifc_srqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[1536]], 640), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_create_sq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  sqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_sq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('sqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_sq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  ctx: struct_mlx5_ifc_sqc_bits
struct_mlx5_ifc_create_sq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('ctx', struct_mlx5_ifc_sqc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_scheduling_element_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  scheduling_element_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[352]]
struct_mlx5_ifc_create_scheduling_element_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('scheduling_element_id', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[352]], 160)])
@c.record
class struct_mlx5_ifc_create_scheduling_element_in_bits(c.Struct):
  SIZE = 1024
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  scheduling_hierarchy: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[160]]
  scheduling_context: struct_mlx5_ifc_scheduling_context_bits
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_create_scheduling_element_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('scheduling_hierarchy', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[160]], 96), ('scheduling_context', struct_mlx5_ifc_scheduling_context_bits, 256), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[256]], 768)])
@c.record
class struct_mlx5_ifc_create_rqt_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqtn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_rqt_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqtn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_rqt_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  rqt_context: struct_mlx5_ifc_rqtc_bits
struct_mlx5_ifc_create_rqt_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('rqt_context', struct_mlx5_ifc_rqtc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_rq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_rq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_rq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  ctx: struct_mlx5_ifc_rqc_bits
struct_mlx5_ifc_create_rq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('ctx', struct_mlx5_ifc_rqc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_rmp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  rmpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_rmp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('rmpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_rmp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[192]]
  ctx: struct_mlx5_ifc_rmpc_bits
struct_mlx5_ifc_create_rmp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[192]], 64), ('ctx', struct_mlx5_ifc_rmpc_bits, 256)])
@c.record
class struct_mlx5_ifc_create_qp_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_qp_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_qp_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  qpc_ext: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[7]]
  input_qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  opt_param_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
  qpc: struct_mlx5_ifc_qpc_bits
  wq_umem_offset: c.Array[ctypes.c_ubyte, Literal[64]]
  wq_umem_id: c.Array[ctypes.c_ubyte, Literal[32]]
  wq_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_861: c.Array[ctypes.c_ubyte, Literal[31]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_create_qp_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('qpc_ext', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[7]], 65), ('input_qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('opt_param_mask', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('qpc', struct_mlx5_ifc_qpc_bits, 192), ('wq_umem_offset', c.Array[ctypes.c_ubyte, Literal[64]], 2048), ('wq_umem_id', c.Array[ctypes.c_ubyte, Literal[32]], 2112), ('wq_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 2144), ('reserved_at_861', c.Array[ctypes.c_ubyte, Literal[31]], 2145), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_create_psv_out_bits(c.Struct):
  SIZE = 256
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  psv0_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  psv1_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  psv2_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[8]]
  psv3_index: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_create_psv_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('psv0_index', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('psv1_index', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('psv2_index', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[8]], 224), ('psv3_index', c.Array[ctypes.c_ubyte, Literal[24]], 232)])
@c.record
class struct_mlx5_ifc_create_psv_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  num_psv: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[4]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_psv_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('num_psv', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_mkey_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  mkey_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_mkey_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('mkey_index', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_mkey_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  pg_access: c.Array[ctypes.c_ubyte, Literal[1]]
  mkey_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  data_direct: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_63: c.Array[ctypes.c_ubyte, Literal[29]]
  memory_key_mkey_entry: struct_mlx5_ifc_mkc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[128]]
  translations_octword_actual_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_320: c.Array[ctypes.c_ubyte, Literal[1376]]
  klm_pas_mtt: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_create_mkey_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('pg_access', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('mkey_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('data_direct', c.Array[ctypes.c_ubyte, Literal[1]], 98), ('reserved_at_63', c.Array[ctypes.c_ubyte, Literal[29]], 99), ('memory_key_mkey_entry', struct_mlx5_ifc_mkc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[128]], 640), ('translations_octword_actual_size', c.Array[ctypes.c_ubyte, Literal[32]], 768), ('reserved_at_320', c.Array[ctypes.c_ubyte, Literal[1376]], 800), ('klm_pas_mtt', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 2176)])
_anonenum104: dict[int, str] = {(MLX5_FLOW_TABLE_TYPE_NIC_RX:=0): 'MLX5_FLOW_TABLE_TYPE_NIC_RX', (MLX5_FLOW_TABLE_TYPE_NIC_TX:=1): 'MLX5_FLOW_TABLE_TYPE_NIC_TX', (MLX5_FLOW_TABLE_TYPE_ESW_EGRESS_ACL:=2): 'MLX5_FLOW_TABLE_TYPE_ESW_EGRESS_ACL', (MLX5_FLOW_TABLE_TYPE_ESW_INGRESS_ACL:=3): 'MLX5_FLOW_TABLE_TYPE_ESW_INGRESS_ACL', (MLX5_FLOW_TABLE_TYPE_FDB:=4): 'MLX5_FLOW_TABLE_TYPE_FDB', (MLX5_FLOW_TABLE_TYPE_SNIFFER_RX:=5): 'MLX5_FLOW_TABLE_TYPE_SNIFFER_RX', (MLX5_FLOW_TABLE_TYPE_SNIFFER_TX:=6): 'MLX5_FLOW_TABLE_TYPE_SNIFFER_TX'}
@c.record
class struct_mlx5_ifc_create_flow_table_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  icm_address_63_40: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  icm_address_39_32: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  icm_address_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_flow_table_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('icm_address_63_40', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('icm_address_39_32', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('icm_address_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_flow_table_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  flow_table_context: struct_mlx5_ifc_flow_table_context_bits
struct_mlx5_ifc_create_flow_table_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('flow_table_context', struct_mlx5_ifc_flow_table_context_bits, 192)])
@c.record
class struct_mlx5_ifc_create_flow_group_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  group_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_flow_group_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('group_id', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum105: dict[int, str] = {(MLX5_CREATE_FLOW_GROUP_IN_GROUP_TYPE_TCAM_SUBTABLE:=0): 'MLX5_CREATE_FLOW_GROUP_IN_GROUP_TYPE_TCAM_SUBTABLE', (MLX5_CREATE_FLOW_GROUP_IN_GROUP_TYPE_HASH_SPLIT:=1): 'MLX5_CREATE_FLOW_GROUP_IN_GROUP_TYPE_HASH_SPLIT'}
_anonenum106: dict[int, str] = {(MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_OUTER_HEADERS:=0): 'MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_OUTER_HEADERS', (MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS:=1): 'MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS', (MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_INNER_HEADERS:=2): 'MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_INNER_HEADERS', (MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2:=3): 'MLX5_CREATE_FLOW_GROUP_IN_MATCH_CRITERIA_ENABLE_MISC_PARAMETERS_2'}
@c.record
class struct_mlx5_ifc_create_flow_group_in_bits(c.Struct):
  SIZE = 8192
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[4]]
  group_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_90: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  source_eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_c1: c.Array[ctypes.c_ubyte, Literal[31]]
  start_flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[32]]
  end_flow_index: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[16]]
  match_definer_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[128]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[24]]
  match_criteria_enable: c.Array[ctypes.c_ubyte, Literal[8]]
  match_criteria: struct_mlx5_ifc_fte_match_param_bits
  reserved_at_1200: c.Array[ctypes.c_ubyte, Literal[3584]]
struct_mlx5_ifc_create_flow_group_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[4]], 136), ('group_type', c.Array[ctypes.c_ubyte, Literal[4]], 140), ('reserved_at_90', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('source_eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 192), ('reserved_at_c1', c.Array[ctypes.c_ubyte, Literal[31]], 193), ('start_flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('end_flow_index', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('match_definer_id', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[128]], 352), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[24]], 480), ('match_criteria_enable', c.Array[ctypes.c_ubyte, Literal[8]], 504), ('match_criteria', struct_mlx5_ifc_fte_match_param_bits, 512), ('reserved_at_1200', c.Array[ctypes.c_ubyte, Literal[3584]], 4608)])
@c.record
class struct_mlx5_ifc_create_eq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  eq_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_eq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('eq_number', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_eq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  eq_context_entry: struct_mlx5_ifc_eqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[64]]
  event_bitmask: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]]
  reserved_at_3c0: c.Array[ctypes.c_ubyte, Literal[1216]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_create_eq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('eq_context_entry', struct_mlx5_ifc_eqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[64]], 640), ('event_bitmask', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[4]], 704), ('reserved_at_3c0', c.Array[ctypes.c_ubyte, Literal[1216]], 960), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_create_dct_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  dctn: c.Array[ctypes.c_ubyte, Literal[24]]
  ece: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_dct_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('dctn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('ece', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_dct_in_bits(c.Struct):
  SIZE = 1024
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  dct_context_entry: struct_mlx5_ifc_dctc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_create_dct_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('dct_context_entry', struct_mlx5_ifc_dctc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[384]], 640)])
@c.record
class struct_mlx5_ifc_create_cq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  cqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_cq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('cqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_create_cq_in_bits(c.Struct):
  SIZE = 2176
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  cq_context: struct_mlx5_ifc_cqc_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[96]]
  cq_umem_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2e1: c.Array[ctypes.c_ubyte, Literal[1439]]
  pas: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_create_cq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('cq_context', struct_mlx5_ifc_cqc_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[96]], 640), ('cq_umem_valid', c.Array[ctypes.c_ubyte, Literal[1]], 736), ('reserved_at_2e1', c.Array[ctypes.c_ubyte, Literal[1439]], 737), ('pas', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 2176)])
@c.record
class struct_mlx5_ifc_config_int_moderation_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[4]]
  min_delay: c.Array[ctypes.c_ubyte, Literal[12]]
  int_vector: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_config_int_moderation_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('min_delay', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('int_vector', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum107: dict[int, str] = {(MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_WRITE:=0): 'MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_WRITE', (MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_READ:=1): 'MLX5_CONFIG_INT_MODERATION_IN_OP_MOD_READ'}
@c.record
class struct_mlx5_ifc_config_int_moderation_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[4]]
  min_delay: c.Array[ctypes.c_ubyte, Literal[12]]
  int_vector: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_config_int_moderation_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('min_delay', c.Array[ctypes.c_ubyte, Literal[12]], 68), ('int_vector', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_attach_to_mcg_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_attach_to_mcg_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_attach_to_mcg_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  multicast_gid: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_attach_to_mcg_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('multicast_gid', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 128)])
@c.record
class struct_mlx5_ifc_arm_xrq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_arm_xrq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_arm_xrq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_arm_xrq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_arm_xrc_srq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_arm_xrc_srq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum108: dict[int, str] = {(MLX5_ARM_XRC_SRQ_IN_OP_MOD_XRC_SRQ:=1): 'MLX5_ARM_XRC_SRQ_IN_OP_MOD_XRC_SRQ'}
@c.record
class struct_mlx5_ifc_arm_xrc_srq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrc_srqn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_arm_xrc_srq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrc_srqn', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_arm_rq_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_arm_rq_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum109: dict[int, str] = {(MLX5_ARM_RQ_IN_OP_MOD_SRQ:=1): 'MLX5_ARM_RQ_IN_OP_MOD_SRQ', (MLX5_ARM_RQ_IN_OP_MOD_XRQ:=2): 'MLX5_ARM_RQ_IN_OP_MOD_XRQ'}
@c.record
class struct_mlx5_ifc_arm_rq_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  srq_number: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  lwm: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_arm_rq_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('srq_number', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('lwm', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_arm_dct_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_arm_dct_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_arm_dct_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  dct_number: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_arm_dct_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('dct_number', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_xrcd_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  xrcd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_xrcd_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('xrcd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_xrcd_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_xrcd_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_uar_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  uar: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_uar_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('uar', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_uar_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_uar_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_transport_domain_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  transport_domain: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_transport_domain_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('transport_domain', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_transport_domain_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_transport_domain_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_q_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  counter_set_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_q_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('counter_set_id', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_q_counter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_q_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_pd_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_pd_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_pd_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_pd_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_flow_counter_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  flow_counter_id: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_flow_counter_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('flow_counter_id', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_flow_counter_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[51]]
  flow_counter_bulk_log_size: c.Array[ctypes.c_ubyte, Literal[5]]
  flow_counter_bulk: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_alloc_flow_counter_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[51]], 64), ('flow_counter_bulk_log_size', c.Array[ctypes.c_ubyte, Literal[5]], 115), ('flow_counter_bulk', c.Array[ctypes.c_ubyte, Literal[8]], 120)])
@c.record
class struct_mlx5_ifc_add_vxlan_udp_dport_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_add_vxlan_udp_dport_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_add_vxlan_udp_dport_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  vxlan_udp_port: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_add_vxlan_udp_dport_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('vxlan_udp_port', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_set_pp_rate_limit_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_pp_rate_limit_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_pp_rate_limit_context_bits(c.Struct):
  SIZE = 384
  rate_limit: c.Array[ctypes.c_ubyte, Literal[32]]
  burst_upper_bound: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  typical_packet_size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[288]]
struct_mlx5_ifc_set_pp_rate_limit_context_bits.register_fields([('rate_limit', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('burst_upper_bound', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('typical_packet_size', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[288]], 96)])
@c.record
class struct_mlx5_ifc_set_pp_rate_limit_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  rate_limit_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  ctx: struct_mlx5_ifc_set_pp_rate_limit_context_bits
struct_mlx5_ifc_set_pp_rate_limit_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('rate_limit_index', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('ctx', struct_mlx5_ifc_set_pp_rate_limit_context_bits, 128)])
@c.record
class struct_mlx5_ifc_access_register_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  register_data: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_access_register_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('register_data', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 128)])
_anonenum110: dict[int, str] = {(MLX5_ACCESS_REGISTER_IN_OP_MOD_WRITE:=0): 'MLX5_ACCESS_REGISTER_IN_OP_MOD_WRITE', (MLX5_ACCESS_REGISTER_IN_OP_MOD_READ:=1): 'MLX5_ACCESS_REGISTER_IN_OP_MOD_READ'}
@c.record
class struct_mlx5_ifc_access_register_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  register_id: c.Array[ctypes.c_ubyte, Literal[16]]
  argument: c.Array[ctypes.c_ubyte, Literal[32]]
  register_data: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_access_register_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('register_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('argument', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('register_data', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_sltp_reg_bits(c.Struct):
  SIZE = 160
  status: c.Array[ctypes.c_ubyte, Literal[4]]
  version: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_12: c.Array[ctypes.c_ubyte, Literal[2]]
  lane: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[7]]
  polarity: c.Array[ctypes.c_ubyte, Literal[1]]
  ob_tap0: c.Array[ctypes.c_ubyte, Literal[8]]
  ob_tap1: c.Array[ctypes.c_ubyte, Literal[8]]
  ob_tap2: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[12]]
  ob_preemp_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  ob_reg: c.Array[ctypes.c_ubyte, Literal[8]]
  ob_bias: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_sltp_reg_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('version', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('reserved_at_12', c.Array[ctypes.c_ubyte, Literal[2]], 18), ('lane', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[7]], 64), ('polarity', c.Array[ctypes.c_ubyte, Literal[1]], 71), ('ob_tap0', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('ob_tap1', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('ob_tap2', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[12]], 96), ('ob_preemp_mode', c.Array[ctypes.c_ubyte, Literal[4]], 108), ('ob_reg', c.Array[ctypes.c_ubyte, Literal[8]], 112), ('ob_bias', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[32]], 128)])
@c.record
class struct_mlx5_ifc_slrg_reg_bits(c.Struct):
  SIZE = 320
  status: c.Array[ctypes.c_ubyte, Literal[4]]
  version: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_12: c.Array[ctypes.c_ubyte, Literal[2]]
  lane: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  time_to_link_up: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[12]]
  grade_lane_speed: c.Array[ctypes.c_ubyte, Literal[4]]
  grade_version: c.Array[ctypes.c_ubyte, Literal[8]]
  grade: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[4]]
  height_grade_type: c.Array[ctypes.c_ubyte, Literal[4]]
  height_grade: c.Array[ctypes.c_ubyte, Literal[24]]
  height_dz: c.Array[ctypes.c_ubyte, Literal[16]]
  height_dv: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[16]]
  height_sigma: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[4]]
  phase_grade_type: c.Array[ctypes.c_ubyte, Literal[4]]
  phase_grade: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  phase_eo_pos: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_110: c.Array[ctypes.c_ubyte, Literal[8]]
  phase_eo_neg: c.Array[ctypes.c_ubyte, Literal[8]]
  ffe_set_tested: c.Array[ctypes.c_ubyte, Literal[16]]
  test_errors_per_lane: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_slrg_reg_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('version', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('reserved_at_12', c.Array[ctypes.c_ubyte, Literal[2]], 18), ('lane', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('time_to_link_up', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[12]], 48), ('grade_lane_speed', c.Array[ctypes.c_ubyte, Literal[4]], 60), ('grade_version', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('grade', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('height_grade_type', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('height_grade', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('height_dz', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('height_dv', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('height_sigma', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[4]], 224), ('phase_grade_type', c.Array[ctypes.c_ubyte, Literal[4]], 228), ('phase_grade', c.Array[ctypes.c_ubyte, Literal[24]], 232), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('phase_eo_pos', c.Array[ctypes.c_ubyte, Literal[8]], 264), ('reserved_at_110', c.Array[ctypes.c_ubyte, Literal[8]], 272), ('phase_eo_neg', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('ffe_set_tested', c.Array[ctypes.c_ubyte, Literal[16]], 288), ('test_errors_per_lane', c.Array[ctypes.c_ubyte, Literal[16]], 304)])
@c.record
class struct_mlx5_ifc_pvlc_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[28]]
  vl_hw_cap: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[28]]
  vl_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[28]]
  vl_operational: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_pvlc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[28]], 32), ('vl_hw_cap', c.Array[ctypes.c_ubyte, Literal[4]], 60), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[28]], 64), ('vl_admin', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[28]], 96), ('vl_operational', c.Array[ctypes.c_ubyte, Literal[4]], 124)])
@c.record
class struct_mlx5_ifc_pude_reg_bits(c.Struct):
  SIZE = 128
  swid: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[4]]
  admin_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[4]]
  oper_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_pude_reg_bits.register_fields([('swid', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[4]], 16), ('admin_status', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('oper_status', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
_anonenum111: dict[int, str] = {(MLX5_PTYS_CONNECTOR_TYPE_PORT_DA:=7): 'MLX5_PTYS_CONNECTOR_TYPE_PORT_DA'}
@c.record
class struct_mlx5_ifc_ptys_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1]]
  an_disable_admin: c.Array[ctypes.c_ubyte, Literal[1]]
  an_disable_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[5]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  plane_ind: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_1c: c.Array[ctypes.c_ubyte, Literal[1]]
  proto_mask: c.Array[ctypes.c_ubyte, Literal[3]]
  an_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_24: c.Array[ctypes.c_ubyte, Literal[12]]
  data_rate_oper: c.Array[ctypes.c_ubyte, Literal[16]]
  ext_eth_proto_capability: c.Array[ctypes.c_ubyte, Literal[32]]
  eth_proto_capability: c.Array[ctypes.c_ubyte, Literal[32]]
  ib_link_width_capability: c.Array[ctypes.c_ubyte, Literal[16]]
  ib_proto_capability: c.Array[ctypes.c_ubyte, Literal[16]]
  ext_eth_proto_admin: c.Array[ctypes.c_ubyte, Literal[32]]
  eth_proto_admin: c.Array[ctypes.c_ubyte, Literal[32]]
  ib_link_width_admin: c.Array[ctypes.c_ubyte, Literal[16]]
  ib_proto_admin: c.Array[ctypes.c_ubyte, Literal[16]]
  ext_eth_proto_oper: c.Array[ctypes.c_ubyte, Literal[32]]
  eth_proto_oper: c.Array[ctypes.c_ubyte, Literal[32]]
  ib_link_width_oper: c.Array[ctypes.c_ubyte, Literal[16]]
  ib_proto_oper: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[8]]
  lane_rate_oper: c.Array[ctypes.c_ubyte, Literal[20]]
  connector_type: c.Array[ctypes.c_ubyte, Literal[4]]
  eth_proto_lp_advertise: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_ptys_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('an_disable_admin', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('an_disable_cap', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('plane_ind', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('reserved_at_1c', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('proto_mask', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('an_status', c.Array[ctypes.c_ubyte, Literal[4]], 32), ('reserved_at_24', c.Array[ctypes.c_ubyte, Literal[12]], 36), ('data_rate_oper', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('ext_eth_proto_capability', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('eth_proto_capability', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('ib_link_width_capability', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('ib_proto_capability', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('ext_eth_proto_admin', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('eth_proto_admin', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('ib_link_width_admin', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('ib_proto_admin', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('ext_eth_proto_oper', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('eth_proto_oper', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('ib_link_width_oper', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('ib_proto_oper', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[8]], 352), ('lane_rate_oper', c.Array[ctypes.c_ubyte, Literal[20]], 360), ('connector_type', c.Array[ctypes.c_ubyte, Literal[4]], 380), ('eth_proto_lp_advertise', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('reserved_at_1a0', c.Array[ctypes.c_ubyte, Literal[96]], 416)])
@c.record
class struct_mlx5_ifc_mlcr_reg_bits(c.Struct):
  SIZE = 96
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[32]]
  beacon_duration: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  beacon_remain: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_mlcr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[32]], 16), ('beacon_duration', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('beacon_remain', c.Array[ctypes.c_ubyte, Literal[16]], 80)])
@c.record
class struct_mlx5_ifc_ptas_reg_bits(c.Struct):
  SIZE = 352
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  algorithm_options: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[4]]
  repetitions_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  num_of_repetitions: c.Array[ctypes.c_ubyte, Literal[8]]
  grade_version: c.Array[ctypes.c_ubyte, Literal[8]]
  height_grade_type: c.Array[ctypes.c_ubyte, Literal[4]]
  phase_grade_type: c.Array[ctypes.c_ubyte, Literal[4]]
  height_grade_weight: c.Array[ctypes.c_ubyte, Literal[8]]
  phase_grade_weight: c.Array[ctypes.c_ubyte, Literal[8]]
  gisim_measure_bits: c.Array[ctypes.c_ubyte, Literal[16]]
  adaptive_tap_measure_bits: c.Array[ctypes.c_ubyte, Literal[16]]
  ber_bath_high_error_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  ber_bath_mid_error_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  ber_bath_low_error_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  one_ratio_high_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  one_ratio_high_mid_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  one_ratio_low_mid_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  one_ratio_low_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  ndeo_error_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  mixer_offset_step_size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_110: c.Array[ctypes.c_ubyte, Literal[8]]
  mix90_phase_for_voltage_bath: c.Array[ctypes.c_ubyte, Literal[8]]
  mixer_offset_start: c.Array[ctypes.c_ubyte, Literal[16]]
  mixer_offset_end: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[21]]
  ber_test_time: c.Array[ctypes.c_ubyte, Literal[11]]
struct_mlx5_ifc_ptas_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('algorithm_options', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[4]], 48), ('repetitions_mode', c.Array[ctypes.c_ubyte, Literal[4]], 52), ('num_of_repetitions', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('grade_version', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('height_grade_type', c.Array[ctypes.c_ubyte, Literal[4]], 72), ('phase_grade_type', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('height_grade_weight', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('phase_grade_weight', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('gisim_measure_bits', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('adaptive_tap_measure_bits', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('ber_bath_high_error_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('ber_bath_mid_error_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('ber_bath_low_error_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('one_ratio_high_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('one_ratio_high_mid_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('one_ratio_low_mid_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('one_ratio_low_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('ndeo_error_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('mixer_offset_step_size', c.Array[ctypes.c_ubyte, Literal[16]], 256), ('reserved_at_110', c.Array[ctypes.c_ubyte, Literal[8]], 272), ('mix90_phase_for_voltage_bath', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('mixer_offset_start', c.Array[ctypes.c_ubyte, Literal[16]], 288), ('mixer_offset_end', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[21]], 320), ('ber_test_time', c.Array[ctypes.c_ubyte, Literal[11]], 341)])
@c.record
class struct_mlx5_ifc_pspa_reg_bits(c.Struct):
  SIZE = 64
  swid: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  sub_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_pspa_reg_bits.register_fields([('swid', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('sub_port', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_pqdr_reg_bits(c.Struct):
  SIZE = 256
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[5]]
  prio: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[6]]
  mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  min_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  max_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  mark_probability_denominator: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_pqdr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[5]], 16), ('prio', c.Array[ctypes.c_ubyte, Literal[3]], 21), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[6]], 24), ('mode', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('min_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('max_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('mark_probability_denominator', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[96]], 160)])
@c.record
class struct_mlx5_ifc_ppsc_reg_bits(c.Struct):
  SIZE = 384
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[28]]
  wrps_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[28]]
  wrps_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  up_threshold: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_d0: c.Array[ctypes.c_ubyte, Literal[8]]
  down_threshold: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[28]]
  srps_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[28]]
  srps_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_ppsc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[28]], 128), ('wrps_admin', c.Array[ctypes.c_ubyte, Literal[4]], 156), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[28]], 160), ('wrps_status', c.Array[ctypes.c_ubyte, Literal[4]], 188), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('up_threshold', c.Array[ctypes.c_ubyte, Literal[8]], 200), ('reserved_at_d0', c.Array[ctypes.c_ubyte, Literal[8]], 208), ('down_threshold', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[28]], 256), ('srps_admin', c.Array[ctypes.c_ubyte, Literal[4]], 284), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[28]], 288), ('srps_status', c.Array[ctypes.c_ubyte, Literal[4]], 316), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[64]], 320)])
@c.record
class struct_mlx5_ifc_pplr_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  lb_cap: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  lb_en: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_pplr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('lb_cap', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('lb_en', c.Array[ctypes.c_ubyte, Literal[8]], 56)])
@c.record
class struct_mlx5_ifc_pplm_reg_bits(c.Struct):
  SIZE = 960
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  port_profile_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  static_port_profile: c.Array[ctypes.c_ubyte, Literal[8]]
  active_port_profile: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[8]]
  retransmission_active: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_mode_active: c.Array[ctypes.c_ubyte, Literal[24]]
  rs_fec_correction_bypass_cap: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_84: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_override_cap_56g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_cap_100g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_cap_50g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_cap_25g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_cap_10g_40g: c.Array[ctypes.c_ubyte, Literal[4]]
  rs_fec_correction_bypass_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_a4: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_override_admin_56g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_admin_100g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_admin_50g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_admin_25g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_admin_10g_40g: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_override_cap_400g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_200g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_100g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_50g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_400g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_200g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_100g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_50g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_800g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_400g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_200g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_100g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_180: c.Array[ctypes.c_ubyte, Literal[160]]
  fec_override_admin_800g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_400g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_200g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_100g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_260: c.Array[ctypes.c_ubyte, Literal[96]]
  fec_override_cap_1600g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_800g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_400g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_cap_200g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_1600g_8x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_800g_4x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_400g_2x: c.Array[ctypes.c_ubyte, Literal[16]]
  fec_override_admin_200g_1x: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_340: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_pplm_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('port_profile_mode', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('static_port_profile', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('active_port_profile', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('retransmission_active', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('fec_mode_active', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('rs_fec_correction_bypass_cap', c.Array[ctypes.c_ubyte, Literal[4]], 128), ('reserved_at_84', c.Array[ctypes.c_ubyte, Literal[8]], 132), ('fec_override_cap_56g', c.Array[ctypes.c_ubyte, Literal[4]], 140), ('fec_override_cap_100g', c.Array[ctypes.c_ubyte, Literal[4]], 144), ('fec_override_cap_50g', c.Array[ctypes.c_ubyte, Literal[4]], 148), ('fec_override_cap_25g', c.Array[ctypes.c_ubyte, Literal[4]], 152), ('fec_override_cap_10g_40g', c.Array[ctypes.c_ubyte, Literal[4]], 156), ('rs_fec_correction_bypass_admin', c.Array[ctypes.c_ubyte, Literal[4]], 160), ('reserved_at_a4', c.Array[ctypes.c_ubyte, Literal[8]], 164), ('fec_override_admin_56g', c.Array[ctypes.c_ubyte, Literal[4]], 172), ('fec_override_admin_100g', c.Array[ctypes.c_ubyte, Literal[4]], 176), ('fec_override_admin_50g', c.Array[ctypes.c_ubyte, Literal[4]], 180), ('fec_override_admin_25g', c.Array[ctypes.c_ubyte, Literal[4]], 184), ('fec_override_admin_10g_40g', c.Array[ctypes.c_ubyte, Literal[4]], 188), ('fec_override_cap_400g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('fec_override_cap_200g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 208), ('fec_override_cap_100g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 224), ('fec_override_cap_50g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('fec_override_admin_400g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 256), ('fec_override_admin_200g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 272), ('fec_override_admin_100g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 288), ('fec_override_admin_50g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 304), ('fec_override_cap_800g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('fec_override_cap_400g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('fec_override_cap_200g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 352), ('fec_override_cap_100g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 368), ('reserved_at_180', c.Array[ctypes.c_ubyte, Literal[160]], 384), ('fec_override_admin_800g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 544), ('fec_override_admin_400g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 560), ('fec_override_admin_200g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 576), ('fec_override_admin_100g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 592), ('reserved_at_260', c.Array[ctypes.c_ubyte, Literal[96]], 608), ('fec_override_cap_1600g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 704), ('fec_override_cap_800g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 720), ('fec_override_cap_400g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 736), ('fec_override_cap_200g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 752), ('fec_override_admin_1600g_8x', c.Array[ctypes.c_ubyte, Literal[16]], 768), ('fec_override_admin_800g_4x', c.Array[ctypes.c_ubyte, Literal[16]], 784), ('fec_override_admin_400g_2x', c.Array[ctypes.c_ubyte, Literal[16]], 800), ('fec_override_admin_200g_1x', c.Array[ctypes.c_ubyte, Literal[16]], 816), ('reserved_at_340', c.Array[ctypes.c_ubyte, Literal[128]], 832)])
@c.record
class struct_mlx5_ifc_ppcnt_reg_bits(c.Struct):
  SIZE = 2048
  swid: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_12: c.Array[ctypes.c_ubyte, Literal[8]]
  grp: c.Array[ctypes.c_ubyte, Literal[6]]
  clr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[19]]
  plane_ind: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[3]]
  prio_tc: c.Array[ctypes.c_ubyte, Literal[5]]
  counter_set: union_mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits
struct_mlx5_ifc_ppcnt_reg_bits.register_fields([('swid', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('reserved_at_12', c.Array[ctypes.c_ubyte, Literal[8]], 18), ('grp', c.Array[ctypes.c_ubyte, Literal[6]], 26), ('clr', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[19]], 33), ('plane_ind', c.Array[ctypes.c_ubyte, Literal[4]], 52), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[3]], 56), ('prio_tc', c.Array[ctypes.c_ubyte, Literal[5]], 59), ('counter_set', union_mlx5_ifc_eth_cntrs_grp_data_layout_auto_bits, 64)])
@c.record
class struct_mlx5_ifc_mpein_reg_bits(c.Struct):
  SIZE = 384
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[2]]
  depth: c.Array[ctypes.c_ubyte, Literal[6]]
  pcie_index: c.Array[ctypes.c_ubyte, Literal[8]]
  node: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  capability_mask: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  link_width_enabled: c.Array[ctypes.c_ubyte, Literal[8]]
  link_speed_enabled: c.Array[ctypes.c_ubyte, Literal[16]]
  lane0_physical_position: c.Array[ctypes.c_ubyte, Literal[8]]
  link_width_active: c.Array[ctypes.c_ubyte, Literal[8]]
  link_speed_active: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_pfs: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_vfs: c.Array[ctypes.c_ubyte, Literal[16]]
  bdf0: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_b0: c.Array[ctypes.c_ubyte, Literal[16]]
  max_read_request_size: c.Array[ctypes.c_ubyte, Literal[4]]
  max_payload_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_c8: c.Array[ctypes.c_ubyte, Literal[5]]
  pwr_status: c.Array[ctypes.c_ubyte, Literal[3]]
  port_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_d4: c.Array[ctypes.c_ubyte, Literal[11]]
  lane_reversal: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[20]]
  pci_power: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[32]]
  device_status: c.Array[ctypes.c_ubyte, Literal[16]]
  port_state: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_138: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[16]]
  receiver_detect_result: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_160: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mpein_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('depth', c.Array[ctypes.c_ubyte, Literal[6]], 2), ('pcie_index', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('node', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('capability_mask', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('link_width_enabled', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('link_speed_enabled', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('lane0_physical_position', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('link_width_active', c.Array[ctypes.c_ubyte, Literal[8]], 104), ('link_speed_active', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('num_of_pfs', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('num_of_vfs', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('bdf0', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('reserved_at_b0', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('max_read_request_size', c.Array[ctypes.c_ubyte, Literal[4]], 192), ('max_payload_size', c.Array[ctypes.c_ubyte, Literal[4]], 196), ('reserved_at_c8', c.Array[ctypes.c_ubyte, Literal[5]], 200), ('pwr_status', c.Array[ctypes.c_ubyte, Literal[3]], 205), ('port_type', c.Array[ctypes.c_ubyte, Literal[4]], 208), ('reserved_at_d4', c.Array[ctypes.c_ubyte, Literal[11]], 212), ('lane_reversal', c.Array[ctypes.c_ubyte, Literal[1]], 223), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[20]], 224), ('pci_power', c.Array[ctypes.c_ubyte, Literal[12]], 244), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('device_status', c.Array[ctypes.c_ubyte, Literal[16]], 288), ('port_state', c.Array[ctypes.c_ubyte, Literal[8]], 304), ('reserved_at_138', c.Array[ctypes.c_ubyte, Literal[8]], 312), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[16]], 320), ('receiver_detect_result', c.Array[ctypes.c_ubyte, Literal[16]], 336), ('reserved_at_160', c.Array[ctypes.c_ubyte, Literal[32]], 352)])
@c.record
class struct_mlx5_ifc_mpcnt_reg_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  pcie_index: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[10]]
  grp: c.Array[ctypes.c_ubyte, Literal[6]]
  clr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[31]]
  counter_set: union_mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits
struct_mlx5_ifc_mpcnt_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('pcie_index', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[10]], 16), ('grp', c.Array[ctypes.c_ubyte, Literal[6]], 26), ('clr', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[31]], 33), ('counter_set', union_mlx5_ifc_pcie_cntrs_grp_data_layout_auto_bits, 64)])
@c.record
class struct_mlx5_ifc_ppad_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[3]]
  single_mac: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  mac_47_32: c.Array[ctypes.c_ubyte, Literal[16]]
  mac_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_ppad_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('single_mac', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('mac_47_32', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('mac_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_pmtu_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  max_mtu: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  admin_mtu: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[16]]
  oper_mtu: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_pmtu_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('max_mtu', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('admin_mtu', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('oper_mtu', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_pmpr_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  module: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[24]]
  attenuation_5g: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  attenuation_7g: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[24]]
  attenuation_12g: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_pmpr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('module', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('attenuation_5g', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('attenuation_7g', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[24]], 96), ('attenuation_12g', c.Array[ctypes.c_ubyte, Literal[8]], 120)])
@c.record
class struct_mlx5_ifc_pmpe_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  module: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[12]]
  module_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_pmpe_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('module', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[12]], 16), ('module_status', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
@c.record
class struct_mlx5_ifc_pmpc_reg_bits(c.Struct):
  SIZE = 256
  module_state_updated: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[32]]
struct_mlx5_ifc_pmpc_reg_bits.register_fields([('module_state_updated', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[32]], 0)])
@c.record
class struct_mlx5_ifc_pmlpn_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  mlpn_status: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  e: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[31]]
struct_mlx5_ifc_pmlpn_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('mlpn_status', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('e', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[31]], 33)])
@c.record
class struct_mlx5_ifc_pmlp_reg_bits(c.Struct):
  SIZE = 512
  rxtx: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[7]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  width: c.Array[ctypes.c_ubyte, Literal[8]]
  lane0_module_mapping: c.Array[ctypes.c_ubyte, Literal[32]]
  lane1_module_mapping: c.Array[ctypes.c_ubyte, Literal[32]]
  lane2_module_mapping: c.Array[ctypes.c_ubyte, Literal[32]]
  lane3_module_mapping: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[352]]
struct_mlx5_ifc_pmlp_reg_bits.register_fields([('rxtx', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[7]], 1), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('width', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('lane0_module_mapping', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('lane1_module_mapping', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('lane2_module_mapping', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('lane3_module_mapping', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[352]], 160)])
@c.record
class struct_mlx5_ifc_pmaos_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  module: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[4]]
  admin_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[4]]
  oper_status: c.Array[ctypes.c_ubyte, Literal[4]]
  ase: c.Array[ctypes.c_ubyte, Literal[1]]
  ee: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[28]]
  e: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_pmaos_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('module', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[4]], 16), ('admin_status', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('oper_status', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('ase', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('ee', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[28]], 34), ('e', c.Array[ctypes.c_ubyte, Literal[2]], 62), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_plpc_reg_bits(c.Struct):
  SIZE = 320
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  profile_id: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[4]]
  proto_mask: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  lane_speed: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[23]]
  lpbf: c.Array[ctypes.c_ubyte, Literal[1]]
  fec_mode_policy: c.Array[ctypes.c_ubyte, Literal[8]]
  retransmission_capability: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_mode_capability: c.Array[ctypes.c_ubyte, Literal[24]]
  retransmission_support_admin: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_mode_support_admin: c.Array[ctypes.c_ubyte, Literal[24]]
  retransmission_request_admin: c.Array[ctypes.c_ubyte, Literal[8]]
  fec_mode_request_admin: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_plpc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('profile_id', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[4]], 16), ('proto_mask', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('lane_speed', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[23]], 64), ('lpbf', c.Array[ctypes.c_ubyte, Literal[1]], 87), ('fec_mode_policy', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('retransmission_capability', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('fec_mode_capability', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('retransmission_support_admin', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('fec_mode_support_admin', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('retransmission_request_admin', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('fec_mode_request_admin', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[128]], 192)])
@c.record
class struct_mlx5_ifc_plib_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  ib_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_plib_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('ib_port', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
@c.record
class struct_mlx5_ifc_plbf_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[13]]
  lbf_mode: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_plbf_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[13]], 16), ('lbf_mode', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_pipg_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  dic: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[25]]
  ipg: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_3e: c.Array[ctypes.c_ubyte, Literal[2]]
struct_mlx5_ifc_pipg_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('dic', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[25]], 33), ('ipg', c.Array[ctypes.c_ubyte, Literal[4]], 58), ('reserved_at_3e', c.Array[ctypes.c_ubyte, Literal[2]], 62)])
@c.record
class struct_mlx5_ifc_pifr_reg_bits(c.Struct):
  SIZE = 768
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[224]]
  port_filter: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
  port_filter_update_en: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
struct_mlx5_ifc_pifr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[224]], 32), ('port_filter', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 256), ('port_filter_update_en', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 512)])
_anonenum112: dict[int, str] = {(MLX5_BUF_OWNERSHIP_UNKNOWN:=0): 'MLX5_BUF_OWNERSHIP_UNKNOWN', (MLX5_BUF_OWNERSHIP_FW_OWNED:=1): 'MLX5_BUF_OWNERSHIP_FW_OWNED', (MLX5_BUF_OWNERSHIP_SW_OWNED:=2): 'MLX5_BUF_OWNERSHIP_SW_OWNED'}
@c.record
class struct_mlx5_ifc_pfcc_reg_bits(c.Struct):
  SIZE = 256
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  buf_ownership: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_6: c.Array[ctypes.c_ubyte, Literal[2]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[10]]
  cable_length_mask: c.Array[ctypes.c_ubyte, Literal[1]]
  ppan_mask_n: c.Array[ctypes.c_ubyte, Literal[1]]
  minor_stall_mask: c.Array[ctypes.c_ubyte, Literal[1]]
  critical_stall_mask: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1e: c.Array[ctypes.c_ubyte, Literal[2]]
  ppan: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_24: c.Array[ctypes.c_ubyte, Literal[4]]
  prio_mask_tx: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  prio_mask_rx: c.Array[ctypes.c_ubyte, Literal[8]]
  pptx: c.Array[ctypes.c_ubyte, Literal[1]]
  aptx: c.Array[ctypes.c_ubyte, Literal[1]]
  pptx_mask_n: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_43: c.Array[ctypes.c_ubyte, Literal[5]]
  pfctx: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[16]]
  pprx: c.Array[ctypes.c_ubyte, Literal[1]]
  aprx: c.Array[ctypes.c_ubyte, Literal[1]]
  pprx_mask_n: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_63: c.Array[ctypes.c_ubyte, Literal[5]]
  pfcrx: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[16]]
  device_stall_minor_watermark: c.Array[ctypes.c_ubyte, Literal[16]]
  device_stall_critical_watermark: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[24]]
  cable_length: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_pfcc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('buf_ownership', c.Array[ctypes.c_ubyte, Literal[2]], 4), ('reserved_at_6', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[10]], 16), ('cable_length_mask', c.Array[ctypes.c_ubyte, Literal[1]], 26), ('ppan_mask_n', c.Array[ctypes.c_ubyte, Literal[1]], 27), ('minor_stall_mask', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('critical_stall_mask', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('reserved_at_1e', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('ppan', c.Array[ctypes.c_ubyte, Literal[4]], 32), ('reserved_at_24', c.Array[ctypes.c_ubyte, Literal[4]], 36), ('prio_mask_tx', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('prio_mask_rx', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('pptx', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('aptx', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('pptx_mask_n', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('reserved_at_43', c.Array[ctypes.c_ubyte, Literal[5]], 67), ('pfctx', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('pprx', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('aprx', c.Array[ctypes.c_ubyte, Literal[1]], 97), ('pprx_mask_n', c.Array[ctypes.c_ubyte, Literal[1]], 98), ('reserved_at_63', c.Array[ctypes.c_ubyte, Literal[5]], 99), ('pfcrx', c.Array[ctypes.c_ubyte, Literal[8]], 104), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('device_stall_minor_watermark', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('device_stall_critical_watermark', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[24]], 160), ('cable_length', c.Array[ctypes.c_ubyte, Literal[8]], 184), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192)])
@c.record
class struct_mlx5_ifc_pelc_reg_bits(c.Struct):
  SIZE = 448
  op: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  op_admin: c.Array[ctypes.c_ubyte, Literal[8]]
  op_capability: c.Array[ctypes.c_ubyte, Literal[8]]
  op_request: c.Array[ctypes.c_ubyte, Literal[8]]
  op_active: c.Array[ctypes.c_ubyte, Literal[8]]
  admin: c.Array[ctypes.c_ubyte, Literal[64]]
  capability: c.Array[ctypes.c_ubyte, Literal[64]]
  request: c.Array[ctypes.c_ubyte, Literal[64]]
  active: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_pelc_reg_bits.register_fields([('op', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('op_admin', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('op_capability', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('op_request', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('op_active', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('admin', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('capability', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('request', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('active', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[128]], 320)])
@c.record
class struct_mlx5_ifc_peir_reg_bits(c.Struct):
  SIZE = 96
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[12]]
  error_count: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[12]]
  lane: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[8]]
  error_type: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_peir_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[12]], 32), ('error_count', c.Array[ctypes.c_ubyte, Literal[4]], 44), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[12]], 64), ('lane', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('error_type', c.Array[ctypes.c_ubyte, Literal[8]], 88)])
@c.record
class struct_mlx5_ifc_mpegc_reg_bits(c.Struct):
  SIZE = 352
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[48]]
  field_select: c.Array[ctypes.c_ubyte, Literal[16]]
  tx_overflow_sense: c.Array[ctypes.c_ubyte, Literal[1]]
  mark_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  mark_cnp: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_43: c.Array[ctypes.c_ubyte, Literal[27]]
  tx_lossy_overflow_oper: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_mpegc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[48]], 0), ('field_select', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('tx_overflow_sense', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('mark_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('mark_cnp', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('reserved_at_43', c.Array[ctypes.c_ubyte, Literal[27]], 67), ('tx_lossy_overflow_oper', c.Array[ctypes.c_ubyte, Literal[2]], 94), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[256]], 96)])
@c.record
class struct_mlx5_ifc_mpir_reg_bits(c.Struct):
  SIZE = 128
  sdm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[27]]
  host_buses: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mpir_reg_bits.register_fields([('sdm', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[27]], 1), ('host_buses', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum113: dict[int, str] = {(MLX5_MTUTC_FREQ_ADJ_UNITS_PPB:=0): 'MLX5_MTUTC_FREQ_ADJ_UNITS_PPB', (MLX5_MTUTC_FREQ_ADJ_UNITS_SCALED_PPM:=1): 'MLX5_MTUTC_FREQ_ADJ_UNITS_SCALED_PPM'}
_anonenum114: dict[int, str] = {(MLX5_MTUTC_OPERATION_SET_TIME_IMMEDIATE:=1): 'MLX5_MTUTC_OPERATION_SET_TIME_IMMEDIATE', (MLX5_MTUTC_OPERATION_ADJUST_TIME:=2): 'MLX5_MTUTC_OPERATION_ADJUST_TIME', (MLX5_MTUTC_OPERATION_ADJUST_FREQ_UTC:=3): 'MLX5_MTUTC_OPERATION_ADJUST_FREQ_UTC'}
@c.record
class struct_mlx5_ifc_mtutc_reg_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[5]]
  freq_adj_units: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[3]]
  log_max_freq_adjustment: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[12]]
  operation: c.Array[ctypes.c_ubyte, Literal[4]]
  freq_adjustment: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  utc_sec: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[2]]
  utc_nsec: c.Array[ctypes.c_ubyte, Literal[30]]
  time_adjustment: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mtutc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[5]], 0), ('freq_adj_units', c.Array[ctypes.c_ubyte, Literal[3]], 5), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[3]], 8), ('log_max_freq_adjustment', c.Array[ctypes.c_ubyte, Literal[5]], 11), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[12]], 16), ('operation', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('freq_adjustment', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('utc_sec', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[2]], 160), ('utc_nsec', c.Array[ctypes.c_ubyte, Literal[30]], 162), ('time_adjustment', c.Array[ctypes.c_ubyte, Literal[32]], 192)])
@c.record
class struct_mlx5_ifc_pcam_enhanced_features_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  ppcnt_recovery_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[7]]
  cable_length: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_19: c.Array[ctypes.c_ubyte, Literal[4]]
  fec_200G_per_lane_in_pplm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1e: c.Array[ctypes.c_ubyte, Literal[42]]
  fec_100G_per_lane_in_pplm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_49: c.Array[ctypes.c_ubyte, Literal[10]]
  buffer_ownership: c.Array[ctypes.c_ubyte, Literal[1]]
  resereved_at_54: c.Array[ctypes.c_ubyte, Literal[20]]
  fec_50G_per_lane_in_pplm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_69: c.Array[ctypes.c_ubyte, Literal[4]]
  rx_icrc_encapsulated_counter: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6e: c.Array[ctypes.c_ubyte, Literal[4]]
  ptys_extended_ethernet: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_73: c.Array[ctypes.c_ubyte, Literal[3]]
  pfcc_mask: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_77: c.Array[ctypes.c_ubyte, Literal[3]]
  per_lane_error_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  rx_buffer_fullness_counters: c.Array[ctypes.c_ubyte, Literal[1]]
  ptys_connector_type: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7d: c.Array[ctypes.c_ubyte, Literal[1]]
  ppcnt_discard_group: c.Array[ctypes.c_ubyte, Literal[1]]
  ppcnt_statistical_group: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_pcam_enhanced_features_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('ppcnt_recovery_counters', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[7]], 17), ('cable_length', c.Array[ctypes.c_ubyte, Literal[1]], 24), ('reserved_at_19', c.Array[ctypes.c_ubyte, Literal[4]], 25), ('fec_200G_per_lane_in_pplm', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('reserved_at_1e', c.Array[ctypes.c_ubyte, Literal[42]], 30), ('fec_100G_per_lane_in_pplm', c.Array[ctypes.c_ubyte, Literal[1]], 72), ('reserved_at_49', c.Array[ctypes.c_ubyte, Literal[10]], 73), ('buffer_ownership', c.Array[ctypes.c_ubyte, Literal[1]], 83), ('resereved_at_54', c.Array[ctypes.c_ubyte, Literal[20]], 84), ('fec_50G_per_lane_in_pplm', c.Array[ctypes.c_ubyte, Literal[1]], 104), ('reserved_at_69', c.Array[ctypes.c_ubyte, Literal[4]], 105), ('rx_icrc_encapsulated_counter', c.Array[ctypes.c_ubyte, Literal[1]], 109), ('reserved_at_6e', c.Array[ctypes.c_ubyte, Literal[4]], 110), ('ptys_extended_ethernet', c.Array[ctypes.c_ubyte, Literal[1]], 114), ('reserved_at_73', c.Array[ctypes.c_ubyte, Literal[3]], 115), ('pfcc_mask', c.Array[ctypes.c_ubyte, Literal[1]], 118), ('reserved_at_77', c.Array[ctypes.c_ubyte, Literal[3]], 119), ('per_lane_error_counters', c.Array[ctypes.c_ubyte, Literal[1]], 122), ('rx_buffer_fullness_counters', c.Array[ctypes.c_ubyte, Literal[1]], 123), ('ptys_connector_type', c.Array[ctypes.c_ubyte, Literal[1]], 124), ('reserved_at_7d', c.Array[ctypes.c_ubyte, Literal[1]], 125), ('ppcnt_discard_group', c.Array[ctypes.c_ubyte, Literal[1]], 126), ('ppcnt_statistical_group', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_pcam_regs_5000_to_507f_bits(c.Struct):
  SIZE = 128
  port_access_reg_cap_mask_127_to_96: c.Array[ctypes.c_ubyte, Literal[32]]
  port_access_reg_cap_mask_95_to_64: c.Array[ctypes.c_ubyte, Literal[32]]
  port_access_reg_cap_mask_63: c.Array[ctypes.c_ubyte, Literal[1]]
  pphcr: c.Array[ctypes.c_ubyte, Literal[1]]
  port_access_reg_cap_mask_61_to_36: c.Array[ctypes.c_ubyte, Literal[26]]
  pplm: c.Array[ctypes.c_ubyte, Literal[1]]
  port_access_reg_cap_mask_34_to_32: c.Array[ctypes.c_ubyte, Literal[3]]
  port_access_reg_cap_mask_31_to_13: c.Array[ctypes.c_ubyte, Literal[19]]
  pbmc: c.Array[ctypes.c_ubyte, Literal[1]]
  pptb: c.Array[ctypes.c_ubyte, Literal[1]]
  port_access_reg_cap_mask_10_to_09: c.Array[ctypes.c_ubyte, Literal[2]]
  ppcnt: c.Array[ctypes.c_ubyte, Literal[1]]
  port_access_reg_cap_mask_07_to_00: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_pcam_regs_5000_to_507f_bits.register_fields([('port_access_reg_cap_mask_127_to_96', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('port_access_reg_cap_mask_95_to_64', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('port_access_reg_cap_mask_63', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('pphcr', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('port_access_reg_cap_mask_61_to_36', c.Array[ctypes.c_ubyte, Literal[26]], 66), ('pplm', c.Array[ctypes.c_ubyte, Literal[1]], 92), ('port_access_reg_cap_mask_34_to_32', c.Array[ctypes.c_ubyte, Literal[3]], 93), ('port_access_reg_cap_mask_31_to_13', c.Array[ctypes.c_ubyte, Literal[19]], 96), ('pbmc', c.Array[ctypes.c_ubyte, Literal[1]], 115), ('pptb', c.Array[ctypes.c_ubyte, Literal[1]], 116), ('port_access_reg_cap_mask_10_to_09', c.Array[ctypes.c_ubyte, Literal[2]], 117), ('ppcnt', c.Array[ctypes.c_ubyte, Literal[1]], 119), ('port_access_reg_cap_mask_07_to_00', c.Array[ctypes.c_ubyte, Literal[8]], 120)])
@c.record
class struct_mlx5_ifc_pcam_reg_bits(c.Struct):
  SIZE = 640
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  feature_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  access_reg_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  port_access_reg_cap_mask: struct_mlx5_ifc_pcam_reg_bits_port_access_reg_cap_mask
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[128]]
  feature_cap_mask: struct_mlx5_ifc_pcam_reg_bits_feature_cap_mask
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[192]]
@c.record
class struct_mlx5_ifc_pcam_reg_bits_port_access_reg_cap_mask(c.Struct):
  SIZE = 128
  regs_5000_to_507f: struct_mlx5_ifc_pcam_regs_5000_to_507f_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_pcam_reg_bits_port_access_reg_cap_mask.register_fields([('regs_5000_to_507f', struct_mlx5_ifc_pcam_regs_5000_to_507f_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
@c.record
class struct_mlx5_ifc_pcam_reg_bits_feature_cap_mask(c.Struct):
  SIZE = 128
  enhanced_features: struct_mlx5_ifc_pcam_enhanced_features_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_pcam_reg_bits_feature_cap_mask.register_fields([('enhanced_features', struct_mlx5_ifc_pcam_enhanced_features_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
struct_mlx5_ifc_pcam_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('feature_group', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('access_reg_group', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('port_access_reg_cap_mask', struct_mlx5_ifc_pcam_reg_bits_port_access_reg_cap_mask, 64), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('feature_cap_mask', struct_mlx5_ifc_pcam_reg_bits_feature_cap_mask, 320), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[192]], 448)])
@c.record
class struct_mlx5_ifc_mcam_enhanced_features_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[80]]
  mtutc_freq_adj_units: c.Array[ctypes.c_ubyte, Literal[1]]
  mtutc_time_adjustment_extended_range: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_52: c.Array[ctypes.c_ubyte, Literal[11]]
  mcia_32dwords: c.Array[ctypes.c_ubyte, Literal[1]]
  out_pulse_duration_ns: c.Array[ctypes.c_ubyte, Literal[1]]
  npps_period: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[10]]
  reset_state: c.Array[ctypes.c_ubyte, Literal[1]]
  ptpcyc2realtime_modify: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6c: c.Array[ctypes.c_ubyte, Literal[2]]
  pci_status_and_power: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_6f: c.Array[ctypes.c_ubyte, Literal[5]]
  mark_tx_action_cnp: c.Array[ctypes.c_ubyte, Literal[1]]
  mark_tx_action_cqe: c.Array[ctypes.c_ubyte, Literal[1]]
  dynamic_tx_overflow: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_77: c.Array[ctypes.c_ubyte, Literal[4]]
  pcie_outbound_stalled: c.Array[ctypes.c_ubyte, Literal[1]]
  tx_overflow_buffer_pkt: c.Array[ctypes.c_ubyte, Literal[1]]
  mtpps_enh_out_per_adj: c.Array[ctypes.c_ubyte, Literal[1]]
  mtpps_fs: c.Array[ctypes.c_ubyte, Literal[1]]
  pcie_performance_group: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_mcam_enhanced_features_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[80]], 0), ('mtutc_freq_adj_units', c.Array[ctypes.c_ubyte, Literal[1]], 80), ('mtutc_time_adjustment_extended_range', c.Array[ctypes.c_ubyte, Literal[1]], 81), ('reserved_at_52', c.Array[ctypes.c_ubyte, Literal[11]], 82), ('mcia_32dwords', c.Array[ctypes.c_ubyte, Literal[1]], 93), ('out_pulse_duration_ns', c.Array[ctypes.c_ubyte, Literal[1]], 94), ('npps_period', c.Array[ctypes.c_ubyte, Literal[1]], 95), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[10]], 96), ('reset_state', c.Array[ctypes.c_ubyte, Literal[1]], 106), ('ptpcyc2realtime_modify', c.Array[ctypes.c_ubyte, Literal[1]], 107), ('reserved_at_6c', c.Array[ctypes.c_ubyte, Literal[2]], 108), ('pci_status_and_power', c.Array[ctypes.c_ubyte, Literal[1]], 110), ('reserved_at_6f', c.Array[ctypes.c_ubyte, Literal[5]], 111), ('mark_tx_action_cnp', c.Array[ctypes.c_ubyte, Literal[1]], 116), ('mark_tx_action_cqe', c.Array[ctypes.c_ubyte, Literal[1]], 117), ('dynamic_tx_overflow', c.Array[ctypes.c_ubyte, Literal[1]], 118), ('reserved_at_77', c.Array[ctypes.c_ubyte, Literal[4]], 119), ('pcie_outbound_stalled', c.Array[ctypes.c_ubyte, Literal[1]], 123), ('tx_overflow_buffer_pkt', c.Array[ctypes.c_ubyte, Literal[1]], 124), ('mtpps_enh_out_per_adj', c.Array[ctypes.c_ubyte, Literal[1]], 125), ('mtpps_fs', c.Array[ctypes.c_ubyte, Literal[1]], 126), ('pcie_performance_group', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_mcam_access_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[28]]
  mcda: c.Array[ctypes.c_ubyte, Literal[1]]
  mcc: c.Array[ctypes.c_ubyte, Literal[1]]
  mcqi: c.Array[ctypes.c_ubyte, Literal[1]]
  mcqs: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_95_to_90: c.Array[ctypes.c_ubyte, Literal[6]]
  mpir: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_88_to_87: c.Array[ctypes.c_ubyte, Literal[2]]
  mpegc: c.Array[ctypes.c_ubyte, Literal[1]]
  mtutc: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_84_to_68: c.Array[ctypes.c_ubyte, Literal[17]]
  tracer_registers: c.Array[ctypes.c_ubyte, Literal[4]]
  regs_63_to_46: c.Array[ctypes.c_ubyte, Literal[18]]
  mrtc: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_44_to_41: c.Array[ctypes.c_ubyte, Literal[4]]
  mfrl: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_39_to_32: c.Array[ctypes.c_ubyte, Literal[8]]
  regs_31_to_11: c.Array[ctypes.c_ubyte, Literal[21]]
  mtmp: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_9_to_0: c.Array[ctypes.c_ubyte, Literal[10]]
struct_mlx5_ifc_mcam_access_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[28]], 0), ('mcda', c.Array[ctypes.c_ubyte, Literal[1]], 28), ('mcc', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('mcqi', c.Array[ctypes.c_ubyte, Literal[1]], 30), ('mcqs', c.Array[ctypes.c_ubyte, Literal[1]], 31), ('regs_95_to_90', c.Array[ctypes.c_ubyte, Literal[6]], 32), ('mpir', c.Array[ctypes.c_ubyte, Literal[1]], 38), ('regs_88_to_87', c.Array[ctypes.c_ubyte, Literal[2]], 39), ('mpegc', c.Array[ctypes.c_ubyte, Literal[1]], 41), ('mtutc', c.Array[ctypes.c_ubyte, Literal[1]], 42), ('regs_84_to_68', c.Array[ctypes.c_ubyte, Literal[17]], 43), ('tracer_registers', c.Array[ctypes.c_ubyte, Literal[4]], 60), ('regs_63_to_46', c.Array[ctypes.c_ubyte, Literal[18]], 64), ('mrtc', c.Array[ctypes.c_ubyte, Literal[1]], 82), ('regs_44_to_41', c.Array[ctypes.c_ubyte, Literal[4]], 83), ('mfrl', c.Array[ctypes.c_ubyte, Literal[1]], 87), ('regs_39_to_32', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('regs_31_to_11', c.Array[ctypes.c_ubyte, Literal[21]], 96), ('mtmp', c.Array[ctypes.c_ubyte, Literal[1]], 117), ('regs_9_to_0', c.Array[ctypes.c_ubyte, Literal[10]], 118)])
@c.record
class struct_mlx5_ifc_mcam_access_reg_bits1(c.Struct):
  SIZE = 128
  regs_127_to_96: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_95_to_64: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_63_to_32: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_31_to_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mcam_access_reg_bits1.register_fields([('regs_127_to_96', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('regs_95_to_64', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('regs_63_to_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('regs_31_to_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_mcam_access_reg_bits2(c.Struct):
  SIZE = 128
  regs_127_to_99: c.Array[ctypes.c_ubyte, Literal[29]]
  mirc: c.Array[ctypes.c_ubyte, Literal[1]]
  regs_97_to_96: c.Array[ctypes.c_ubyte, Literal[2]]
  regs_95_to_87: c.Array[ctypes.c_ubyte, Literal[9]]
  synce_registers: c.Array[ctypes.c_ubyte, Literal[2]]
  regs_84_to_64: c.Array[ctypes.c_ubyte, Literal[21]]
  regs_63_to_32: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_31_to_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mcam_access_reg_bits2.register_fields([('regs_127_to_99', c.Array[ctypes.c_ubyte, Literal[29]], 0), ('mirc', c.Array[ctypes.c_ubyte, Literal[1]], 29), ('regs_97_to_96', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('regs_95_to_87', c.Array[ctypes.c_ubyte, Literal[9]], 32), ('synce_registers', c.Array[ctypes.c_ubyte, Literal[2]], 41), ('regs_84_to_64', c.Array[ctypes.c_ubyte, Literal[21]], 43), ('regs_63_to_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('regs_31_to_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_mcam_access_reg_bits3(c.Struct):
  SIZE = 128
  regs_127_to_96: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_95_to_64: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_63_to_32: c.Array[ctypes.c_ubyte, Literal[32]]
  regs_31_to_3: c.Array[ctypes.c_ubyte, Literal[29]]
  mrtcq: c.Array[ctypes.c_ubyte, Literal[1]]
  mtctr: c.Array[ctypes.c_ubyte, Literal[1]]
  mtptm: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_mcam_access_reg_bits3.register_fields([('regs_127_to_96', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('regs_95_to_64', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('regs_63_to_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('regs_31_to_3', c.Array[ctypes.c_ubyte, Literal[29]], 96), ('mrtcq', c.Array[ctypes.c_ubyte, Literal[1]], 125), ('mtctr', c.Array[ctypes.c_ubyte, Literal[1]], 126), ('mtptm', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_mcam_reg_bits(c.Struct):
  SIZE = 576
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  feature_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  access_reg_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  mng_access_reg_cap_mask: struct_mlx5_ifc_mcam_reg_bits_mng_access_reg_cap_mask
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[128]]
  mng_feature_cap_mask: struct_mlx5_ifc_mcam_reg_bits_mng_feature_cap_mask
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[128]]
@c.record
class struct_mlx5_ifc_mcam_reg_bits_mng_access_reg_cap_mask(c.Struct):
  SIZE = 128
  access_regs: struct_mlx5_ifc_mcam_access_reg_bits
  access_regs1: struct_mlx5_ifc_mcam_access_reg_bits1
  access_regs2: struct_mlx5_ifc_mcam_access_reg_bits2
  access_regs3: struct_mlx5_ifc_mcam_access_reg_bits3
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_mcam_reg_bits_mng_access_reg_cap_mask.register_fields([('access_regs', struct_mlx5_ifc_mcam_access_reg_bits, 0), ('access_regs1', struct_mlx5_ifc_mcam_access_reg_bits1, 0), ('access_regs2', struct_mlx5_ifc_mcam_access_reg_bits2, 0), ('access_regs3', struct_mlx5_ifc_mcam_access_reg_bits3, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
@c.record
class struct_mlx5_ifc_mcam_reg_bits_mng_feature_cap_mask(c.Struct):
  SIZE = 128
  enhanced_features: struct_mlx5_ifc_mcam_enhanced_features_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_mcam_reg_bits_mng_feature_cap_mask.register_fields([('enhanced_features', struct_mlx5_ifc_mcam_enhanced_features_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
struct_mlx5_ifc_mcam_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('feature_group', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('access_reg_group', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('mng_access_reg_cap_mask', struct_mlx5_ifc_mcam_reg_bits_mng_access_reg_cap_mask, 64), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('mng_feature_cap_mask', struct_mlx5_ifc_mcam_reg_bits_mng_feature_cap_mask, 320), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[128]], 448)])
@c.record
class struct_mlx5_ifc_qcam_access_reg_cap_mask(c.Struct):
  SIZE = 128
  qcam_access_reg_cap_mask_127_to_20: c.Array[ctypes.c_ubyte, Literal[108]]
  qpdpm: c.Array[ctypes.c_ubyte, Literal[1]]
  qcam_access_reg_cap_mask_18_to_4: c.Array[ctypes.c_ubyte, Literal[15]]
  qdpm: c.Array[ctypes.c_ubyte, Literal[1]]
  qpts: c.Array[ctypes.c_ubyte, Literal[1]]
  qcap: c.Array[ctypes.c_ubyte, Literal[1]]
  qcam_access_reg_cap_mask_0: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_qcam_access_reg_cap_mask.register_fields([('qcam_access_reg_cap_mask_127_to_20', c.Array[ctypes.c_ubyte, Literal[108]], 0), ('qpdpm', c.Array[ctypes.c_ubyte, Literal[1]], 108), ('qcam_access_reg_cap_mask_18_to_4', c.Array[ctypes.c_ubyte, Literal[15]], 109), ('qdpm', c.Array[ctypes.c_ubyte, Literal[1]], 124), ('qpts', c.Array[ctypes.c_ubyte, Literal[1]], 125), ('qcap', c.Array[ctypes.c_ubyte, Literal[1]], 126), ('qcam_access_reg_cap_mask_0', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_qcam_qos_feature_cap_mask(c.Struct):
  SIZE = 128
  qcam_qos_feature_cap_mask_127_to_1: c.Array[ctypes.c_ubyte, Literal[127]]
  qpts_trust_both: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_qcam_qos_feature_cap_mask.register_fields([('qcam_qos_feature_cap_mask_127_to_1', c.Array[ctypes.c_ubyte, Literal[127]], 0), ('qpts_trust_both', c.Array[ctypes.c_ubyte, Literal[1]], 127)])
@c.record
class struct_mlx5_ifc_qcam_reg_bits(c.Struct):
  SIZE = 576
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  feature_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  access_reg_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  qos_access_reg_cap_mask: struct_mlx5_ifc_qcam_reg_bits_qos_access_reg_cap_mask
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[128]]
  qos_feature_cap_mask: struct_mlx5_ifc_qcam_reg_bits_qos_feature_cap_mask
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[128]]
@c.record
class struct_mlx5_ifc_qcam_reg_bits_qos_access_reg_cap_mask(c.Struct):
  SIZE = 128
  reg_cap: struct_mlx5_ifc_qcam_access_reg_cap_mask
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_qcam_reg_bits_qos_access_reg_cap_mask.register_fields([('reg_cap', struct_mlx5_ifc_qcam_access_reg_cap_mask, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
@c.record
class struct_mlx5_ifc_qcam_reg_bits_qos_feature_cap_mask(c.Struct):
  SIZE = 128
  feature_cap: struct_mlx5_ifc_qcam_qos_feature_cap_mask
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_qcam_reg_bits_qos_feature_cap_mask.register_fields([('feature_cap', struct_mlx5_ifc_qcam_qos_feature_cap_mask, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0)])
struct_mlx5_ifc_qcam_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('feature_group', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('access_reg_group', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('qos_access_reg_cap_mask', struct_mlx5_ifc_qcam_reg_bits_qos_access_reg_cap_mask, 64), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('qos_feature_cap_mask', struct_mlx5_ifc_qcam_reg_bits_qos_feature_cap_mask, 320), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[128]], 448)])
@c.record
class struct_mlx5_ifc_core_dump_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24]]
  core_dump_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[48]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_core_dump_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('core_dump_type', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[48]], 32), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('qpn', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_pcap_reg_bits(c.Struct):
  SIZE = 160
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  port_capability_mask: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
struct_mlx5_ifc_pcap_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('port_capability_mask', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 32)])
@c.record
class struct_mlx5_ifc_paos_reg_bits(c.Struct):
  SIZE = 128
  swid: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[4]]
  admin_status: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[4]]
  oper_status: c.Array[ctypes.c_ubyte, Literal[4]]
  ase: c.Array[ctypes.c_ubyte, Literal[1]]
  ee: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[28]]
  e: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_paos_reg_bits.register_fields([('swid', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[4]], 16), ('admin_status', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('oper_status', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('ase', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('ee', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[28]], 34), ('e', c.Array[ctypes.c_ubyte, Literal[2]], 62), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_pamp_reg_bits(c.Struct):
  SIZE = 352
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  opamp_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[12]]
  opamp_group_type: c.Array[ctypes.c_ubyte, Literal[4]]
  start_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[4]]
  num_of_indices: c.Array[ctypes.c_ubyte, Literal[12]]
  index_data: c.Array[c.Array[ctypes.c_ubyte, Literal[16]], Literal[18]]
struct_mlx5_ifc_pamp_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('opamp_group', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[12]], 16), ('opamp_group_type', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('start_index', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[4]], 48), ('num_of_indices', c.Array[ctypes.c_ubyte, Literal[12]], 52), ('index_data', c.Array[c.Array[ctypes.c_ubyte, Literal[16]], Literal[18]], 64)])
@c.record
class struct_mlx5_ifc_pcmr_reg_bits(c.Struct):
  SIZE = 96
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  entropy_force_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  entropy_calc_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  entropy_gre_calc_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_23: c.Array[ctypes.c_ubyte, Literal[15]]
  rx_ts_over_crc_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_33: c.Array[ctypes.c_ubyte, Literal[11]]
  fcs_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3f: c.Array[ctypes.c_ubyte, Literal[1]]
  entropy_force: c.Array[ctypes.c_ubyte, Literal[1]]
  entropy_calc: c.Array[ctypes.c_ubyte, Literal[1]]
  entropy_gre_calc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_43: c.Array[ctypes.c_ubyte, Literal[15]]
  rx_ts_over_crc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_53: c.Array[ctypes.c_ubyte, Literal[11]]
  fcs_chk: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5f: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_pcmr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('entropy_force_cap', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('entropy_calc_cap', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('entropy_gre_calc_cap', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('reserved_at_23', c.Array[ctypes.c_ubyte, Literal[15]], 35), ('rx_ts_over_crc_cap', c.Array[ctypes.c_ubyte, Literal[1]], 50), ('reserved_at_33', c.Array[ctypes.c_ubyte, Literal[11]], 51), ('fcs_cap', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('reserved_at_3f', c.Array[ctypes.c_ubyte, Literal[1]], 63), ('entropy_force', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('entropy_calc', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('entropy_gre_calc', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('reserved_at_43', c.Array[ctypes.c_ubyte, Literal[15]], 67), ('rx_ts_over_crc', c.Array[ctypes.c_ubyte, Literal[1]], 82), ('reserved_at_53', c.Array[ctypes.c_ubyte, Literal[11]], 83), ('fcs_chk', c.Array[ctypes.c_ubyte, Literal[1]], 94), ('reserved_at_5f', c.Array[ctypes.c_ubyte, Literal[1]], 95)])
@c.record
class struct_mlx5_ifc_lane_2_module_mapping_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  rx_lane: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[4]]
  tx_lane: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  module: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_lane_2_module_mapping_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('rx_lane', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[4]], 8), ('tx_lane', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('module', c.Array[ctypes.c_ubyte, Literal[8]], 24)])
@c.record
class struct_mlx5_ifc_bufferx_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[6]]
  lossy: c.Array[ctypes.c_ubyte, Literal[1]]
  epsb: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[8]]
  size: c.Array[ctypes.c_ubyte, Literal[16]]
  xoff_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  xon_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_bufferx_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[6]], 0), ('lossy', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('epsb', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('size', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('xoff_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('xon_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 48)])
@c.record
class struct_mlx5_ifc_set_node_in_bits(c.Struct):
  SIZE = 512
  node_description: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]]
struct_mlx5_ifc_set_node_in_bits.register_fields([('node_description', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[64]], 0)])
@c.record
class struct_mlx5_ifc_register_power_settings_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24]]
  power_settings_level: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_register_power_settings_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('power_settings_level', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
@c.record
class struct_mlx5_ifc_register_host_endianness_bits(c.Struct):
  SIZE = 128
  he: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_register_host_endianness_bits.register_fields([('he', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[31]], 1), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
@c.record
class struct_mlx5_ifc_umr_pointer_desc_argument_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  addressh_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  addressl_31_0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_umr_pointer_desc_argument_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('mkey', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('addressh_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('addressl_31_0', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_ud_adrs_vector_bits(c.Struct):
  SIZE = 384
  dc_key: c.Array[ctypes.c_ubyte, Literal[64]]
  ext: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[7]]
  destination_qp_dct: c.Array[ctypes.c_ubyte, Literal[24]]
  static_rate: c.Array[ctypes.c_ubyte, Literal[4]]
  sl_eth_prio: c.Array[ctypes.c_ubyte, Literal[4]]
  fl: c.Array[ctypes.c_ubyte, Literal[1]]
  mlid: c.Array[ctypes.c_ubyte, Literal[7]]
  rlid_udp_sport: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[32]]
  rmac_47_16: c.Array[ctypes.c_ubyte, Literal[32]]
  rmac_15_0: c.Array[ctypes.c_ubyte, Literal[16]]
  tclass: c.Array[ctypes.c_ubyte, Literal[8]]
  hop_limit: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[1]]
  grh: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e2: c.Array[ctypes.c_ubyte, Literal[2]]
  src_addr_index: c.Array[ctypes.c_ubyte, Literal[8]]
  flow_label: c.Array[ctypes.c_ubyte, Literal[20]]
  rgid_rip: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
struct_mlx5_ifc_ud_adrs_vector_bits.register_fields([('dc_key', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('ext', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[7]], 65), ('destination_qp_dct', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('static_rate', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('sl_eth_prio', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('fl', c.Array[ctypes.c_ubyte, Literal[1]], 104), ('mlid', c.Array[ctypes.c_ubyte, Literal[7]], 105), ('rlid_udp_sport', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('rmac_47_16', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('rmac_15_0', c.Array[ctypes.c_ubyte, Literal[16]], 192), ('tclass', c.Array[ctypes.c_ubyte, Literal[8]], 208), ('hop_limit', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[1]], 224), ('grh', c.Array[ctypes.c_ubyte, Literal[1]], 225), ('reserved_at_e2', c.Array[ctypes.c_ubyte, Literal[2]], 226), ('src_addr_index', c.Array[ctypes.c_ubyte, Literal[8]], 228), ('flow_label', c.Array[ctypes.c_ubyte, Literal[20]], 236), ('rgid_rip', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 256)])
@c.record
class struct_mlx5_ifc_pages_req_event_bits(c.Struct):
  SIZE = 224
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  num_pages: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_pages_req_event_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('num_pages', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[160]], 64)])
@c.record
class struct_mlx5_ifc_eqe_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  event_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  event_sub_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[224]]
  event_data: union_mlx5_ifc_event_auto_bits
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[16]]
  signature: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1f8: c.Array[ctypes.c_ubyte, Literal[7]]
  owner: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_eqe_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('event_type', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('event_sub_type', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[224]], 32), ('event_data', union_mlx5_ifc_event_auto_bits, 256), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[16]], 480), ('signature', c.Array[ctypes.c_ubyte, Literal[8]], 496), ('reserved_at_1f8', c.Array[ctypes.c_ubyte, Literal[7]], 504), ('owner', c.Array[ctypes.c_ubyte, Literal[1]], 511)])
_anonenum115: dict[int, str] = {(MLX5_CMD_QUEUE_ENTRY_TYPE_PCIE_CMD_IF_TRANSPORT:=7): 'MLX5_CMD_QUEUE_ENTRY_TYPE_PCIE_CMD_IF_TRANSPORT'}
@c.record
class struct_mlx5_ifc_cmd_queue_entry_bits(c.Struct):
  SIZE = 512
  type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  input_length: c.Array[ctypes.c_ubyte, Literal[32]]
  input_mailbox_pointer_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  input_mailbox_pointer_31_9: c.Array[ctypes.c_ubyte, Literal[23]]
  reserved_at_77: c.Array[ctypes.c_ubyte, Literal[9]]
  command_input_inline_data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
  command_output_inline_data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]]
  output_mailbox_pointer_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  output_mailbox_pointer_31_9: c.Array[ctypes.c_ubyte, Literal[23]]
  reserved_at_1b7: c.Array[ctypes.c_ubyte, Literal[9]]
  output_length: c.Array[ctypes.c_ubyte, Literal[32]]
  token: c.Array[ctypes.c_ubyte, Literal[8]]
  signature: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_1f0: c.Array[ctypes.c_ubyte, Literal[8]]
  status: c.Array[ctypes.c_ubyte, Literal[7]]
  ownership: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_cmd_queue_entry_bits.register_fields([('type', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('input_length', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('input_mailbox_pointer_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('input_mailbox_pointer_31_9', c.Array[ctypes.c_ubyte, Literal[23]], 96), ('reserved_at_77', c.Array[ctypes.c_ubyte, Literal[9]], 119), ('command_input_inline_data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 128), ('command_output_inline_data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[16]], 256), ('output_mailbox_pointer_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('output_mailbox_pointer_31_9', c.Array[ctypes.c_ubyte, Literal[23]], 416), ('reserved_at_1b7', c.Array[ctypes.c_ubyte, Literal[9]], 439), ('output_length', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('token', c.Array[ctypes.c_ubyte, Literal[8]], 480), ('signature', c.Array[ctypes.c_ubyte, Literal[8]], 488), ('reserved_at_1f0', c.Array[ctypes.c_ubyte, Literal[8]], 496), ('status', c.Array[ctypes.c_ubyte, Literal[7]], 504), ('ownership', c.Array[ctypes.c_ubyte, Literal[1]], 511)])
@c.record
class struct_mlx5_ifc_cmd_out_bits(c.Struct):
  SIZE = 96
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  command_output: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_cmd_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('command_output', c.Array[ctypes.c_ubyte, Literal[32]], 64)])
@c.record
class struct_mlx5_ifc_cmd_in_bits(c.Struct):
  SIZE = 64
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  command: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_cmd_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('command', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 64)])
@c.record
class struct_mlx5_ifc_cmd_if_box_bits(c.Struct):
  SIZE = 4608
  mailbox_data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[512]]
  reserved_at_1000: c.Array[ctypes.c_ubyte, Literal[384]]
  next_pointer_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  next_pointer_31_10: c.Array[ctypes.c_ubyte, Literal[22]]
  reserved_at_11b6: c.Array[ctypes.c_ubyte, Literal[10]]
  block_number: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_11e0: c.Array[ctypes.c_ubyte, Literal[8]]
  token: c.Array[ctypes.c_ubyte, Literal[8]]
  ctrl_signature: c.Array[ctypes.c_ubyte, Literal[8]]
  signature: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_cmd_if_box_bits.register_fields([('mailbox_data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[512]], 0), ('reserved_at_1000', c.Array[ctypes.c_ubyte, Literal[384]], 4096), ('next_pointer_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 4480), ('next_pointer_31_10', c.Array[ctypes.c_ubyte, Literal[22]], 4512), ('reserved_at_11b6', c.Array[ctypes.c_ubyte, Literal[10]], 4534), ('block_number', c.Array[ctypes.c_ubyte, Literal[32]], 4544), ('reserved_at_11e0', c.Array[ctypes.c_ubyte, Literal[8]], 4576), ('token', c.Array[ctypes.c_ubyte, Literal[8]], 4584), ('ctrl_signature', c.Array[ctypes.c_ubyte, Literal[8]], 4592), ('signature', c.Array[ctypes.c_ubyte, Literal[8]], 4600)])
@c.record
class struct_mlx5_ifc_mtt_bits(c.Struct):
  SIZE = 64
  ptag_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  ptag_31_8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[6]]
  wr_en: c.Array[ctypes.c_ubyte, Literal[1]]
  rd_en: c.Array[ctypes.c_ubyte, Literal[1]]
struct_mlx5_ifc_mtt_bits.register_fields([('ptag_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('ptag_31_8', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[6]], 56), ('wr_en', c.Array[ctypes.c_ubyte, Literal[1]], 62), ('rd_en', c.Array[ctypes.c_ubyte, Literal[1]], 63)])
@c.record
class struct_mlx5_ifc_query_wol_rol_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  rol_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  wol_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_wol_rol_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('rol_mode', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('wol_mode', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_wol_rol_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_wol_rol_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_wol_rol_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_wol_rol_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_wol_rol_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  rol_mode_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  wol_mode_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[14]]
  rol_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  wol_mode: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_set_wol_rol_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('rol_mode_valid', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('wol_mode_valid', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[14]], 66), ('rol_mode', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('wol_mode', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
_anonenum116: dict[int, str] = {(MLX5_INITIAL_SEG_NIC_INTERFACE_FULL_DRIVER:=0): 'MLX5_INITIAL_SEG_NIC_INTERFACE_FULL_DRIVER', (MLX5_INITIAL_SEG_NIC_INTERFACE_DISABLED:=1): 'MLX5_INITIAL_SEG_NIC_INTERFACE_DISABLED', (MLX5_INITIAL_SEG_NIC_INTERFACE_NO_DRAM_NIC:=2): 'MLX5_INITIAL_SEG_NIC_INTERFACE_NO_DRAM_NIC', (MLX5_INITIAL_SEG_NIC_INTERFACE_SW_RESET:=7): 'MLX5_INITIAL_SEG_NIC_INTERFACE_SW_RESET'}
_anonenum117: dict[int, str] = {(MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_FULL_DRIVER:=0): 'MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_FULL_DRIVER', (MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_DISABLED:=1): 'MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_DISABLED', (MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_NO_DRAM_NIC:=2): 'MLX5_INITIAL_SEG_NIC_INTERFACE_SUPPORTED_NO_DRAM_NIC'}
_anonenum118: dict[int, str] = {(MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_INTERNAL_ERR:=1): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_INTERNAL_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_DEAD_IRISC:=7): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_DEAD_IRISC', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_HW_FATAL_ERR:=8): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_HW_FATAL_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_CRC_ERR:=9): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_FW_CRC_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_FETCH_PCI_ERR:=10): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_FETCH_PCI_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_PAGE_ERR:=11): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_PAGE_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_ASYNCHRONOUS_EQ_BUF_OVERRUN:=12): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_ASYNCHRONOUS_EQ_BUF_OVERRUN', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_IN_ERR:=13): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_IN_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_INV:=14): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_EQ_INV', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_FFSER_ERR:=15): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_FFSER_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_HIGH_TEMP_ERR:=16): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_HIGH_TEMP_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_PCI_POISONED_ERR:=18): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_ICM_PCI_POISONED_ERR', (MLX5_INITIAL_SEG_HEALTH_SYNDROME_TRUST_LOCKDOWN_ERR:=19): 'MLX5_INITIAL_SEG_HEALTH_SYNDROME_TRUST_LOCKDOWN_ERR'}
@c.record
class struct_mlx5_ifc_initial_seg_bits(c.Struct):
  SIZE = 131168
  fw_rev_minor: c.Array[ctypes.c_ubyte, Literal[16]]
  fw_rev_major: c.Array[ctypes.c_ubyte, Literal[16]]
  cmd_interface_rev: c.Array[ctypes.c_ubyte, Literal[16]]
  fw_rev_subminor: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  cmdq_phy_addr_63_32: c.Array[ctypes.c_ubyte, Literal[32]]
  cmdq_phy_addr_31_12: c.Array[ctypes.c_ubyte, Literal[20]]
  reserved_at_b4: c.Array[ctypes.c_ubyte, Literal[2]]
  nic_interface: c.Array[ctypes.c_ubyte, Literal[2]]
  log_cmdq_size: c.Array[ctypes.c_ubyte, Literal[4]]
  log_cmdq_stride: c.Array[ctypes.c_ubyte, Literal[4]]
  command_doorbell_vector: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[3840]]
  initializing: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_fe1: c.Array[ctypes.c_ubyte, Literal[4]]
  nic_interface_supported: c.Array[ctypes.c_ubyte, Literal[3]]
  embedded_cpu: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_fe9: c.Array[ctypes.c_ubyte, Literal[23]]
  health_buffer: struct_mlx5_ifc_health_buffer_bits
  no_dram_nic_offset: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1220: c.Array[ctypes.c_ubyte, Literal[28224]]
  reserved_at_8060: c.Array[ctypes.c_ubyte, Literal[31]]
  clear_int: c.Array[ctypes.c_ubyte, Literal[1]]
  health_syndrome: c.Array[ctypes.c_ubyte, Literal[8]]
  health_counter: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80a0: c.Array[ctypes.c_ubyte, Literal[98240]]
struct_mlx5_ifc_initial_seg_bits.register_fields([('fw_rev_minor', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('fw_rev_major', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('cmd_interface_rev', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('fw_rev_subminor', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('cmdq_phy_addr_63_32', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('cmdq_phy_addr_31_12', c.Array[ctypes.c_ubyte, Literal[20]], 160), ('reserved_at_b4', c.Array[ctypes.c_ubyte, Literal[2]], 180), ('nic_interface', c.Array[ctypes.c_ubyte, Literal[2]], 182), ('log_cmdq_size', c.Array[ctypes.c_ubyte, Literal[4]], 184), ('log_cmdq_stride', c.Array[ctypes.c_ubyte, Literal[4]], 188), ('command_doorbell_vector', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[3840]], 224), ('initializing', c.Array[ctypes.c_ubyte, Literal[1]], 4064), ('reserved_at_fe1', c.Array[ctypes.c_ubyte, Literal[4]], 4065), ('nic_interface_supported', c.Array[ctypes.c_ubyte, Literal[3]], 4069), ('embedded_cpu', c.Array[ctypes.c_ubyte, Literal[1]], 4072), ('reserved_at_fe9', c.Array[ctypes.c_ubyte, Literal[23]], 4073), ('health_buffer', struct_mlx5_ifc_health_buffer_bits, 4096), ('no_dram_nic_offset', c.Array[ctypes.c_ubyte, Literal[32]], 4608), ('reserved_at_1220', c.Array[ctypes.c_ubyte, Literal[28224]], 4640), ('reserved_at_8060', c.Array[ctypes.c_ubyte, Literal[31]], 32864), ('clear_int', c.Array[ctypes.c_ubyte, Literal[1]], 32895), ('health_syndrome', c.Array[ctypes.c_ubyte, Literal[8]], 32896), ('health_counter', c.Array[ctypes.c_ubyte, Literal[24]], 32904), ('reserved_at_80a0', c.Array[ctypes.c_ubyte, Literal[98240]], 32928)])
@c.record
class struct_mlx5_ifc_mtpps_reg_bits(c.Struct):
  SIZE = 480
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[12]]
  cap_number_of_pps_pins: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_max_num_of_pps_in_pins: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_max_num_of_pps_out_pins: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[19]]
  cap_log_min_npps_period: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[3]]
  cap_log_min_out_pulse_duration_ns: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_3_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_2_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_1_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_0_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_7_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_6_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_5_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_78: c.Array[ctypes.c_ubyte, Literal[4]]
  cap_pin_4_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  npps_period: c.Array[ctypes.c_ubyte, Literal[64]]
  enable: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_101: c.Array[ctypes.c_ubyte, Literal[11]]
  pattern: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_110: c.Array[ctypes.c_ubyte, Literal[4]]
  pin_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  pin: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[2]]
  out_pulse_duration_ns: c.Array[ctypes.c_ubyte, Literal[30]]
  time_stamp: c.Array[ctypes.c_ubyte, Literal[64]]
  out_pulse_duration: c.Array[ctypes.c_ubyte, Literal[16]]
  out_periodic_adjustment: c.Array[ctypes.c_ubyte, Literal[16]]
  enhanced_out_periodic_adjustment: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mtpps_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[12]], 0), ('cap_number_of_pps_pins', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[4]], 16), ('cap_max_num_of_pps_in_pins', c.Array[ctypes.c_ubyte, Literal[4]], 20), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[4]], 24), ('cap_max_num_of_pps_out_pins', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[19]], 32), ('cap_log_min_npps_period', c.Array[ctypes.c_ubyte, Literal[5]], 51), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[3]], 56), ('cap_log_min_out_pulse_duration_ns', c.Array[ctypes.c_ubyte, Literal[5]], 59), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('cap_pin_3_mode', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[4]], 72), ('cap_pin_2_mode', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[4]], 80), ('cap_pin_1_mode', c.Array[ctypes.c_ubyte, Literal[4]], 84), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('cap_pin_0_mode', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('cap_pin_7_mode', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[4]], 104), ('cap_pin_6_mode', c.Array[ctypes.c_ubyte, Literal[4]], 108), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[4]], 112), ('cap_pin_5_mode', c.Array[ctypes.c_ubyte, Literal[4]], 116), ('reserved_at_78', c.Array[ctypes.c_ubyte, Literal[4]], 120), ('cap_pin_4_mode', c.Array[ctypes.c_ubyte, Literal[4]], 124), ('field_select', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('npps_period', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('enable', c.Array[ctypes.c_ubyte, Literal[1]], 256), ('reserved_at_101', c.Array[ctypes.c_ubyte, Literal[11]], 257), ('pattern', c.Array[ctypes.c_ubyte, Literal[4]], 268), ('reserved_at_110', c.Array[ctypes.c_ubyte, Literal[4]], 272), ('pin_mode', c.Array[ctypes.c_ubyte, Literal[4]], 276), ('pin', c.Array[ctypes.c_ubyte, Literal[8]], 280), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[2]], 288), ('out_pulse_duration_ns', c.Array[ctypes.c_ubyte, Literal[30]], 290), ('time_stamp', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('out_pulse_duration', c.Array[ctypes.c_ubyte, Literal[16]], 384), ('out_periodic_adjustment', c.Array[ctypes.c_ubyte, Literal[16]], 400), ('enhanced_out_periodic_adjustment', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[32]], 448)])
@c.record
class struct_mlx5_ifc_mtppse_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24]]
  pin: c.Array[ctypes.c_ubyte, Literal[8]]
  event_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[27]]
  event_generation_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_mtppse_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('pin', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('event_arm', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[27]], 33), ('event_generation_mode', c.Array[ctypes.c_ubyte, Literal[4]], 60), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_mcqs_reg_bits(c.Struct):
  SIZE = 128
  last_index_flag: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[7]]
  fw_device: c.Array[ctypes.c_ubyte, Literal[8]]
  component_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  identifier: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[23]]
  component_status: c.Array[ctypes.c_ubyte, Literal[5]]
  component_update_state: c.Array[ctypes.c_ubyte, Literal[4]]
  last_update_state_changer_type: c.Array[ctypes.c_ubyte, Literal[4]]
  last_update_state_changer_host_id: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_mcqs_reg_bits.register_fields([('last_index_flag', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[7]], 1), ('fw_device', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('component_index', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('identifier', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[23]], 64), ('component_status', c.Array[ctypes.c_ubyte, Literal[5]], 87), ('component_update_state', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('last_update_state_changer_type', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('last_update_state_changer_host_id', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[24]], 104)])
@c.record
class struct_mlx5_ifc_mcqi_cap_bits(c.Struct):
  SIZE = 160
  supported_info_bitmask: c.Array[ctypes.c_ubyte, Literal[32]]
  component_size: c.Array[ctypes.c_ubyte, Literal[32]]
  max_component_size: c.Array[ctypes.c_ubyte, Literal[32]]
  log_mcda_word_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_64: c.Array[ctypes.c_ubyte, Literal[12]]
  mcda_max_write_size: c.Array[ctypes.c_ubyte, Literal[16]]
  rd_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_81: c.Array[ctypes.c_ubyte, Literal[1]]
  match_chip_id: c.Array[ctypes.c_ubyte, Literal[1]]
  match_psid: c.Array[ctypes.c_ubyte, Literal[1]]
  check_user_timestamp: c.Array[ctypes.c_ubyte, Literal[1]]
  match_base_guid_mac: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_86: c.Array[ctypes.c_ubyte, Literal[26]]
struct_mlx5_ifc_mcqi_cap_bits.register_fields([('supported_info_bitmask', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('component_size', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('max_component_size', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('log_mcda_word_size', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('reserved_at_64', c.Array[ctypes.c_ubyte, Literal[12]], 100), ('mcda_max_write_size', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('rd_en', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('reserved_at_81', c.Array[ctypes.c_ubyte, Literal[1]], 129), ('match_chip_id', c.Array[ctypes.c_ubyte, Literal[1]], 130), ('match_psid', c.Array[ctypes.c_ubyte, Literal[1]], 131), ('check_user_timestamp', c.Array[ctypes.c_ubyte, Literal[1]], 132), ('match_base_guid_mac', c.Array[ctypes.c_ubyte, Literal[1]], 133), ('reserved_at_86', c.Array[ctypes.c_ubyte, Literal[26]], 134)])
@c.record
class struct_mlx5_ifc_mcqi_version_bits(c.Struct):
  SIZE = 992
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[2]]
  build_time_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  user_defined_time_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[20]]
  version_string_length: c.Array[ctypes.c_ubyte, Literal[8]]
  version: c.Array[ctypes.c_ubyte, Literal[32]]
  build_time: c.Array[ctypes.c_ubyte, Literal[64]]
  user_defined_time: c.Array[ctypes.c_ubyte, Literal[64]]
  build_tool_version: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  version_string: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[92]]
struct_mlx5_ifc_mcqi_version_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('build_time_valid', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('user_defined_time_valid', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[20]], 4), ('version_string_length', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('version', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('build_time', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('user_defined_time', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('build_tool_version', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('version_string', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[92]], 256)])
@c.record
class struct_mlx5_ifc_mcqi_activation_method_bits(c.Struct):
  SIZE = 32
  pending_server_ac_power_cycle: c.Array[ctypes.c_ubyte, Literal[1]]
  pending_server_dc_power_cycle: c.Array[ctypes.c_ubyte, Literal[1]]
  pending_server_reboot: c.Array[ctypes.c_ubyte, Literal[1]]
  pending_fw_reset: c.Array[ctypes.c_ubyte, Literal[1]]
  auto_activate: c.Array[ctypes.c_ubyte, Literal[1]]
  all_hosts_sync: c.Array[ctypes.c_ubyte, Literal[1]]
  device_hw_reset: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_7: c.Array[ctypes.c_ubyte, Literal[25]]
struct_mlx5_ifc_mcqi_activation_method_bits.register_fields([('pending_server_ac_power_cycle', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('pending_server_dc_power_cycle', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('pending_server_reboot', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('pending_fw_reset', c.Array[ctypes.c_ubyte, Literal[1]], 3), ('auto_activate', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('all_hosts_sync', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('device_hw_reset', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('reserved_at_7', c.Array[ctypes.c_ubyte, Literal[25]], 7)])
@c.record
class union_mlx5_ifc_mcqi_reg_data_bits(c.Struct):
  SIZE = 992
  mcqi_caps: struct_mlx5_ifc_mcqi_cap_bits
  mcqi_version: struct_mlx5_ifc_mcqi_version_bits
  mcqi_activation_mathod: struct_mlx5_ifc_mcqi_activation_method_bits
union_mlx5_ifc_mcqi_reg_data_bits.register_fields([('mcqi_caps', struct_mlx5_ifc_mcqi_cap_bits, 0), ('mcqi_version', struct_mlx5_ifc_mcqi_version_bits, 0), ('mcqi_activation_mathod', struct_mlx5_ifc_mcqi_activation_method_bits, 0)])
@c.record
class struct_mlx5_ifc_mcqi_reg_bits(c.Struct):
  SIZE = 192
  read_pending_component: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[15]]
  component_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[27]]
  info_type: c.Array[ctypes.c_ubyte, Literal[5]]
  info_size: c.Array[ctypes.c_ubyte, Literal[32]]
  offset: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[16]]
  data_size: c.Array[ctypes.c_ubyte, Literal[16]]
  data: c.Array[union_mlx5_ifc_mcqi_reg_data_bits, Literal[0]]
struct_mlx5_ifc_mcqi_reg_bits.register_fields([('read_pending_component', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[15]], 1), ('component_index', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[27]], 64), ('info_type', c.Array[ctypes.c_ubyte, Literal[5]], 91), ('info_size', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('offset', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('data_size', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('data', c.Array[union_mlx5_ifc_mcqi_reg_data_bits, Literal[0]], 192)])
@c.record
class struct_mlx5_ifc_mcc_reg_bits(c.Struct):
  SIZE = 256
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[4]]
  time_elapsed_since_last_cmd: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  instruction: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  component_index: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  update_handle: c.Array[ctypes.c_ubyte, Literal[24]]
  handle_owner_type: c.Array[ctypes.c_ubyte, Literal[4]]
  handle_owner_host_id: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[1]]
  control_progress: c.Array[ctypes.c_ubyte, Literal[7]]
  error_code: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_78: c.Array[ctypes.c_ubyte, Literal[4]]
  control_state: c.Array[ctypes.c_ubyte, Literal[4]]
  component_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_mcc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('time_elapsed_since_last_cmd', c.Array[ctypes.c_ubyte, Literal[12]], 4), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('instruction', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('component_index', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('update_handle', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('handle_owner_type', c.Array[ctypes.c_ubyte, Literal[4]], 96), ('handle_owner_host_id', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[1]], 104), ('control_progress', c.Array[ctypes.c_ubyte, Literal[7]], 105), ('error_code', c.Array[ctypes.c_ubyte, Literal[8]], 112), ('reserved_at_78', c.Array[ctypes.c_ubyte, Literal[4]], 120), ('control_state', c.Array[ctypes.c_ubyte, Literal[4]], 124), ('component_size', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[96]], 160)])
@c.record
class struct_mlx5_ifc_mcda_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  update_handle: c.Array[ctypes.c_ubyte, Literal[24]]
  offset: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  data: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]]
struct_mlx5_ifc_mcda_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('update_handle', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('offset', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('size', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('data', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[0]], 128)])
_anonenum119: dict[int, str] = {(MLX5_MFRL_REG_PCI_RESET_METHOD_LINK_TOGGLE:=0): 'MLX5_MFRL_REG_PCI_RESET_METHOD_LINK_TOGGLE', (MLX5_MFRL_REG_PCI_RESET_METHOD_HOT_RESET:=1): 'MLX5_MFRL_REG_PCI_RESET_METHOD_HOT_RESET'}
_anonenum120: dict[int, str] = {(MLX5_MFRL_REG_RESET_STATE_IDLE:=0): 'MLX5_MFRL_REG_RESET_STATE_IDLE', (MLX5_MFRL_REG_RESET_STATE_IN_NEGOTIATION:=1): 'MLX5_MFRL_REG_RESET_STATE_IN_NEGOTIATION', (MLX5_MFRL_REG_RESET_STATE_RESET_IN_PROGRESS:=2): 'MLX5_MFRL_REG_RESET_STATE_RESET_IN_PROGRESS', (MLX5_MFRL_REG_RESET_STATE_NEG_TIMEOUT:=3): 'MLX5_MFRL_REG_RESET_STATE_NEG_TIMEOUT', (MLX5_MFRL_REG_RESET_STATE_NACK:=4): 'MLX5_MFRL_REG_RESET_STATE_NACK', (MLX5_MFRL_REG_RESET_STATE_UNLOAD_TIMEOUT:=5): 'MLX5_MFRL_REG_RESET_STATE_UNLOAD_TIMEOUT'}
_anonenum121: dict[int, str] = {(MLX5_MFRL_REG_RESET_TYPE_FULL_CHIP:=0): 'MLX5_MFRL_REG_RESET_TYPE_FULL_CHIP', (MLX5_MFRL_REG_RESET_TYPE_NET_PORT_ALIVE:=1): 'MLX5_MFRL_REG_RESET_TYPE_NET_PORT_ALIVE'}
_anonenum122: dict[int, str] = {(MLX5_MFRL_REG_RESET_LEVEL0:=0): 'MLX5_MFRL_REG_RESET_LEVEL0', (MLX5_MFRL_REG_RESET_LEVEL3:=1): 'MLX5_MFRL_REG_RESET_LEVEL3', (MLX5_MFRL_REG_RESET_LEVEL6:=2): 'MLX5_MFRL_REG_RESET_LEVEL6'}
@c.record
class struct_mlx5_ifc_mfrl_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[2]]
  pci_sync_for_fw_update_start: c.Array[ctypes.c_ubyte, Literal[1]]
  pci_sync_for_fw_update_resp: c.Array[ctypes.c_ubyte, Literal[2]]
  rst_type_sel: c.Array[ctypes.c_ubyte, Literal[3]]
  pci_reset_req_method: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_2b: c.Array[ctypes.c_ubyte, Literal[1]]
  reset_state: c.Array[ctypes.c_ubyte, Literal[4]]
  reset_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reset_level: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_mfrl_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[2]], 32), ('pci_sync_for_fw_update_start', c.Array[ctypes.c_ubyte, Literal[1]], 34), ('pci_sync_for_fw_update_resp', c.Array[ctypes.c_ubyte, Literal[2]], 35), ('rst_type_sel', c.Array[ctypes.c_ubyte, Literal[3]], 37), ('pci_reset_req_method', c.Array[ctypes.c_ubyte, Literal[3]], 40), ('reserved_at_2b', c.Array[ctypes.c_ubyte, Literal[1]], 43), ('reset_state', c.Array[ctypes.c_ubyte, Literal[4]], 44), ('reset_type', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('reset_level', c.Array[ctypes.c_ubyte, Literal[8]], 56)])
@c.record
class struct_mlx5_ifc_mirc_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24]]
  status_code: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mirc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24]], 0), ('status_code', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
@c.record
class struct_mlx5_ifc_pddr_monitor_opcode_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  monitor_opcode: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_pddr_monitor_opcode_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('monitor_opcode', c.Array[ctypes.c_ubyte, Literal[16]], 16)])
@c.record
class union_mlx5_ifc_pddr_troubleshooting_page_status_opcode_auto_bits(c.Struct):
  SIZE = 32
  pddr_monitor_opcode: struct_mlx5_ifc_pddr_monitor_opcode_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
union_mlx5_ifc_pddr_troubleshooting_page_status_opcode_auto_bits.register_fields([('pddr_monitor_opcode', struct_mlx5_ifc_pddr_monitor_opcode_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0)])
_anonenum123: dict[int, str] = {(MLX5_PDDR_REG_TRBLSH_GROUP_OPCODE_MONITOR:=0): 'MLX5_PDDR_REG_TRBLSH_GROUP_OPCODE_MONITOR'}
@c.record
class struct_mlx5_ifc_pddr_troubleshooting_page_bits(c.Struct):
  SIZE = 1984
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  group_opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  status_opcode: union_mlx5_ifc_pddr_troubleshooting_page_status_opcode_auto_bits
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  status_message: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[59]]
struct_mlx5_ifc_pddr_troubleshooting_page_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('group_opcode', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('status_opcode', union_mlx5_ifc_pddr_troubleshooting_page_status_opcode_auto_bits, 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('status_message', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[59]], 96)])
@c.record
class union_mlx5_ifc_pddr_reg_page_data_auto_bits(c.Struct):
  SIZE = 1984
  pddr_troubleshooting_page: struct_mlx5_ifc_pddr_troubleshooting_page_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[1984]]
union_mlx5_ifc_pddr_reg_page_data_auto_bits.register_fields([('pddr_troubleshooting_page', struct_mlx5_ifc_pddr_troubleshooting_page_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[1984]], 0)])
_anonenum124: dict[int, str] = {(MLX5_PDDR_REG_PAGE_SELECT_TROUBLESHOOTING_INFO_PAGE:=1): 'MLX5_PDDR_REG_PAGE_SELECT_TROUBLESHOOTING_INFO_PAGE'}
@c.record
class struct_mlx5_ifc_pddr_reg_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_12: c.Array[ctypes.c_ubyte, Literal[14]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[24]]
  page_select: c.Array[ctypes.c_ubyte, Literal[8]]
  page_data: union_mlx5_ifc_pddr_reg_page_data_auto_bits
struct_mlx5_ifc_pddr_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('reserved_at_12', c.Array[ctypes.c_ubyte, Literal[14]], 18), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('page_select', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('page_data', union_mlx5_ifc_pddr_reg_page_data_auto_bits, 64)])
@c.record
class struct_mlx5_ifc_mrtc_reg_bits(c.Struct):
  SIZE = 128
  time_synced: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  time_h: c.Array[ctypes.c_ubyte, Literal[32]]
  time_l: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mrtc_reg_bits.register_fields([('time_synced', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[31]], 1), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('time_h', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('time_l', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_mtcap_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[25]]
  sensor_count: c.Array[ctypes.c_ubyte, Literal[7]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  sensor_map: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_mtcap_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[25]], 0), ('sensor_count', c.Array[ctypes.c_ubyte, Literal[7]], 25), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('sensor_map', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_mtmp_reg_bits(c.Struct):
  SIZE = 256
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[20]]
  sensor_index: c.Array[ctypes.c_ubyte, Literal[12]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  temperature: c.Array[ctypes.c_ubyte, Literal[16]]
  mte: c.Array[ctypes.c_ubyte, Literal[1]]
  mtr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[14]]
  max_temperature: c.Array[ctypes.c_ubyte, Literal[16]]
  tee: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_62: c.Array[ctypes.c_ubyte, Literal[14]]
  temp_threshold_hi: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[16]]
  temp_threshold_lo: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  sensor_name_hi: c.Array[ctypes.c_ubyte, Literal[32]]
  sensor_name_lo: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mtmp_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[20]], 0), ('sensor_index', c.Array[ctypes.c_ubyte, Literal[12]], 20), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('temperature', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('mte', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('mtr', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[14]], 66), ('max_temperature', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('tee', c.Array[ctypes.c_ubyte, Literal[2]], 96), ('reserved_at_62', c.Array[ctypes.c_ubyte, Literal[14]], 98), ('temp_threshold_hi', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('temp_threshold_lo', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('sensor_name_hi', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('sensor_name_lo', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_mtptm_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  psta: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_11: c.Array[ctypes.c_ubyte, Literal[15]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_mtptm_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('psta', c.Array[ctypes.c_ubyte, Literal[1]], 16), ('reserved_at_11', c.Array[ctypes.c_ubyte, Literal[15]], 17), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32)])
_anonenum125: dict[int, str] = {(MLX5_MTCTR_REQUEST_NOP:=0): 'MLX5_MTCTR_REQUEST_NOP', (MLX5_MTCTR_REQUEST_PTM_ROOT_CLOCK:=1): 'MLX5_MTCTR_REQUEST_PTM_ROOT_CLOCK', (MLX5_MTCTR_REQUEST_FREE_RUNNING_COUNTER:=2): 'MLX5_MTCTR_REQUEST_FREE_RUNNING_COUNTER', (MLX5_MTCTR_REQUEST_REAL_TIME_CLOCK:=3): 'MLX5_MTCTR_REQUEST_REAL_TIME_CLOCK'}
@c.record
class struct_mlx5_ifc_mtctr_reg_bits(c.Struct):
  SIZE = 192
  first_clock_timestamp_request: c.Array[ctypes.c_ubyte, Literal[8]]
  second_clock_timestamp_request: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  first_clock_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  second_clock_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_22: c.Array[ctypes.c_ubyte, Literal[30]]
  first_clock_timestamp: c.Array[ctypes.c_ubyte, Literal[64]]
  second_clock_timestamp: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_mtctr_reg_bits.register_fields([('first_clock_timestamp_request', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('second_clock_timestamp_request', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('first_clock_valid', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('second_clock_valid', c.Array[ctypes.c_ubyte, Literal[1]], 33), ('reserved_at_22', c.Array[ctypes.c_ubyte, Literal[30]], 34), ('first_clock_timestamp', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('second_clock_timestamp', c.Array[ctypes.c_ubyte, Literal[64]], 128)])
@c.record
class struct_mlx5_ifc_bin_range_layout_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[10]]
  high_val: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[10]]
  low_val: c.Array[ctypes.c_ubyte, Literal[6]]
struct_mlx5_ifc_bin_range_layout_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[10]], 0), ('high_val', c.Array[ctypes.c_ubyte, Literal[6]], 10), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[10]], 16), ('low_val', c.Array[ctypes.c_ubyte, Literal[6]], 26)])
@c.record
class struct_mlx5_ifc_pphcr_reg_bits(c.Struct):
  SIZE = 640
  active_hist_type: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  num_of_bins: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  bin_range: c.Array[struct_mlx5_ifc_bin_range_layout_bits, Literal[16]]
struct_mlx5_ifc_pphcr_reg_bits.register_fields([('active_hist_type', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('num_of_bins', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('bin_range', c.Array[struct_mlx5_ifc_bin_range_layout_bits, Literal[16]], 128)])
@c.record
class union_mlx5_ifc_ports_control_registers_document_bits(c.Struct):
  SIZE = 24800
  bufferx_reg: struct_mlx5_ifc_bufferx_reg_bits
  eth_2819_cntrs_grp_data_layout: struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits
  eth_2863_cntrs_grp_data_layout: struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits
  eth_3635_cntrs_grp_data_layout: struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits
  eth_802_3_cntrs_grp_data_layout: struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits
  eth_extended_cntrs_grp_data_layout: struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits
  eth_per_prio_grp_data_layout: struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits
  eth_per_tc_prio_grp_data_layout: struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits
  eth_per_tc_congest_prio_grp_data_layout: struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits
  lane_2_module_mapping: struct_mlx5_ifc_lane_2_module_mapping_bits
  pamp_reg: struct_mlx5_ifc_pamp_reg_bits
  paos_reg: struct_mlx5_ifc_paos_reg_bits
  pcap_reg: struct_mlx5_ifc_pcap_reg_bits
  pddr_monitor_opcode: struct_mlx5_ifc_pddr_monitor_opcode_bits
  pddr_reg: struct_mlx5_ifc_pddr_reg_bits
  pddr_troubleshooting_page: struct_mlx5_ifc_pddr_troubleshooting_page_bits
  peir_reg: struct_mlx5_ifc_peir_reg_bits
  pelc_reg: struct_mlx5_ifc_pelc_reg_bits
  pfcc_reg: struct_mlx5_ifc_pfcc_reg_bits
  ib_port_cntrs_grp_data_layout: struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits
  phys_layer_cntrs: struct_mlx5_ifc_phys_layer_cntrs_bits
  pifr_reg: struct_mlx5_ifc_pifr_reg_bits
  pipg_reg: struct_mlx5_ifc_pipg_reg_bits
  plbf_reg: struct_mlx5_ifc_plbf_reg_bits
  plib_reg: struct_mlx5_ifc_plib_reg_bits
  plpc_reg: struct_mlx5_ifc_plpc_reg_bits
  pmaos_reg: struct_mlx5_ifc_pmaos_reg_bits
  pmlp_reg: struct_mlx5_ifc_pmlp_reg_bits
  pmlpn_reg: struct_mlx5_ifc_pmlpn_reg_bits
  pmpc_reg: struct_mlx5_ifc_pmpc_reg_bits
  pmpe_reg: struct_mlx5_ifc_pmpe_reg_bits
  pmpr_reg: struct_mlx5_ifc_pmpr_reg_bits
  pmtu_reg: struct_mlx5_ifc_pmtu_reg_bits
  ppad_reg: struct_mlx5_ifc_ppad_reg_bits
  ppcnt_reg: struct_mlx5_ifc_ppcnt_reg_bits
  mpein_reg: struct_mlx5_ifc_mpein_reg_bits
  mpcnt_reg: struct_mlx5_ifc_mpcnt_reg_bits
  pplm_reg: struct_mlx5_ifc_pplm_reg_bits
  pplr_reg: struct_mlx5_ifc_pplr_reg_bits
  ppsc_reg: struct_mlx5_ifc_ppsc_reg_bits
  pqdr_reg: struct_mlx5_ifc_pqdr_reg_bits
  pspa_reg: struct_mlx5_ifc_pspa_reg_bits
  ptas_reg: struct_mlx5_ifc_ptas_reg_bits
  ptys_reg: struct_mlx5_ifc_ptys_reg_bits
  mlcr_reg: struct_mlx5_ifc_mlcr_reg_bits
  pude_reg: struct_mlx5_ifc_pude_reg_bits
  pvlc_reg: struct_mlx5_ifc_pvlc_reg_bits
  slrg_reg: struct_mlx5_ifc_slrg_reg_bits
  sltp_reg: struct_mlx5_ifc_sltp_reg_bits
  mtpps_reg: struct_mlx5_ifc_mtpps_reg_bits
  mtppse_reg: struct_mlx5_ifc_mtppse_reg_bits
  fpga_access_reg: struct_mlx5_ifc_fpga_access_reg_bits
  fpga_ctrl_bits: struct_mlx5_ifc_fpga_ctrl_bits
  fpga_cap_bits: struct_mlx5_ifc_fpga_cap_bits
  mcqi_reg: struct_mlx5_ifc_mcqi_reg_bits
  mcc_reg: struct_mlx5_ifc_mcc_reg_bits
  mcda_reg: struct_mlx5_ifc_mcda_reg_bits
  mirc_reg: struct_mlx5_ifc_mirc_reg_bits
  mfrl_reg: struct_mlx5_ifc_mfrl_reg_bits
  mtutc_reg: struct_mlx5_ifc_mtutc_reg_bits
  mrtc_reg: struct_mlx5_ifc_mrtc_reg_bits
  mtcap_reg: struct_mlx5_ifc_mtcap_reg_bits
  mtmp_reg: struct_mlx5_ifc_mtmp_reg_bits
  mtptm_reg: struct_mlx5_ifc_mtptm_reg_bits
  mtctr_reg: struct_mlx5_ifc_mtctr_reg_bits
  pphcr_reg: struct_mlx5_ifc_pphcr_reg_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[24800]]
@c.record
class struct_mlx5_ifc_fpga_access_reg_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  size: c.Array[ctypes.c_ubyte, Literal[16]]
  address: c.Array[ctypes.c_ubyte, Literal[64]]
  data: c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[0]]
struct_mlx5_ifc_fpga_access_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('size', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('address', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('data', c.Array[c.Array[ctypes.c_ubyte, Literal[8]], Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_fpga_ctrl_bits(c.Struct):
  SIZE = 128
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  operation: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  flash_select_admin: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  flash_select_oper: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_fpga_ctrl_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('operation', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('status', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('flash_select_admin', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('flash_select_oper', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
union_mlx5_ifc_ports_control_registers_document_bits.register_fields([('bufferx_reg', struct_mlx5_ifc_bufferx_reg_bits, 0), ('eth_2819_cntrs_grp_data_layout', struct_mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits, 0), ('eth_2863_cntrs_grp_data_layout', struct_mlx5_ifc_eth_2863_cntrs_grp_data_layout_bits, 0), ('eth_3635_cntrs_grp_data_layout', struct_mlx5_ifc_eth_3635_cntrs_grp_data_layout_bits, 0), ('eth_802_3_cntrs_grp_data_layout', struct_mlx5_ifc_eth_802_3_cntrs_grp_data_layout_bits, 0), ('eth_extended_cntrs_grp_data_layout', struct_mlx5_ifc_eth_extended_cntrs_grp_data_layout_bits, 0), ('eth_per_prio_grp_data_layout', struct_mlx5_ifc_eth_per_prio_grp_data_layout_bits, 0), ('eth_per_tc_prio_grp_data_layout', struct_mlx5_ifc_eth_per_tc_prio_grp_data_layout_bits, 0), ('eth_per_tc_congest_prio_grp_data_layout', struct_mlx5_ifc_eth_per_tc_congest_prio_grp_data_layout_bits, 0), ('lane_2_module_mapping', struct_mlx5_ifc_lane_2_module_mapping_bits, 0), ('pamp_reg', struct_mlx5_ifc_pamp_reg_bits, 0), ('paos_reg', struct_mlx5_ifc_paos_reg_bits, 0), ('pcap_reg', struct_mlx5_ifc_pcap_reg_bits, 0), ('pddr_monitor_opcode', struct_mlx5_ifc_pddr_monitor_opcode_bits, 0), ('pddr_reg', struct_mlx5_ifc_pddr_reg_bits, 0), ('pddr_troubleshooting_page', struct_mlx5_ifc_pddr_troubleshooting_page_bits, 0), ('peir_reg', struct_mlx5_ifc_peir_reg_bits, 0), ('pelc_reg', struct_mlx5_ifc_pelc_reg_bits, 0), ('pfcc_reg', struct_mlx5_ifc_pfcc_reg_bits, 0), ('ib_port_cntrs_grp_data_layout', struct_mlx5_ifc_ib_port_cntrs_grp_data_layout_bits, 0), ('phys_layer_cntrs', struct_mlx5_ifc_phys_layer_cntrs_bits, 0), ('pifr_reg', struct_mlx5_ifc_pifr_reg_bits, 0), ('pipg_reg', struct_mlx5_ifc_pipg_reg_bits, 0), ('plbf_reg', struct_mlx5_ifc_plbf_reg_bits, 0), ('plib_reg', struct_mlx5_ifc_plib_reg_bits, 0), ('plpc_reg', struct_mlx5_ifc_plpc_reg_bits, 0), ('pmaos_reg', struct_mlx5_ifc_pmaos_reg_bits, 0), ('pmlp_reg', struct_mlx5_ifc_pmlp_reg_bits, 0), ('pmlpn_reg', struct_mlx5_ifc_pmlpn_reg_bits, 0), ('pmpc_reg', struct_mlx5_ifc_pmpc_reg_bits, 0), ('pmpe_reg', struct_mlx5_ifc_pmpe_reg_bits, 0), ('pmpr_reg', struct_mlx5_ifc_pmpr_reg_bits, 0), ('pmtu_reg', struct_mlx5_ifc_pmtu_reg_bits, 0), ('ppad_reg', struct_mlx5_ifc_ppad_reg_bits, 0), ('ppcnt_reg', struct_mlx5_ifc_ppcnt_reg_bits, 0), ('mpein_reg', struct_mlx5_ifc_mpein_reg_bits, 0), ('mpcnt_reg', struct_mlx5_ifc_mpcnt_reg_bits, 0), ('pplm_reg', struct_mlx5_ifc_pplm_reg_bits, 0), ('pplr_reg', struct_mlx5_ifc_pplr_reg_bits, 0), ('ppsc_reg', struct_mlx5_ifc_ppsc_reg_bits, 0), ('pqdr_reg', struct_mlx5_ifc_pqdr_reg_bits, 0), ('pspa_reg', struct_mlx5_ifc_pspa_reg_bits, 0), ('ptas_reg', struct_mlx5_ifc_ptas_reg_bits, 0), ('ptys_reg', struct_mlx5_ifc_ptys_reg_bits, 0), ('mlcr_reg', struct_mlx5_ifc_mlcr_reg_bits, 0), ('pude_reg', struct_mlx5_ifc_pude_reg_bits, 0), ('pvlc_reg', struct_mlx5_ifc_pvlc_reg_bits, 0), ('slrg_reg', struct_mlx5_ifc_slrg_reg_bits, 0), ('sltp_reg', struct_mlx5_ifc_sltp_reg_bits, 0), ('mtpps_reg', struct_mlx5_ifc_mtpps_reg_bits, 0), ('mtppse_reg', struct_mlx5_ifc_mtppse_reg_bits, 0), ('fpga_access_reg', struct_mlx5_ifc_fpga_access_reg_bits, 0), ('fpga_ctrl_bits', struct_mlx5_ifc_fpga_ctrl_bits, 0), ('fpga_cap_bits', struct_mlx5_ifc_fpga_cap_bits, 0), ('mcqi_reg', struct_mlx5_ifc_mcqi_reg_bits, 0), ('mcc_reg', struct_mlx5_ifc_mcc_reg_bits, 0), ('mcda_reg', struct_mlx5_ifc_mcda_reg_bits, 0), ('mirc_reg', struct_mlx5_ifc_mirc_reg_bits, 0), ('mfrl_reg', struct_mlx5_ifc_mfrl_reg_bits, 0), ('mtutc_reg', struct_mlx5_ifc_mtutc_reg_bits, 0), ('mrtc_reg', struct_mlx5_ifc_mrtc_reg_bits, 0), ('mtcap_reg', struct_mlx5_ifc_mtcap_reg_bits, 0), ('mtmp_reg', struct_mlx5_ifc_mtmp_reg_bits, 0), ('mtptm_reg', struct_mlx5_ifc_mtptm_reg_bits, 0), ('mtctr_reg', struct_mlx5_ifc_mtctr_reg_bits, 0), ('pphcr_reg', struct_mlx5_ifc_pphcr_reg_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[24800]], 0)])
@c.record
class union_mlx5_ifc_debug_enhancements_document_bits(c.Struct):
  SIZE = 512
  health_buffer: struct_mlx5_ifc_health_buffer_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[512]]
union_mlx5_ifc_debug_enhancements_document_bits.register_fields([('health_buffer', struct_mlx5_ifc_health_buffer_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[512]], 0)])
@c.record
class union_mlx5_ifc_uplink_pci_interface_document_bits(c.Struct):
  SIZE = 131168
  initial_seg: struct_mlx5_ifc_initial_seg_bits
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[131168]]
union_mlx5_ifc_uplink_pci_interface_document_bits.register_fields([('initial_seg', struct_mlx5_ifc_initial_seg_bits, 0), ('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[131168]], 0)])
@c.record
class struct_mlx5_ifc_set_flow_table_root_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_set_flow_table_root_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_set_flow_table_root_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[7]]
  table_of_other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  table_vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  underlay_qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  table_eswitch_owner_vhca_id_valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e1: c.Array[ctypes.c_ubyte, Literal[15]]
  table_eswitch_owner_vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_set_flow_table_root_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[7]], 136), ('table_of_other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 143), ('table_vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('underlay_qpn', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('table_eswitch_owner_vhca_id_valid', c.Array[ctypes.c_ubyte, Literal[1]], 224), ('reserved_at_e1', c.Array[ctypes.c_ubyte, Literal[15]], 225), ('table_eswitch_owner_vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 240), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
_anonenum126: dict[int, str] = {(MLX5_MODIFY_FLOW_TABLE_MISS_TABLE_ID:=1): 'MLX5_MODIFY_FLOW_TABLE_MISS_TABLE_ID', (MLX5_MODIFY_FLOW_TABLE_LAG_NEXT_TABLE_ID:=32768): 'MLX5_MODIFY_FLOW_TABLE_LAG_NEXT_TABLE_ID'}
@c.record
class struct_mlx5_ifc_modify_flow_table_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_flow_table_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_flow_table_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  other_vport: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[15]]
  vport_number: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[16]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_88: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  flow_table_context: struct_mlx5_ifc_flow_table_context_bits
struct_mlx5_ifc_modify_flow_table_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('other_vport', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[15]], 65), ('vport_number', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('modify_field_select', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('reserved_at_88', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('flow_table_context', struct_mlx5_ifc_flow_table_context_bits, 192)])
@c.record
class struct_mlx5_ifc_ets_tcn_config_reg_bits(c.Struct):
  SIZE = 64
  g: c.Array[ctypes.c_ubyte, Literal[1]]
  b: c.Array[ctypes.c_ubyte, Literal[1]]
  r: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[9]]
  group: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[9]]
  bw_allocation: c.Array[ctypes.c_ubyte, Literal[7]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[12]]
  max_bw_units: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  max_bw_value: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_ets_tcn_config_reg_bits.register_fields([('g', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('b', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('r', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[9]], 3), ('group', c.Array[ctypes.c_ubyte, Literal[4]], 12), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[9]], 16), ('bw_allocation', c.Array[ctypes.c_ubyte, Literal[7]], 25), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[12]], 32), ('max_bw_units', c.Array[ctypes.c_ubyte, Literal[4]], 44), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('max_bw_value', c.Array[ctypes.c_ubyte, Literal[8]], 56)])
@c.record
class struct_mlx5_ifc_ets_global_config_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[2]]
  r: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[29]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[12]]
  max_bw_units: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[8]]
  max_bw_value: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_ets_global_config_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('r', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[29]], 3), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[12]], 32), ('max_bw_units', c.Array[ctypes.c_ubyte, Literal[4]], 44), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[8]], 48), ('max_bw_value', c.Array[ctypes.c_ubyte, Literal[8]], 56)])
@c.record
class struct_mlx5_ifc_qetc_reg_bits(c.Struct):
  SIZE = 640
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  port_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[48]]
  tc_configuration: c.Array[struct_mlx5_ifc_ets_tcn_config_reg_bits, Literal[8]]
  global_configuration: struct_mlx5_ifc_ets_global_config_reg_bits
struct_mlx5_ifc_qetc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('port_number', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[48]], 16), ('tc_configuration', c.Array[struct_mlx5_ifc_ets_tcn_config_reg_bits, Literal[8]], 64), ('global_configuration', struct_mlx5_ifc_ets_global_config_reg_bits, 576)])
@c.record
class struct_mlx5_ifc_qpdpm_dscp_reg_bits(c.Struct):
  SIZE = 16
  e: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_01: c.Array[ctypes.c_ubyte, Literal[11]]
  prio: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_qpdpm_dscp_reg_bits.register_fields([('e', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_01', c.Array[ctypes.c_ubyte, Literal[11]], 1), ('prio', c.Array[ctypes.c_ubyte, Literal[4]], 12)])
@c.record
class struct_mlx5_ifc_qpdpm_reg_bits(c.Struct):
  SIZE = 1056
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  dscp: c.Array[struct_mlx5_ifc_qpdpm_dscp_reg_bits, Literal[64]]
struct_mlx5_ifc_qpdpm_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('dscp', c.Array[struct_mlx5_ifc_qpdpm_dscp_reg_bits, Literal[64]], 32)])
@c.record
class struct_mlx5_ifc_qpts_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[45]]
  trust_state: c.Array[ctypes.c_ubyte, Literal[3]]
struct_mlx5_ifc_qpts_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[45]], 16), ('trust_state', c.Array[ctypes.c_ubyte, Literal[3]], 61)])
@c.record
class struct_mlx5_ifc_pptb_reg_bits(c.Struct):
  SIZE = 96
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[2]]
  mm: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[6]]
  cm: c.Array[ctypes.c_ubyte, Literal[1]]
  um: c.Array[ctypes.c_ubyte, Literal[1]]
  pm: c.Array[ctypes.c_ubyte, Literal[8]]
  prio_x_buff: c.Array[ctypes.c_ubyte, Literal[32]]
  pm_msb: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[16]]
  ctrl_buff: c.Array[ctypes.c_ubyte, Literal[4]]
  untagged_buff: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_pptb_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('mm', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[6]], 16), ('cm', c.Array[ctypes.c_ubyte, Literal[1]], 22), ('um', c.Array[ctypes.c_ubyte, Literal[1]], 23), ('pm', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('prio_x_buff', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('pm_msb', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[16]], 72), ('ctrl_buff', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('untagged_buff', c.Array[ctypes.c_ubyte, Literal[4]], 92)])
@c.record
class struct_mlx5_ifc_sbcam_reg_bits(c.Struct):
  SIZE = 608
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  feature_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  access_reg_group: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  sb_access_reg_cap_mask: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[128]]
  sb_feature_cap_mask: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[64]]
  cap_total_buffer_size: c.Array[ctypes.c_ubyte, Literal[32]]
  cap_cell_size: c.Array[ctypes.c_ubyte, Literal[16]]
  cap_max_pg_buffers: c.Array[ctypes.c_ubyte, Literal[8]]
  cap_num_pool_supported: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_240: c.Array[ctypes.c_ubyte, Literal[8]]
  cap_sbsr_stat_size: c.Array[ctypes.c_ubyte, Literal[8]]
  cap_max_tclass_data: c.Array[ctypes.c_ubyte, Literal[8]]
  cap_max_cpu_ingress_tclass_sb: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_sbcam_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('feature_group', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('access_reg_group', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('sb_access_reg_cap_mask', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 64), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[128]], 192), ('sb_feature_cap_mask', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[4]], 320), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('cap_total_buffer_size', c.Array[ctypes.c_ubyte, Literal[32]], 512), ('cap_cell_size', c.Array[ctypes.c_ubyte, Literal[16]], 544), ('cap_max_pg_buffers', c.Array[ctypes.c_ubyte, Literal[8]], 560), ('cap_num_pool_supported', c.Array[ctypes.c_ubyte, Literal[8]], 568), ('reserved_at_240', c.Array[ctypes.c_ubyte, Literal[8]], 576), ('cap_sbsr_stat_size', c.Array[ctypes.c_ubyte, Literal[8]], 584), ('cap_max_tclass_data', c.Array[ctypes.c_ubyte, Literal[8]], 592), ('cap_max_cpu_ingress_tclass_sb', c.Array[ctypes.c_ubyte, Literal[8]], 600)])
@c.record
class struct_mlx5_ifc_pbmc_reg_bits(c.Struct):
  SIZE = 864
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  xoff_timer_value: c.Array[ctypes.c_ubyte, Literal[16]]
  xoff_refresh: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[9]]
  fullness_threshold: c.Array[ctypes.c_ubyte, Literal[7]]
  port_buffer_size: c.Array[ctypes.c_ubyte, Literal[16]]
  buffer: c.Array[struct_mlx5_ifc_bufferx_reg_bits, Literal[10]]
  reserved_at_2e0: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_pbmc_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('xoff_timer_value', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('xoff_refresh', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[9]], 64), ('fullness_threshold', c.Array[ctypes.c_ubyte, Literal[7]], 73), ('port_buffer_size', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('buffer', c.Array[struct_mlx5_ifc_bufferx_reg_bits, Literal[10]], 96), ('reserved_at_2e0', c.Array[ctypes.c_ubyte, Literal[128]], 736)])
@c.record
class struct_mlx5_ifc_sbpr_reg_bits(c.Struct):
  SIZE = 192
  desc: c.Array[ctypes.c_ubyte, Literal[1]]
  snap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[4]]
  dir: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[20]]
  pool: c.Array[ctypes.c_ubyte, Literal[4]]
  infi_size: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_21: c.Array[ctypes.c_ubyte, Literal[7]]
  size: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[28]]
  mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  buff_occupancy: c.Array[ctypes.c_ubyte, Literal[24]]
  clr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_81: c.Array[ctypes.c_ubyte, Literal[7]]
  max_buff_occupancy: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  ext_buff_occupancy: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_sbpr_reg_bits.register_fields([('desc', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('snap', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[4]], 2), ('dir', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[20]], 8), ('pool', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('infi_size', c.Array[ctypes.c_ubyte, Literal[1]], 32), ('reserved_at_21', c.Array[ctypes.c_ubyte, Literal[7]], 33), ('size', c.Array[ctypes.c_ubyte, Literal[24]], 40), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[28]], 64), ('mode', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('buff_occupancy', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('clr', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('reserved_at_81', c.Array[ctypes.c_ubyte, Literal[7]], 129), ('max_buff_occupancy', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('ext_buff_occupancy', c.Array[ctypes.c_ubyte, Literal[24]], 168)])
@c.record
class struct_mlx5_ifc_sbcm_reg_bits(c.Struct):
  SIZE = 320
  desc: c.Array[ctypes.c_ubyte, Literal[1]]
  snap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[6]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  pg_buff: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[6]]
  dir: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[31]]
  exc: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  buff_occupancy: c.Array[ctypes.c_ubyte, Literal[24]]
  clr: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_a1: c.Array[ctypes.c_ubyte, Literal[7]]
  max_buff_occupancy: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[8]]
  min_buff: c.Array[ctypes.c_ubyte, Literal[24]]
  infi_max: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_e1: c.Array[ctypes.c_ubyte, Literal[7]]
  max_buff: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[28]]
  pool: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_sbcm_reg_bits.register_fields([('desc', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('snap', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[6]], 2), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('pg_buff', c.Array[ctypes.c_ubyte, Literal[6]], 18), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[6]], 24), ('dir', c.Array[ctypes.c_ubyte, Literal[2]], 30), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[31]], 32), ('exc', c.Array[ctypes.c_ubyte, Literal[1]], 63), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('buff_occupancy', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('clr', c.Array[ctypes.c_ubyte, Literal[1]], 160), ('reserved_at_a1', c.Array[ctypes.c_ubyte, Literal[7]], 161), ('max_buff_occupancy', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[8]], 192), ('min_buff', c.Array[ctypes.c_ubyte, Literal[24]], 200), ('infi_max', c.Array[ctypes.c_ubyte, Literal[1]], 224), ('reserved_at_e1', c.Array[ctypes.c_ubyte, Literal[7]], 225), ('max_buff', c.Array[ctypes.c_ubyte, Literal[24]], 232), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[28]], 288), ('pool', c.Array[ctypes.c_ubyte, Literal[4]], 316)])
@c.record
class struct_mlx5_ifc_qtct_reg_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  port_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[13]]
  prio: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[29]]
  tclass: c.Array[ctypes.c_ubyte, Literal[3]]
struct_mlx5_ifc_qtct_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('port_number', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[13]], 16), ('prio', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[29]], 32), ('tclass', c.Array[ctypes.c_ubyte, Literal[3]], 61)])
@c.record
class struct_mlx5_ifc_mcia_reg_bits(c.Struct):
  SIZE = 512
  l: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[7]]
  module: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[8]]
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  i2c_device_address: c.Array[ctypes.c_ubyte, Literal[8]]
  page_number: c.Array[ctypes.c_ubyte, Literal[8]]
  device_address: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  size: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_0: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_1: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_2: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_3: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_4: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_5: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_6: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_7: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_8: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_9: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_10: c.Array[ctypes.c_ubyte, Literal[32]]
  dword_11: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_mcia_reg_bits.register_fields([('l', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[7]], 1), ('module', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('status', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('i2c_device_address', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('page_number', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('device_address', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('size', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('dword_0', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('dword_1', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('dword_2', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('dword_3', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('dword_4', c.Array[ctypes.c_ubyte, Literal[32]], 256), ('dword_5', c.Array[ctypes.c_ubyte, Literal[32]], 288), ('dword_6', c.Array[ctypes.c_ubyte, Literal[32]], 320), ('dword_7', c.Array[ctypes.c_ubyte, Literal[32]], 352), ('dword_8', c.Array[ctypes.c_ubyte, Literal[32]], 384), ('dword_9', c.Array[ctypes.c_ubyte, Literal[32]], 416), ('dword_10', c.Array[ctypes.c_ubyte, Literal[32]], 448), ('dword_11', c.Array[ctypes.c_ubyte, Literal[32]], 480)])
@c.record
class struct_mlx5_ifc_dcbx_param_bits(c.Struct):
  SIZE = 512
  dcbx_cee_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  dcbx_ieee_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  dcbx_standby_cap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_3: c.Array[ctypes.c_ubyte, Literal[5]]
  port_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[10]]
  max_application_table_size: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[21]]
  version_oper: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[5]]
  version_admin: c.Array[ctypes.c_ubyte, Literal[3]]
  willing_admin: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[3]]
  pfc_cap_oper: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[4]]
  pfc_cap_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[4]]
  num_of_tc_oper: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[4]]
  num_of_tc_admin: c.Array[ctypes.c_ubyte, Literal[4]]
  remote_willing: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_61: c.Array[ctypes.c_ubyte, Literal[3]]
  remote_pfc_cap: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[20]]
  remote_num_of_tc: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[24]]
  error: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[352]]
struct_mlx5_ifc_dcbx_param_bits.register_fields([('dcbx_cee_cap', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('dcbx_ieee_cap', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('dcbx_standby_cap', c.Array[ctypes.c_ubyte, Literal[1]], 2), ('reserved_at_3', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('port_number', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[10]], 16), ('max_application_table_size', c.Array[ctypes.c_ubyte, Literal[6]], 26), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[21]], 32), ('version_oper', c.Array[ctypes.c_ubyte, Literal[3]], 53), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[5]], 56), ('version_admin', c.Array[ctypes.c_ubyte, Literal[3]], 61), ('willing_admin', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[3]], 65), ('pfc_cap_oper', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[4]], 72), ('pfc_cap_admin', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[4]], 80), ('num_of_tc_oper', c.Array[ctypes.c_ubyte, Literal[4]], 84), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('num_of_tc_admin', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('remote_willing', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('reserved_at_61', c.Array[ctypes.c_ubyte, Literal[3]], 97), ('remote_pfc_cap', c.Array[ctypes.c_ubyte, Literal[4]], 100), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[20]], 104), ('remote_num_of_tc', c.Array[ctypes.c_ubyte, Literal[4]], 124), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[24]], 128), ('error', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[352]], 160)])
_anonenum127: dict[int, str] = {(MLX5_LAG_PORT_SELECT_MODE_QUEUE_AFFINITY:=0): 'MLX5_LAG_PORT_SELECT_MODE_QUEUE_AFFINITY', (MLX5_LAG_PORT_SELECT_MODE_PORT_SELECT_FT:=1): 'MLX5_LAG_PORT_SELECT_MODE_PORT_SELECT_FT', (MLX5_LAG_PORT_SELECT_MODE_PORT_SELECT_MPESW:=2): 'MLX5_LAG_PORT_SELECT_MODE_PORT_SELECT_MPESW'}
@c.record
class struct_mlx5_ifc_lagc_bits(c.Struct):
  SIZE = 64
  fdb_selection_mode: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[20]]
  port_select_mode: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_18: c.Array[ctypes.c_ubyte, Literal[5]]
  lag_state: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[12]]
  active_port: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[4]]
  tx_remap_affinity_2: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[4]]
  tx_remap_affinity_1: c.Array[ctypes.c_ubyte, Literal[4]]
struct_mlx5_ifc_lagc_bits.register_fields([('fdb_selection_mode', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[20]], 1), ('port_select_mode', c.Array[ctypes.c_ubyte, Literal[3]], 21), ('reserved_at_18', c.Array[ctypes.c_ubyte, Literal[5]], 24), ('lag_state', c.Array[ctypes.c_ubyte, Literal[3]], 29), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[12]], 32), ('active_port', c.Array[ctypes.c_ubyte, Literal[4]], 44), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[4]], 48), ('tx_remap_affinity_2', c.Array[ctypes.c_ubyte, Literal[4]], 52), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[4]], 56), ('tx_remap_affinity_1', c.Array[ctypes.c_ubyte, Literal[4]], 60)])
@c.record
class struct_mlx5_ifc_create_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_create_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_lag_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  ctx: struct_mlx5_ifc_lagc_bits
struct_mlx5_ifc_create_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('ctx', struct_mlx5_ifc_lagc_bits, 64)])
@c.record
class struct_mlx5_ifc_modify_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_modify_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_modify_lag_in_bits(c.Struct):
  SIZE = 192
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  ctx: struct_mlx5_ifc_lagc_bits
struct_mlx5_ifc_modify_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('field_select', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('ctx', struct_mlx5_ifc_lagc_bits, 128)])
@c.record
class struct_mlx5_ifc_query_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  ctx: struct_mlx5_ifc_lagc_bits
struct_mlx5_ifc_query_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('ctx', struct_mlx5_ifc_lagc_bits, 64)])
@c.record
class struct_mlx5_ifc_query_lag_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_lag_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_vport_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_create_vport_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_vport_lag_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_create_vport_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_vport_lag_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_vport_lag_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_destroy_vport_lag_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_vport_lag_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum128: dict[int, str] = {(MLX5_MODIFY_MEMIC_OP_MOD_ALLOC:=0): 'MLX5_MODIFY_MEMIC_OP_MOD_ALLOC', (MLX5_MODIFY_MEMIC_OP_MOD_DEALLOC:=1): 'MLX5_MODIFY_MEMIC_OP_MOD_DEALLOC'}
@c.record
class struct_mlx5_ifc_modify_memic_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[24]]
  memic_operation_type: c.Array[ctypes.c_ubyte, Literal[8]]
  memic_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_modify_memic_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[24]], 96), ('memic_operation_type', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('memic_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_modify_memic_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  memic_operation_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_modify_memic_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('memic_operation_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_alloc_memic_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  log_memic_addr_alignment: c.Array[ctypes.c_ubyte, Literal[8]]
  range_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  range_size: c.Array[ctypes.c_ubyte, Literal[32]]
  memic_size: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_memic_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 96), ('log_memic_addr_alignment', c.Array[ctypes.c_ubyte, Literal[8]], 120), ('range_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('range_size', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('memic_size', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_alloc_memic_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  memic_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_memic_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('memic_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_memic_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  memic_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  memic_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_memic_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('memic_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('memic_size', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_dealloc_memic_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_memic_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_umem_bits(c.Struct):
  SIZE = 256
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[128]]
  ats: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_81: c.Array[ctypes.c_ubyte, Literal[26]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  page_offset: c.Array[ctypes.c_ubyte, Literal[32]]
  num_of_mtt: c.Array[ctypes.c_ubyte, Literal[64]]
  mtt: c.Array[struct_mlx5_ifc_mtt_bits, Literal[0]]
struct_mlx5_ifc_umem_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[128]], 0), ('ats', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('reserved_at_81', c.Array[ctypes.c_ubyte, Literal[26]], 129), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 155), ('page_offset', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('num_of_mtt', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('mtt', c.Array[struct_mlx5_ifc_mtt_bits, Literal[0]], 256)])
@c.record
class struct_mlx5_ifc_uctx_bits(c.Struct):
  SIZE = 384
  cap: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[352]]
struct_mlx5_ifc_uctx_bits.register_fields([('cap', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[352]], 32)])
@c.record
class struct_mlx5_ifc_sw_icm_bits(c.Struct):
  SIZE = 512
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  log_sw_icm_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  sw_icm_start_addr: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[320]]
struct_mlx5_ifc_sw_icm_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('log_sw_icm_size', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('sw_icm_start_addr', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[320]], 192)])
@c.record
class struct_mlx5_ifc_geneve_tlv_option_bits(c.Struct):
  SIZE = 512
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  geneve_option_fte_index: c.Array[ctypes.c_ubyte, Literal[8]]
  option_class: c.Array[ctypes.c_ubyte, Literal[16]]
  option_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_78: c.Array[ctypes.c_ubyte, Literal[3]]
  option_data_length: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_geneve_tlv_option_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('geneve_option_fte_index', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('option_class', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('option_type', c.Array[ctypes.c_ubyte, Literal[8]], 112), ('reserved_at_78', c.Array[ctypes.c_ubyte, Literal[3]], 120), ('option_data_length', c.Array[ctypes.c_ubyte, Literal[5]], 123), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_create_umem_in_bits(c.Struct):
  SIZE = 384
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  umem: struct_mlx5_ifc_umem_bits
struct_mlx5_ifc_create_umem_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('umem', struct_mlx5_ifc_umem_bits, 128)])
@c.record
class struct_mlx5_ifc_create_umem_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  umem_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_umem_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('umem_id', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_umem_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[8]]
  umem_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_umem_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('umem_id', c.Array[ctypes.c_ubyte, Literal[24]], 72), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_umem_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_umem_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_uctx_in_bits(c.Struct):
  SIZE = 512
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  uctx: struct_mlx5_ifc_uctx_bits
struct_mlx5_ifc_create_uctx_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('uctx', struct_mlx5_ifc_uctx_bits, 128)])
@c.record
class struct_mlx5_ifc_create_uctx_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_create_uctx_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_uctx_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_destroy_uctx_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_destroy_uctx_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_destroy_uctx_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_create_sw_icm_in_bits(c.Struct):
  SIZE = 640
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  sw_icm: struct_mlx5_ifc_sw_icm_bits
struct_mlx5_ifc_create_sw_icm_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('sw_icm', struct_mlx5_ifc_sw_icm_bits, 128)])
@c.record
class struct_mlx5_ifc_create_geneve_tlv_option_in_bits(c.Struct):
  SIZE = 640
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  geneve_tlv_opt: struct_mlx5_ifc_geneve_tlv_option_bits
struct_mlx5_ifc_create_geneve_tlv_option_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('geneve_tlv_opt', struct_mlx5_ifc_geneve_tlv_option_bits, 128)])
@c.record
class struct_mlx5_ifc_mtrc_string_db_param_bits(c.Struct):
  SIZE = 64
  string_db_base_address: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[8]]
  string_db_size: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_mtrc_string_db_param_bits.register_fields([('string_db_base_address', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('string_db_size', c.Array[ctypes.c_ubyte, Literal[24]], 40)])
@c.record
class struct_mlx5_ifc_mtrc_cap_bits(c.Struct):
  SIZE = 1024
  trace_owner: c.Array[ctypes.c_ubyte, Literal[1]]
  trace_to_memory: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[4]]
  trc_ver: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[20]]
  num_string_db: c.Array[ctypes.c_ubyte, Literal[4]]
  first_string_trace: c.Array[ctypes.c_ubyte, Literal[8]]
  num_string_trace: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[40]]
  log_max_trace_buffer_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  string_db_param: c.Array[struct_mlx5_ifc_mtrc_string_db_param_bits, Literal[8]]
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_mtrc_cap_bits.register_fields([('trace_owner', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('trace_to_memory', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[4]], 2), ('trc_ver', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[20]], 8), ('num_string_db', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('first_string_trace', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('num_string_trace', c.Array[ctypes.c_ubyte, Literal[8]], 40), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[40]], 48), ('log_max_trace_buffer_size', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('string_db_param', c.Array[struct_mlx5_ifc_mtrc_string_db_param_bits, Literal[8]], 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[384]], 640)])
@c.record
class struct_mlx5_ifc_mtrc_conf_bits(c.Struct):
  SIZE = 1024
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[28]]
  trace_mode: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[24]]
  log_trace_buffer_size: c.Array[ctypes.c_ubyte, Literal[8]]
  trace_mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[928]]
struct_mlx5_ifc_mtrc_conf_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[28]], 0), ('trace_mode', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[24]], 32), ('log_trace_buffer_size', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('trace_mkey', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[928]], 96)])
@c.record
class struct_mlx5_ifc_mtrc_stdb_bits(c.Struct):
  SIZE = 64
  string_db_index: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_4: c.Array[ctypes.c_ubyte, Literal[4]]
  read_size: c.Array[ctypes.c_ubyte, Literal[24]]
  start_offset: c.Array[ctypes.c_ubyte, Literal[32]]
  string_db_data: c.Array[ctypes.c_ubyte, Literal[0]]
struct_mlx5_ifc_mtrc_stdb_bits.register_fields([('string_db_index', c.Array[ctypes.c_ubyte, Literal[4]], 0), ('reserved_at_4', c.Array[ctypes.c_ubyte, Literal[4]], 4), ('read_size', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('start_offset', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('string_db_data', c.Array[ctypes.c_ubyte, Literal[0]], 64)])
@c.record
class struct_mlx5_ifc_mtrc_ctrl_bits(c.Struct):
  SIZE = 512
  trace_status: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[2]]
  arm_event: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5: c.Array[ctypes.c_ubyte, Literal[11]]
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[43]]
  current_timestamp52_32: c.Array[ctypes.c_ubyte, Literal[21]]
  current_timestamp31_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_mtrc_ctrl_bits.register_fields([('trace_status', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('arm_event', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('reserved_at_5', c.Array[ctypes.c_ubyte, Literal[11]], 5), ('modify_field_select', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[43]], 32), ('current_timestamp52_32', c.Array[ctypes.c_ubyte, Literal[21]], 75), ('current_timestamp31_0', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_host_params_context_bits(c.Struct):
  SIZE = 512
  host_number: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[5]]
  host_pf_not_exist: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_14: c.Array[ctypes.c_ubyte, Literal[1]]
  host_pf_disabled: c.Array[ctypes.c_ubyte, Literal[1]]
  host_num_of_vfs: c.Array[ctypes.c_ubyte, Literal[16]]
  host_total_vfs: c.Array[ctypes.c_ubyte, Literal[16]]
  host_pci_bus: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  host_pci_device: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[16]]
  host_pci_function: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_host_params_context_bits.register_fields([('host_number', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[5]], 8), ('host_pf_not_exist', c.Array[ctypes.c_ubyte, Literal[1]], 13), ('reserved_at_14', c.Array[ctypes.c_ubyte, Literal[1]], 14), ('host_pf_disabled', c.Array[ctypes.c_ubyte, Literal[1]], 15), ('host_num_of_vfs', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('host_total_vfs', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('host_pci_bus', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('host_pci_device', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('host_pci_function', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_query_esw_functions_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_esw_functions_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_query_esw_functions_out_bits(c.Struct):
  SIZE = 1024
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  host_params_context: struct_mlx5_ifc_host_params_context_bits
  reserved_at_280: c.Array[ctypes.c_ubyte, Literal[384]]
  host_sf_enable: c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]]
struct_mlx5_ifc_query_esw_functions_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('host_params_context', struct_mlx5_ifc_host_params_context_bits, 128), ('reserved_at_280', c.Array[ctypes.c_ubyte, Literal[384]], 640), ('host_sf_enable', c.Array[c.Array[ctypes.c_ubyte, Literal[64]], Literal[0]], 1024)])
@c.record
class struct_mlx5_ifc_sf_partition_bits(c.Struct):
  SIZE = 32
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  log_num_sf: c.Array[ctypes.c_ubyte, Literal[8]]
  log_sf_bar_size: c.Array[ctypes.c_ubyte, Literal[8]]
struct_mlx5_ifc_sf_partition_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('log_num_sf', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('log_sf_bar_size', c.Array[ctypes.c_ubyte, Literal[8]], 24)])
@c.record
class struct_mlx5_ifc_query_sf_partitions_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[24]]
  num_sf_partitions: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  sf_partition: c.Array[struct_mlx5_ifc_sf_partition_bits, Literal[0]]
struct_mlx5_ifc_query_sf_partitions_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[24]], 64), ('num_sf_partitions', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('sf_partition', c.Array[struct_mlx5_ifc_sf_partition_bits, Literal[0]], 128)])
@c.record
class struct_mlx5_ifc_query_sf_partitions_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_query_sf_partitions_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_sf_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_dealloc_sf_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_dealloc_sf_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_dealloc_sf_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_alloc_sf_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_alloc_sf_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_alloc_sf_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_10: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  function_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_alloc_sf_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('reserved_at_10', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('function_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_affiliated_event_header_bits(c.Struct):
  SIZE = 64
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[16]]
  obj_type: c.Array[ctypes.c_ubyte, Literal[16]]
  obj_id: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_affiliated_event_header_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('obj_type', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('obj_id', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
_anonenum129: dict[int, str] = {(MLX5_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY:=12): 'MLX5_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY', (MLX5_GENERAL_OBJECT_TYPES_IPSEC:=19): 'MLX5_GENERAL_OBJECT_TYPES_IPSEC', (MLX5_GENERAL_OBJECT_TYPES_SAMPLER:=32): 'MLX5_GENERAL_OBJECT_TYPES_SAMPLER', (MLX5_GENERAL_OBJECT_TYPES_FLOW_METER_ASO:=36): 'MLX5_GENERAL_OBJECT_TYPES_FLOW_METER_ASO', (MLX5_GENERAL_OBJECT_TYPES_MACSEC:=39): 'MLX5_GENERAL_OBJECT_TYPES_MACSEC', (MLX5_GENERAL_OBJECT_TYPES_INT_KEK:=71): 'MLX5_GENERAL_OBJECT_TYPES_INT_KEK', (MLX5_GENERAL_OBJECT_TYPES_RDMA_CTRL:=83): 'MLX5_GENERAL_OBJECT_TYPES_RDMA_CTRL', (MLX5_GENERAL_OBJECT_TYPES_PCIE_CONG_EVENT:=88): 'MLX5_GENERAL_OBJECT_TYPES_PCIE_CONG_EVENT', (MLX5_GENERAL_OBJECT_TYPES_FLOW_TABLE_ALIAS:=65301): 'MLX5_GENERAL_OBJECT_TYPES_FLOW_TABLE_ALIAS'}
_anonenum130: dict[int, str] = {(MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY:=0): 'MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_ENCRYPTION_KEY', (MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC:=1): 'MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_IPSEC', (MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_SAMPLER:=2): 'MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_SAMPLER', (MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_FLOW_METER_ASO:=3): 'MLX5_HCA_CAP_GENERAL_OBJECT_TYPES_FLOW_METER_ASO'}
_anonenum131: dict[int, str] = {(MLX5_HCA_CAP_2_GENERAL_OBJECT_TYPES_RDMA_CTRL:=0): 'MLX5_HCA_CAP_2_GENERAL_OBJECT_TYPES_RDMA_CTRL', (MLX5_HCA_CAP_2_GENERAL_OBJECT_TYPES_PCIE_CONG_EVENT:=1): 'MLX5_HCA_CAP_2_GENERAL_OBJECT_TYPES_PCIE_CONG_EVENT'}
_anonenum132: dict[int, str] = {(MLX5_IPSEC_OBJECT_ICV_LEN_16B:=0): 'MLX5_IPSEC_OBJECT_ICV_LEN_16B'}
_anonenum133: dict[int, str] = {(MLX5_IPSEC_ASO_REG_C_0_1:=0): 'MLX5_IPSEC_ASO_REG_C_0_1', (MLX5_IPSEC_ASO_REG_C_2_3:=1): 'MLX5_IPSEC_ASO_REG_C_2_3', (MLX5_IPSEC_ASO_REG_C_4_5:=2): 'MLX5_IPSEC_ASO_REG_C_4_5', (MLX5_IPSEC_ASO_REG_C_6_7:=3): 'MLX5_IPSEC_ASO_REG_C_6_7'}
_anonenum134: dict[int, str] = {(MLX5_IPSEC_ASO_MODE:=0): 'MLX5_IPSEC_ASO_MODE', (MLX5_IPSEC_ASO_REPLAY_PROTECTION:=1): 'MLX5_IPSEC_ASO_REPLAY_PROTECTION', (MLX5_IPSEC_ASO_INC_SN:=2): 'MLX5_IPSEC_ASO_INC_SN'}
_anonenum135: dict[int, str] = {(MLX5_IPSEC_ASO_REPLAY_WIN_32BIT:=0): 'MLX5_IPSEC_ASO_REPLAY_WIN_32BIT', (MLX5_IPSEC_ASO_REPLAY_WIN_64BIT:=1): 'MLX5_IPSEC_ASO_REPLAY_WIN_64BIT', (MLX5_IPSEC_ASO_REPLAY_WIN_128BIT:=2): 'MLX5_IPSEC_ASO_REPLAY_WIN_128BIT', (MLX5_IPSEC_ASO_REPLAY_WIN_256BIT:=3): 'MLX5_IPSEC_ASO_REPLAY_WIN_256BIT'}
@c.record
class struct_mlx5_ifc_ipsec_aso_bits(c.Struct):
  SIZE = 512
  valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_201: c.Array[ctypes.c_ubyte, Literal[1]]
  mode: c.Array[ctypes.c_ubyte, Literal[2]]
  window_sz: c.Array[ctypes.c_ubyte, Literal[2]]
  soft_lft_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  hard_lft_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  remove_flow_enable: c.Array[ctypes.c_ubyte, Literal[1]]
  esn_event_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_20a: c.Array[ctypes.c_ubyte, Literal[22]]
  remove_flow_pkt_cnt: c.Array[ctypes.c_ubyte, Literal[32]]
  remove_flow_soft_lft: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_260: c.Array[ctypes.c_ubyte, Literal[128]]
  mode_parameter: c.Array[ctypes.c_ubyte, Literal[32]]
  replay_protection_window: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_ipsec_aso_bits.register_fields([('valid', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_201', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('mode', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('window_sz', c.Array[ctypes.c_ubyte, Literal[2]], 4), ('soft_lft_arm', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('hard_lft_arm', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('remove_flow_enable', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('esn_event_arm', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('reserved_at_20a', c.Array[ctypes.c_ubyte, Literal[22]], 10), ('remove_flow_pkt_cnt', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('remove_flow_soft_lft', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_260', c.Array[ctypes.c_ubyte, Literal[128]], 96), ('mode_parameter', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('replay_protection_window', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
@c.record
class struct_mlx5_ifc_ipsec_obj_bits(c.Struct):
  SIZE = 1024
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  full_offload: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[1]]
  esn_en: c.Array[ctypes.c_ubyte, Literal[1]]
  esn_overlap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[2]]
  icv_length: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[4]]
  aso_return_reg: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[16]]
  esn_msb: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  dekn: c.Array[ctypes.c_ubyte, Literal[24]]
  salt: c.Array[ctypes.c_ubyte, Literal[32]]
  implicit_iv: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  ipsec_aso_access_pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
  ipsec_aso: struct_mlx5_ifc_ipsec_aso_bits
struct_mlx5_ifc_ipsec_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('full_offload', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('esn_en', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('esn_overlap', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[2]], 68), ('icv_length', c.Array[ctypes.c_ubyte, Literal[2]], 70), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[4]], 72), ('aso_return_reg', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('esn_msb', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('dekn', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('salt', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('implicit_iv', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('ipsec_aso_access_pd', c.Array[ctypes.c_ubyte, Literal[24]], 264), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288), ('ipsec_aso', struct_mlx5_ifc_ipsec_aso_bits, 512)])
@c.record
class struct_mlx5_ifc_create_ipsec_obj_in_bits(c.Struct):
  SIZE = 1152
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  ipsec_object: struct_mlx5_ifc_ipsec_obj_bits
struct_mlx5_ifc_create_ipsec_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('ipsec_object', struct_mlx5_ifc_ipsec_obj_bits, 128)])
_anonenum136: dict[int, str] = {(MLX5_MODIFY_IPSEC_BITMASK_ESN_OVERLAP:=0): 'MLX5_MODIFY_IPSEC_BITMASK_ESN_OVERLAP', (MLX5_MODIFY_IPSEC_BITMASK_ESN_MSB:=1): 'MLX5_MODIFY_IPSEC_BITMASK_ESN_MSB'}
@c.record
class struct_mlx5_ifc_query_ipsec_obj_out_bits(c.Struct):
  SIZE = 1152
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  ipsec_object: struct_mlx5_ifc_ipsec_obj_bits
struct_mlx5_ifc_query_ipsec_obj_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('ipsec_object', struct_mlx5_ifc_ipsec_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_modify_ipsec_obj_in_bits(c.Struct):
  SIZE = 1152
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  ipsec_object: struct_mlx5_ifc_ipsec_obj_bits
struct_mlx5_ifc_modify_ipsec_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('ipsec_object', struct_mlx5_ifc_ipsec_obj_bits, 128)])
_anonenum137: dict[int, str] = {(MLX5_MACSEC_ASO_REPLAY_PROTECTION:=1): 'MLX5_MACSEC_ASO_REPLAY_PROTECTION'}
_anonenum138: dict[int, str] = {(MLX5_MACSEC_ASO_REPLAY_WIN_32BIT:=0): 'MLX5_MACSEC_ASO_REPLAY_WIN_32BIT', (MLX5_MACSEC_ASO_REPLAY_WIN_64BIT:=1): 'MLX5_MACSEC_ASO_REPLAY_WIN_64BIT', (MLX5_MACSEC_ASO_REPLAY_WIN_128BIT:=2): 'MLX5_MACSEC_ASO_REPLAY_WIN_128BIT', (MLX5_MACSEC_ASO_REPLAY_WIN_256BIT:=3): 'MLX5_MACSEC_ASO_REPLAY_WIN_256BIT'}
@c.record
class struct_mlx5_ifc_macsec_aso_bits(c.Struct):
  SIZE = 512
  valid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_1: c.Array[ctypes.c_ubyte, Literal[1]]
  mode: c.Array[ctypes.c_ubyte, Literal[2]]
  window_size: c.Array[ctypes.c_ubyte, Literal[2]]
  soft_lifetime_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  hard_lifetime_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  remove_flow_enable: c.Array[ctypes.c_ubyte, Literal[1]]
  epn_event_arm: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_a: c.Array[ctypes.c_ubyte, Literal[22]]
  remove_flow_packet_count: c.Array[ctypes.c_ubyte, Literal[32]]
  remove_flow_soft_lifetime: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[128]]
  mode_parameter: c.Array[ctypes.c_ubyte, Literal[32]]
  replay_protection_window: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
struct_mlx5_ifc_macsec_aso_bits.register_fields([('valid', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('reserved_at_1', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('mode', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('window_size', c.Array[ctypes.c_ubyte, Literal[2]], 4), ('soft_lifetime_arm', c.Array[ctypes.c_ubyte, Literal[1]], 6), ('hard_lifetime_arm', c.Array[ctypes.c_ubyte, Literal[1]], 7), ('remove_flow_enable', c.Array[ctypes.c_ubyte, Literal[1]], 8), ('epn_event_arm', c.Array[ctypes.c_ubyte, Literal[1]], 9), ('reserved_at_a', c.Array[ctypes.c_ubyte, Literal[22]], 10), ('remove_flow_packet_count', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('remove_flow_soft_lifetime', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[128]], 96), ('mode_parameter', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('replay_protection_window', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 256)])
@c.record
class struct_mlx5_ifc_macsec_offload_obj_bits(c.Struct):
  SIZE = 1024
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  confidentiality_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_41: c.Array[ctypes.c_ubyte, Literal[1]]
  epn_en: c.Array[ctypes.c_ubyte, Literal[1]]
  epn_overlap: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[2]]
  confidentiality_offset: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_48: c.Array[ctypes.c_ubyte, Literal[4]]
  aso_return_reg: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[16]]
  epn_msb: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  dekn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  sci: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  macsec_aso_access_pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[96]]
  salt: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[3]]
  reserved_at_1e0: c.Array[ctypes.c_ubyte, Literal[32]]
  macsec_aso: struct_mlx5_ifc_macsec_aso_bits
struct_mlx5_ifc_macsec_offload_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('confidentiality_en', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('reserved_at_41', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('epn_en', c.Array[ctypes.c_ubyte, Literal[1]], 66), ('epn_overlap', c.Array[ctypes.c_ubyte, Literal[1]], 67), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[2]], 68), ('confidentiality_offset', c.Array[ctypes.c_ubyte, Literal[2]], 70), ('reserved_at_48', c.Array[ctypes.c_ubyte, Literal[4]], 72), ('aso_return_reg', c.Array[ctypes.c_ubyte, Literal[4]], 76), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('epn_msb', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('dekn', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('sci', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('macsec_aso_access_pd', c.Array[ctypes.c_ubyte, Literal[24]], 264), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[96]], 288), ('salt', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[3]], 384), ('reserved_at_1e0', c.Array[ctypes.c_ubyte, Literal[32]], 480), ('macsec_aso', struct_mlx5_ifc_macsec_aso_bits, 512)])
@c.record
class struct_mlx5_ifc_create_macsec_obj_in_bits(c.Struct):
  SIZE = 1152
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  macsec_object: struct_mlx5_ifc_macsec_offload_obj_bits
struct_mlx5_ifc_create_macsec_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('macsec_object', struct_mlx5_ifc_macsec_offload_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_modify_macsec_obj_in_bits(c.Struct):
  SIZE = 1152
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  macsec_object: struct_mlx5_ifc_macsec_offload_obj_bits
struct_mlx5_ifc_modify_macsec_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('macsec_object', struct_mlx5_ifc_macsec_offload_obj_bits, 128)])
_anonenum139: dict[int, str] = {(MLX5_MODIFY_MACSEC_BITMASK_EPN_OVERLAP:=0): 'MLX5_MODIFY_MACSEC_BITMASK_EPN_OVERLAP', (MLX5_MODIFY_MACSEC_BITMASK_EPN_MSB:=1): 'MLX5_MODIFY_MACSEC_BITMASK_EPN_MSB'}
@c.record
class struct_mlx5_ifc_query_macsec_obj_out_bits(c.Struct):
  SIZE = 1152
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  macsec_object: struct_mlx5_ifc_macsec_offload_obj_bits
struct_mlx5_ifc_query_macsec_obj_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('macsec_object', struct_mlx5_ifc_macsec_offload_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_wrapped_dek_bits(c.Struct):
  SIZE = 1024
  gcm_iv: c.Array[ctypes.c_ubyte, Literal[96]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  const0: c.Array[ctypes.c_ubyte, Literal[1]]
  key_size: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_82: c.Array[ctypes.c_ubyte, Literal[2]]
  key2_invalid: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_85: c.Array[ctypes.c_ubyte, Literal[3]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  key_purpose: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_a5: c.Array[ctypes.c_ubyte, Literal[19]]
  kek_id: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[64]]
  key1: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
  key2: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
  reserved_at_300: c.Array[ctypes.c_ubyte, Literal[64]]
  const1: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_341: c.Array[ctypes.c_ubyte, Literal[31]]
  reserved_at_360: c.Array[ctypes.c_ubyte, Literal[32]]
  auth_tag: c.Array[ctypes.c_ubyte, Literal[128]]
struct_mlx5_ifc_wrapped_dek_bits.register_fields([('gcm_iv', c.Array[ctypes.c_ubyte, Literal[96]], 0), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('const0', c.Array[ctypes.c_ubyte, Literal[1]], 128), ('key_size', c.Array[ctypes.c_ubyte, Literal[1]], 129), ('reserved_at_82', c.Array[ctypes.c_ubyte, Literal[2]], 130), ('key2_invalid', c.Array[ctypes.c_ubyte, Literal[1]], 132), ('reserved_at_85', c.Array[ctypes.c_ubyte, Literal[3]], 133), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('key_purpose', c.Array[ctypes.c_ubyte, Literal[5]], 160), ('reserved_at_a5', c.Array[ctypes.c_ubyte, Literal[19]], 165), ('kek_id', c.Array[ctypes.c_ubyte, Literal[8]], 184), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('key1', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 256), ('key2', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 512), ('reserved_at_300', c.Array[ctypes.c_ubyte, Literal[64]], 768), ('const1', c.Array[ctypes.c_ubyte, Literal[1]], 832), ('reserved_at_341', c.Array[ctypes.c_ubyte, Literal[31]], 833), ('reserved_at_360', c.Array[ctypes.c_ubyte, Literal[32]], 864), ('auth_tag', c.Array[ctypes.c_ubyte, Literal[128]], 896)])
@c.record
class struct_mlx5_ifc_encryption_key_obj_bits(c.Struct):
  SIZE = 4096
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  state: c.Array[ctypes.c_ubyte, Literal[8]]
  sw_wrapped: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_49: c.Array[ctypes.c_ubyte, Literal[11]]
  key_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[4]]
  key_purpose: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[256]]
  opaque: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_1c0: c.Array[ctypes.c_ubyte, Literal[64]]
  key: c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]]
  sw_wrapped_dek: c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]]
  reserved_at_a00: c.Array[ctypes.c_ubyte, Literal[1536]]
struct_mlx5_ifc_encryption_key_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('state', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('sw_wrapped', c.Array[ctypes.c_ubyte, Literal[1]], 72), ('reserved_at_49', c.Array[ctypes.c_ubyte, Literal[11]], 73), ('key_size', c.Array[ctypes.c_ubyte, Literal[4]], 84), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[4]], 88), ('key_purpose', c.Array[ctypes.c_ubyte, Literal[4]], 92), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[256]], 128), ('opaque', c.Array[ctypes.c_ubyte, Literal[64]], 384), ('reserved_at_1c0', c.Array[ctypes.c_ubyte, Literal[64]], 448), ('key', c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]], 512), ('sw_wrapped_dek', c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]], 1536), ('reserved_at_a00', c.Array[ctypes.c_ubyte, Literal[1536]], 2560)])
@c.record
class struct_mlx5_ifc_create_encryption_key_in_bits(c.Struct):
  SIZE = 4224
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  encryption_key_object: struct_mlx5_ifc_encryption_key_obj_bits
struct_mlx5_ifc_create_encryption_key_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('encryption_key_object', struct_mlx5_ifc_encryption_key_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_modify_encryption_key_in_bits(c.Struct):
  SIZE = 4224
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  encryption_key_object: struct_mlx5_ifc_encryption_key_obj_bits
struct_mlx5_ifc_modify_encryption_key_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('encryption_key_object', struct_mlx5_ifc_encryption_key_obj_bits, 128)])
_anonenum140: dict[int, str] = {(MLX5_FLOW_METER_MODE_BYTES_IP_LENGTH:=0): 'MLX5_FLOW_METER_MODE_BYTES_IP_LENGTH', (MLX5_FLOW_METER_MODE_BYTES_CALC_WITH_L2:=1): 'MLX5_FLOW_METER_MODE_BYTES_CALC_WITH_L2', (MLX5_FLOW_METER_MODE_BYTES_CALC_WITH_L2_IPG:=2): 'MLX5_FLOW_METER_MODE_BYTES_CALC_WITH_L2_IPG', (MLX5_FLOW_METER_MODE_NUM_PACKETS:=3): 'MLX5_FLOW_METER_MODE_NUM_PACKETS'}
@c.record
class struct_mlx5_ifc_flow_meter_parameters_bits(c.Struct):
  SIZE = 256
  valid: c.Array[ctypes.c_ubyte, Literal[1]]
  bucket_overflow: c.Array[ctypes.c_ubyte, Literal[1]]
  start_color: c.Array[ctypes.c_ubyte, Literal[2]]
  both_buckets_on_green: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_5: c.Array[ctypes.c_ubyte, Literal[1]]
  meter_mode: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[3]]
  cbs_exponent: c.Array[ctypes.c_ubyte, Literal[5]]
  cbs_mantissa: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[3]]
  cir_exponent: c.Array[ctypes.c_ubyte, Literal[5]]
  cir_mantissa: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[3]]
  ebs_exponent: c.Array[ctypes.c_ubyte, Literal[5]]
  ebs_mantissa: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_90: c.Array[ctypes.c_ubyte, Literal[3]]
  eir_exponent: c.Array[ctypes.c_ubyte, Literal[5]]
  eir_mantissa: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[96]]
struct_mlx5_ifc_flow_meter_parameters_bits.register_fields([('valid', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('bucket_overflow', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('start_color', c.Array[ctypes.c_ubyte, Literal[2]], 2), ('both_buckets_on_green', c.Array[ctypes.c_ubyte, Literal[1]], 4), ('reserved_at_5', c.Array[ctypes.c_ubyte, Literal[1]], 5), ('meter_mode', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[3]], 64), ('cbs_exponent', c.Array[ctypes.c_ubyte, Literal[5]], 67), ('cbs_mantissa', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[3]], 80), ('cir_exponent', c.Array[ctypes.c_ubyte, Literal[5]], 83), ('cir_mantissa', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[3]], 128), ('ebs_exponent', c.Array[ctypes.c_ubyte, Literal[5]], 131), ('ebs_mantissa', c.Array[ctypes.c_ubyte, Literal[8]], 136), ('reserved_at_90', c.Array[ctypes.c_ubyte, Literal[3]], 144), ('eir_exponent', c.Array[ctypes.c_ubyte, Literal[5]], 147), ('eir_mantissa', c.Array[ctypes.c_ubyte, Literal[8]], 152), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[96]], 160)])
@c.record
class struct_mlx5_ifc_flow_meter_aso_obj_bits(c.Struct):
  SIZE = 1024
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  meter_aso_access_pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[352]]
  flow_meter_parameters: c.Array[struct_mlx5_ifc_flow_meter_parameters_bits, Literal[2]]
struct_mlx5_ifc_flow_meter_aso_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('meter_aso_access_pd', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[352]], 160), ('flow_meter_parameters', c.Array[struct_mlx5_ifc_flow_meter_parameters_bits, Literal[2]], 512)])
@c.record
class struct_mlx5_ifc_create_flow_meter_aso_obj_in_bits(c.Struct):
  SIZE = 1152
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  flow_meter_aso_obj: struct_mlx5_ifc_flow_meter_aso_obj_bits
struct_mlx5_ifc_create_flow_meter_aso_obj_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('flow_meter_aso_obj', struct_mlx5_ifc_flow_meter_aso_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_int_kek_obj_bits(c.Struct):
  SIZE = 2048
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  state: c.Array[ctypes.c_ubyte, Literal[8]]
  auto_gen: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_49: c.Array[ctypes.c_ubyte, Literal[11]]
  key_size: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[8]]
  pd: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
  key: c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]]
  reserved_at_600: c.Array[ctypes.c_ubyte, Literal[512]]
struct_mlx5_ifc_int_kek_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('state', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('auto_gen', c.Array[ctypes.c_ubyte, Literal[1]], 72), ('reserved_at_49', c.Array[ctypes.c_ubyte, Literal[11]], 73), ('key_size', c.Array[ctypes.c_ubyte, Literal[4]], 84), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[8]], 96), ('pd', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128), ('key', c.Array[c.Array[ctypes.c_ubyte, Literal[128]], Literal[8]], 512), ('reserved_at_600', c.Array[ctypes.c_ubyte, Literal[512]], 1536)])
@c.record
class struct_mlx5_ifc_create_int_kek_obj_in_bits(c.Struct):
  SIZE = 2176
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  int_kek_object: struct_mlx5_ifc_int_kek_obj_bits
struct_mlx5_ifc_create_int_kek_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('int_kek_object', struct_mlx5_ifc_int_kek_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_create_int_kek_obj_out_bits(c.Struct):
  SIZE = 2176
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  int_kek_object: struct_mlx5_ifc_int_kek_obj_bits
struct_mlx5_ifc_create_int_kek_obj_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('int_kek_object', struct_mlx5_ifc_int_kek_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_sampler_obj_bits(c.Struct):
  SIZE = 480
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  table_type: c.Array[ctypes.c_ubyte, Literal[8]]
  level: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_50: c.Array[ctypes.c_ubyte, Literal[15]]
  ignore_flow_level: c.Array[ctypes.c_ubyte, Literal[1]]
  sample_ratio: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[8]]
  sample_table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  default_table_id: c.Array[ctypes.c_ubyte, Literal[24]]
  sw_steering_icm_address_rx: c.Array[ctypes.c_ubyte, Literal[64]]
  sw_steering_icm_address_tx: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_140: c.Array[ctypes.c_ubyte, Literal[160]]
struct_mlx5_ifc_sampler_obj_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('table_type', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('level', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('reserved_at_50', c.Array[ctypes.c_ubyte, Literal[15]], 80), ('ignore_flow_level', c.Array[ctypes.c_ubyte, Literal[1]], 95), ('sample_ratio', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[8]], 128), ('sample_table_id', c.Array[ctypes.c_ubyte, Literal[24]], 136), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('default_table_id', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('sw_steering_icm_address_rx', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('sw_steering_icm_address_tx', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('reserved_at_140', c.Array[ctypes.c_ubyte, Literal[160]], 320)])
@c.record
class struct_mlx5_ifc_create_sampler_obj_in_bits(c.Struct):
  SIZE = 608
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  sampler_object: struct_mlx5_ifc_sampler_obj_bits
struct_mlx5_ifc_create_sampler_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('sampler_object', struct_mlx5_ifc_sampler_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_query_sampler_obj_out_bits(c.Struct):
  SIZE = 608
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  sampler_object: struct_mlx5_ifc_sampler_obj_bits
struct_mlx5_ifc_query_sampler_obj_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('sampler_object', struct_mlx5_ifc_sampler_obj_bits, 128)])
_anonenum141: dict[int, str] = {(MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_128:=0): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_128', (MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_256:=1): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_KEY_SIZE_256'}
_anonenum142: dict[int, str] = {(MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_TLS:=1): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_TLS', (MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_IPSEC:=2): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_IPSEC', (MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_MACSEC:=4): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_MACSEC', (MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_PSP:=6): 'MLX5_GENERAL_OBJECT_TYPE_ENCRYPTION_KEY_PURPOSE_PSP'}
@c.record
class struct_mlx5_ifc_tls_static_params_bits(c.Struct):
  SIZE = 512
  const_2: c.Array[ctypes.c_ubyte, Literal[2]]
  tls_version: c.Array[ctypes.c_ubyte, Literal[4]]
  const_1: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[20]]
  encryption_standard: c.Array[ctypes.c_ubyte, Literal[4]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[32]]
  initial_record_number: c.Array[ctypes.c_ubyte, Literal[64]]
  resync_tcp_sn: c.Array[ctypes.c_ubyte, Literal[32]]
  gcm_iv: c.Array[ctypes.c_ubyte, Literal[32]]
  implicit_iv: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[8]]
  dek_index: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_120: c.Array[ctypes.c_ubyte, Literal[224]]
struct_mlx5_ifc_tls_static_params_bits.register_fields([('const_2', c.Array[ctypes.c_ubyte, Literal[2]], 0), ('tls_version', c.Array[ctypes.c_ubyte, Literal[4]], 2), ('const_1', c.Array[ctypes.c_ubyte, Literal[2]], 6), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[20]], 8), ('encryption_standard', c.Array[ctypes.c_ubyte, Literal[4]], 28), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('initial_record_number', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('resync_tcp_sn', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('gcm_iv', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('implicit_iv', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[8]], 256), ('dek_index', c.Array[ctypes.c_ubyte, Literal[24]], 264), ('reserved_at_120', c.Array[ctypes.c_ubyte, Literal[224]], 288)])
@c.record
class struct_mlx5_ifc_tls_progress_params_bits(c.Struct):
  SIZE = 96
  next_record_tcp_sn: c.Array[ctypes.c_ubyte, Literal[32]]
  hw_resync_tcp_sn: c.Array[ctypes.c_ubyte, Literal[32]]
  record_tracker_state: c.Array[ctypes.c_ubyte, Literal[2]]
  auth_state: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_44: c.Array[ctypes.c_ubyte, Literal[4]]
  hw_offset_record_number: c.Array[ctypes.c_ubyte, Literal[24]]
struct_mlx5_ifc_tls_progress_params_bits.register_fields([('next_record_tcp_sn', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('hw_resync_tcp_sn', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('record_tracker_state', c.Array[ctypes.c_ubyte, Literal[2]], 64), ('auth_state', c.Array[ctypes.c_ubyte, Literal[2]], 66), ('reserved_at_44', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('hw_offset_record_number', c.Array[ctypes.c_ubyte, Literal[24]], 72)])
_anonenum143: dict[int, str] = {(MLX5_MTT_PERM_READ:=1): 'MLX5_MTT_PERM_READ', (MLX5_MTT_PERM_WRITE:=2): 'MLX5_MTT_PERM_WRITE', (MLX5_MTT_PERM_RW:=3): 'MLX5_MTT_PERM_RW'}
_anonenum144: dict[int, str] = {(MLX5_SUSPEND_VHCA_IN_OP_MOD_SUSPEND_INITIATOR:=0): 'MLX5_SUSPEND_VHCA_IN_OP_MOD_SUSPEND_INITIATOR', (MLX5_SUSPEND_VHCA_IN_OP_MOD_SUSPEND_RESPONDER:=1): 'MLX5_SUSPEND_VHCA_IN_OP_MOD_SUSPEND_RESPONDER'}
@c.record
class struct_mlx5_ifc_suspend_vhca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_suspend_vhca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_suspend_vhca_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_suspend_vhca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
_anonenum145: dict[int, str] = {(MLX5_RESUME_VHCA_IN_OP_MOD_RESUME_RESPONDER:=0): 'MLX5_RESUME_VHCA_IN_OP_MOD_RESUME_RESPONDER', (MLX5_RESUME_VHCA_IN_OP_MOD_RESUME_INITIATOR:=1): 'MLX5_RESUME_VHCA_IN_OP_MOD_RESUME_INITIATOR'}
@c.record
class struct_mlx5_ifc_resume_vhca_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_resume_vhca_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_resume_vhca_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_resume_vhca_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_query_vhca_migration_state_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  incremental: c.Array[ctypes.c_ubyte, Literal[1]]
  chunk: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[14]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_query_vhca_migration_state_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('incremental', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('chunk', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[14]], 66), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_query_vhca_migration_state_out_bits(c.Struct):
  SIZE = 512
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
  required_umem_size: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[32]]
  remaining_total_size: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_100: c.Array[ctypes.c_ubyte, Literal[256]]
struct_mlx5_ifc_query_vhca_migration_state_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('required_umem_size', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[32]], 160), ('remaining_total_size', c.Array[ctypes.c_ubyte, Literal[64]], 192), ('reserved_at_100', c.Array[ctypes.c_ubyte, Literal[256]], 256)])
@c.record
class struct_mlx5_ifc_save_vhca_state_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  incremental: c.Array[ctypes.c_ubyte, Literal[1]]
  set_track: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[14]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  va: c.Array[ctypes.c_ubyte, Literal[64]]
  mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  size: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_save_vhca_state_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('incremental', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('set_track', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[14]], 66), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('va', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('mkey', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('size', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_save_vhca_state_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  actual_image_size: c.Array[ctypes.c_ubyte, Literal[32]]
  next_required_umem_size: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_save_vhca_state_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('actual_image_size', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('next_required_umem_size', c.Array[ctypes.c_ubyte, Literal[32]], 96)])
@c.record
class struct_mlx5_ifc_load_vhca_state_in_bits(c.Struct):
  SIZE = 256
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  va: c.Array[ctypes.c_ubyte, Literal[64]]
  mkey: c.Array[ctypes.c_ubyte, Literal[32]]
  size: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_load_vhca_state_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('va', c.Array[ctypes.c_ubyte, Literal[64]], 128), ('mkey', c.Array[ctypes.c_ubyte, Literal[32]], 192), ('size', c.Array[ctypes.c_ubyte, Literal[32]], 224)])
@c.record
class struct_mlx5_ifc_load_vhca_state_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_load_vhca_state_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_adv_rdma_cap_bits(c.Struct):
  SIZE = 16384
  rdma_transport_manager: c.Array[ctypes.c_ubyte, Literal[1]]
  rdma_transport_manager_other_eswitch: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_2: c.Array[ctypes.c_ubyte, Literal[30]]
  rcx_type: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[2]]
  ps_entry_log_max_value: c.Array[ctypes.c_ubyte, Literal[6]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[6]]
  qp_max_ps_num_entry: c.Array[ctypes.c_ubyte, Literal[10]]
  mp_max_num_queues: c.Array[ctypes.c_ubyte, Literal[8]]
  ps_user_context_max_log_size: c.Array[ctypes.c_ubyte, Literal[8]]
  message_based_qp_and_striding_wq: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_58: c.Array[ctypes.c_ubyte, Literal[8]]
  max_receive_send_message_size_stride: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_70: c.Array[ctypes.c_ubyte, Literal[16]]
  max_receive_send_message_size_byte: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[352]]
  rdma_transport_rx_flow_table_properties: struct_mlx5_ifc_flow_table_prop_layout_bits
  rdma_transport_tx_flow_table_properties: struct_mlx5_ifc_flow_table_prop_layout_bits
  rdma_transport_rx_ft_field_support_2: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  rdma_transport_tx_ft_field_support_2: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  rdma_transport_rx_ft_field_bitmask_support_2: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  rdma_transport_tx_ft_field_bitmask_support_2: struct_mlx5_ifc_flow_table_fields_supported_2_bits
  reserved_at_800: c.Array[ctypes.c_ubyte, Literal[14336]]
struct_mlx5_ifc_adv_rdma_cap_bits.register_fields([('rdma_transport_manager', c.Array[ctypes.c_ubyte, Literal[1]], 0), ('rdma_transport_manager_other_eswitch', c.Array[ctypes.c_ubyte, Literal[1]], 1), ('reserved_at_2', c.Array[ctypes.c_ubyte, Literal[30]], 2), ('rcx_type', c.Array[ctypes.c_ubyte, Literal[8]], 32), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[2]], 40), ('ps_entry_log_max_value', c.Array[ctypes.c_ubyte, Literal[6]], 42), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[6]], 48), ('qp_max_ps_num_entry', c.Array[ctypes.c_ubyte, Literal[10]], 54), ('mp_max_num_queues', c.Array[ctypes.c_ubyte, Literal[8]], 64), ('ps_user_context_max_log_size', c.Array[ctypes.c_ubyte, Literal[8]], 72), ('message_based_qp_and_striding_wq', c.Array[ctypes.c_ubyte, Literal[8]], 80), ('reserved_at_58', c.Array[ctypes.c_ubyte, Literal[8]], 88), ('max_receive_send_message_size_stride', c.Array[ctypes.c_ubyte, Literal[16]], 96), ('reserved_at_70', c.Array[ctypes.c_ubyte, Literal[16]], 112), ('max_receive_send_message_size_byte', c.Array[ctypes.c_ubyte, Literal[32]], 128), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[352]], 160), ('rdma_transport_rx_flow_table_properties', struct_mlx5_ifc_flow_table_prop_layout_bits, 512), ('rdma_transport_tx_flow_table_properties', struct_mlx5_ifc_flow_table_prop_layout_bits, 1024), ('rdma_transport_rx_ft_field_support_2', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 1536), ('rdma_transport_tx_ft_field_support_2', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 1664), ('rdma_transport_rx_ft_field_bitmask_support_2', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 1792), ('rdma_transport_tx_ft_field_bitmask_support_2', struct_mlx5_ifc_flow_table_fields_supported_2_bits, 1920), ('reserved_at_800', c.Array[ctypes.c_ubyte, Literal[14336]], 2048)])
@c.record
class struct_mlx5_ifc_adv_virtualization_cap_bits(c.Struct):
  SIZE = 2048
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[3]]
  pg_track_log_max_num: c.Array[ctypes.c_ubyte, Literal[5]]
  pg_track_max_num_range: c.Array[ctypes.c_ubyte, Literal[8]]
  pg_track_log_min_addr_space: c.Array[ctypes.c_ubyte, Literal[8]]
  pg_track_log_max_addr_space: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[3]]
  pg_track_log_min_msg_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_28: c.Array[ctypes.c_ubyte, Literal[3]]
  pg_track_log_max_msg_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_30: c.Array[ctypes.c_ubyte, Literal[3]]
  pg_track_log_min_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_38: c.Array[ctypes.c_ubyte, Literal[3]]
  pg_track_log_max_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[1984]]
struct_mlx5_ifc_adv_virtualization_cap_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[3]], 0), ('pg_track_log_max_num', c.Array[ctypes.c_ubyte, Literal[5]], 3), ('pg_track_max_num_range', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pg_track_log_min_addr_space', c.Array[ctypes.c_ubyte, Literal[8]], 16), ('pg_track_log_max_addr_space', c.Array[ctypes.c_ubyte, Literal[8]], 24), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[3]], 32), ('pg_track_log_min_msg_size', c.Array[ctypes.c_ubyte, Literal[5]], 35), ('reserved_at_28', c.Array[ctypes.c_ubyte, Literal[3]], 40), ('pg_track_log_max_msg_size', c.Array[ctypes.c_ubyte, Literal[5]], 43), ('reserved_at_30', c.Array[ctypes.c_ubyte, Literal[3]], 48), ('pg_track_log_min_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 51), ('reserved_at_38', c.Array[ctypes.c_ubyte, Literal[3]], 56), ('pg_track_log_max_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 59), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[1984]], 64)])
@c.record
class struct_mlx5_ifc_page_track_report_entry_bits(c.Struct):
  SIZE = 64
  dirty_address_high: c.Array[ctypes.c_ubyte, Literal[32]]
  dirty_address_low: c.Array[ctypes.c_ubyte, Literal[32]]
struct_mlx5_ifc_page_track_report_entry_bits.register_fields([('dirty_address_high', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('dirty_address_low', c.Array[ctypes.c_ubyte, Literal[32]], 32)])
_anonenum146: dict[int, str] = {(MLX5_PAGE_TRACK_STATE_TRACKING:=0): 'MLX5_PAGE_TRACK_STATE_TRACKING', (MLX5_PAGE_TRACK_STATE_REPORTING:=1): 'MLX5_PAGE_TRACK_STATE_REPORTING', (MLX5_PAGE_TRACK_STATE_ERROR:=2): 'MLX5_PAGE_TRACK_STATE_ERROR'}
@c.record
class struct_mlx5_ifc_page_track_range_bits(c.Struct):
  SIZE = 128
  start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  length: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_page_track_range_bits.register_fields([('start_address', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('length', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_page_track_bits(c.Struct):
  SIZE = 384
  modify_field_select: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  vhca_id: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  state: c.Array[ctypes.c_ubyte, Literal[4]]
  track_type: c.Array[ctypes.c_ubyte, Literal[4]]
  log_addr_space_size: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_90: c.Array[ctypes.c_ubyte, Literal[3]]
  log_page_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_98: c.Array[ctypes.c_ubyte, Literal[3]]
  log_msg_size: c.Array[ctypes.c_ubyte, Literal[5]]
  reserved_at_a0: c.Array[ctypes.c_ubyte, Literal[8]]
  reporting_qpn: c.Array[ctypes.c_ubyte, Literal[24]]
  reserved_at_c0: c.Array[ctypes.c_ubyte, Literal[24]]
  num_ranges: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[32]]
  range_start_address: c.Array[ctypes.c_ubyte, Literal[64]]
  length: c.Array[ctypes.c_ubyte, Literal[64]]
  track_range: c.Array[struct_mlx5_ifc_page_track_range_bits, Literal[0]]
struct_mlx5_ifc_page_track_bits.register_fields([('modify_field_select', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('vhca_id', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('state', c.Array[ctypes.c_ubyte, Literal[4]], 128), ('track_type', c.Array[ctypes.c_ubyte, Literal[4]], 132), ('log_addr_space_size', c.Array[ctypes.c_ubyte, Literal[8]], 136), ('reserved_at_90', c.Array[ctypes.c_ubyte, Literal[3]], 144), ('log_page_size', c.Array[ctypes.c_ubyte, Literal[5]], 147), ('reserved_at_98', c.Array[ctypes.c_ubyte, Literal[3]], 152), ('log_msg_size', c.Array[ctypes.c_ubyte, Literal[5]], 155), ('reserved_at_a0', c.Array[ctypes.c_ubyte, Literal[8]], 160), ('reporting_qpn', c.Array[ctypes.c_ubyte, Literal[24]], 168), ('reserved_at_c0', c.Array[ctypes.c_ubyte, Literal[24]], 192), ('num_ranges', c.Array[ctypes.c_ubyte, Literal[8]], 216), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[32]], 224), ('range_start_address', c.Array[ctypes.c_ubyte, Literal[64]], 256), ('length', c.Array[ctypes.c_ubyte, Literal[64]], 320), ('track_range', c.Array[struct_mlx5_ifc_page_track_range_bits, Literal[0]], 384)])
@c.record
class struct_mlx5_ifc_create_page_track_obj_in_bits(c.Struct):
  SIZE = 512
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  obj_context: struct_mlx5_ifc_page_track_bits
struct_mlx5_ifc_create_page_track_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('obj_context', struct_mlx5_ifc_page_track_bits, 128)])
@c.record
class struct_mlx5_ifc_modify_page_track_obj_in_bits(c.Struct):
  SIZE = 512
  general_obj_in_cmd_hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  obj_context: struct_mlx5_ifc_page_track_bits
struct_mlx5_ifc_modify_page_track_obj_in_bits.register_fields([('general_obj_in_cmd_hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('obj_context', struct_mlx5_ifc_page_track_bits, 128)])
@c.record
class struct_mlx5_ifc_query_page_track_obj_out_bits(c.Struct):
  SIZE = 512
  general_obj_out_cmd_hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  obj_context: struct_mlx5_ifc_page_track_bits
struct_mlx5_ifc_query_page_track_obj_out_bits.register_fields([('general_obj_out_cmd_hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('obj_context', struct_mlx5_ifc_page_track_bits, 128)])
@c.record
class struct_mlx5_ifc_msecq_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[18]]
  network_option: c.Array[ctypes.c_ubyte, Literal[2]]
  local_ssm_code: c.Array[ctypes.c_ubyte, Literal[4]]
  local_enhanced_ssm_code: c.Array[ctypes.c_ubyte, Literal[8]]
  local_clock_identity: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_msecq_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[18]], 32), ('network_option', c.Array[ctypes.c_ubyte, Literal[2]], 50), ('local_ssm_code', c.Array[ctypes.c_ubyte, Literal[4]], 52), ('local_enhanced_ssm_code', c.Array[ctypes.c_ubyte, Literal[8]], 56), ('local_clock_identity', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
_anonenum147: dict[int, str] = {(MLX5_MSEES_FIELD_SELECT_ENABLE:=0): 'MLX5_MSEES_FIELD_SELECT_ENABLE', (MLX5_MSEES_FIELD_SELECT_ADMIN_STATUS:=1): 'MLX5_MSEES_FIELD_SELECT_ADMIN_STATUS', (MLX5_MSEES_FIELD_SELECT_ADMIN_FREQ_MEASURE:=2): 'MLX5_MSEES_FIELD_SELECT_ADMIN_FREQ_MEASURE'}
enum_mlx5_msees_admin_status: dict[int, str] = {(MLX5_MSEES_ADMIN_STATUS_FREE_RUNNING:=0): 'MLX5_MSEES_ADMIN_STATUS_FREE_RUNNING', (MLX5_MSEES_ADMIN_STATUS_TRACK:=1): 'MLX5_MSEES_ADMIN_STATUS_TRACK'}
enum_mlx5_msees_oper_status: dict[int, str] = {(MLX5_MSEES_OPER_STATUS_FREE_RUNNING:=0): 'MLX5_MSEES_OPER_STATUS_FREE_RUNNING', (MLX5_MSEES_OPER_STATUS_SELF_TRACK:=1): 'MLX5_MSEES_OPER_STATUS_SELF_TRACK', (MLX5_MSEES_OPER_STATUS_OTHER_TRACK:=2): 'MLX5_MSEES_OPER_STATUS_OTHER_TRACK', (MLX5_MSEES_OPER_STATUS_HOLDOVER:=3): 'MLX5_MSEES_OPER_STATUS_HOLDOVER', (MLX5_MSEES_OPER_STATUS_FAIL_HOLDOVER:=4): 'MLX5_MSEES_OPER_STATUS_FAIL_HOLDOVER', (MLX5_MSEES_OPER_STATUS_FAIL_FREE_RUNNING:=5): 'MLX5_MSEES_OPER_STATUS_FAIL_FREE_RUNNING'}
enum_mlx5_msees_failure_reason: dict[int, str] = {(MLX5_MSEES_FAILURE_REASON_UNDEFINED_ERROR:=0): 'MLX5_MSEES_FAILURE_REASON_UNDEFINED_ERROR', (MLX5_MSEES_FAILURE_REASON_PORT_DOWN:=1): 'MLX5_MSEES_FAILURE_REASON_PORT_DOWN', (MLX5_MSEES_FAILURE_REASON_TOO_HIGH_FREQUENCY_DIFF:=2): 'MLX5_MSEES_FAILURE_REASON_TOO_HIGH_FREQUENCY_DIFF', (MLX5_MSEES_FAILURE_REASON_NET_SYNCHRONIZER_DEVICE_ERROR:=3): 'MLX5_MSEES_FAILURE_REASON_NET_SYNCHRONIZER_DEVICE_ERROR', (MLX5_MSEES_FAILURE_REASON_LACK_OF_RESOURCES:=4): 'MLX5_MSEES_FAILURE_REASON_LACK_OF_RESOURCES'}
@c.record
class struct_mlx5_ifc_msees_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[8]]
  local_port: c.Array[ctypes.c_ubyte, Literal[8]]
  pnat: c.Array[ctypes.c_ubyte, Literal[2]]
  lp_msb: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_14: c.Array[ctypes.c_ubyte, Literal[12]]
  field_select: c.Array[ctypes.c_ubyte, Literal[32]]
  admin_status: c.Array[ctypes.c_ubyte, Literal[4]]
  oper_status: c.Array[ctypes.c_ubyte, Literal[4]]
  ho_acq: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_49: c.Array[ctypes.c_ubyte, Literal[12]]
  admin_freq_measure: c.Array[ctypes.c_ubyte, Literal[1]]
  oper_freq_measure: c.Array[ctypes.c_ubyte, Literal[1]]
  failure_reason: c.Array[ctypes.c_ubyte, Literal[9]]
  frequency_diff: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_msees_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('local_port', c.Array[ctypes.c_ubyte, Literal[8]], 8), ('pnat', c.Array[ctypes.c_ubyte, Literal[2]], 16), ('lp_msb', c.Array[ctypes.c_ubyte, Literal[2]], 18), ('reserved_at_14', c.Array[ctypes.c_ubyte, Literal[12]], 20), ('field_select', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('admin_status', c.Array[ctypes.c_ubyte, Literal[4]], 64), ('oper_status', c.Array[ctypes.c_ubyte, Literal[4]], 68), ('ho_acq', c.Array[ctypes.c_ubyte, Literal[1]], 72), ('reserved_at_49', c.Array[ctypes.c_ubyte, Literal[12]], 73), ('admin_freq_measure', c.Array[ctypes.c_ubyte, Literal[1]], 85), ('oper_freq_measure', c.Array[ctypes.c_ubyte, Literal[1]], 86), ('failure_reason', c.Array[ctypes.c_ubyte, Literal[9]], 87), ('frequency_diff', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_mrtcq_reg_bits(c.Struct):
  SIZE = 512
  reserved_at_0: c.Array[ctypes.c_ubyte, Literal[64]]
  rt_clock_identity: c.Array[ctypes.c_ubyte, Literal[64]]
  reserved_at_80: c.Array[ctypes.c_ubyte, Literal[384]]
struct_mlx5_ifc_mrtcq_reg_bits.register_fields([('reserved_at_0', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('rt_clock_identity', c.Array[ctypes.c_ubyte, Literal[64]], 64), ('reserved_at_80', c.Array[ctypes.c_ubyte, Literal[384]], 128)])
@c.record
class struct_mlx5_ifc_pcie_cong_event_obj_bits(c.Struct):
  SIZE = 1024
  modify_select_field: c.Array[ctypes.c_ubyte, Literal[64]]
  inbound_event_en: c.Array[ctypes.c_ubyte, Literal[1]]
  outbound_event_en: c.Array[ctypes.c_ubyte, Literal[1]]
  reserved_at_42: c.Array[ctypes.c_ubyte, Literal[30]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[1]]
  inbound_cong_state: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_64: c.Array[ctypes.c_ubyte, Literal[1]]
  outbound_cong_state: c.Array[ctypes.c_ubyte, Literal[3]]
  reserved_at_68: c.Array[ctypes.c_ubyte, Literal[24]]
  inbound_cong_low_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  inbound_cong_high_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  outbound_cong_low_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  outbound_cong_high_threshold: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_e0: c.Array[ctypes.c_ubyte, Literal[832]]
struct_mlx5_ifc_pcie_cong_event_obj_bits.register_fields([('modify_select_field', c.Array[ctypes.c_ubyte, Literal[64]], 0), ('inbound_event_en', c.Array[ctypes.c_ubyte, Literal[1]], 64), ('outbound_event_en', c.Array[ctypes.c_ubyte, Literal[1]], 65), ('reserved_at_42', c.Array[ctypes.c_ubyte, Literal[30]], 66), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[1]], 96), ('inbound_cong_state', c.Array[ctypes.c_ubyte, Literal[3]], 97), ('reserved_at_64', c.Array[ctypes.c_ubyte, Literal[1]], 100), ('outbound_cong_state', c.Array[ctypes.c_ubyte, Literal[3]], 101), ('reserved_at_68', c.Array[ctypes.c_ubyte, Literal[24]], 104), ('inbound_cong_low_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 128), ('inbound_cong_high_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 144), ('outbound_cong_low_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 160), ('outbound_cong_high_threshold', c.Array[ctypes.c_ubyte, Literal[16]], 176), ('reserved_at_e0', c.Array[ctypes.c_ubyte, Literal[832]], 192)])
@c.record
class struct_mlx5_ifc_pcie_cong_event_cmd_in_bits(c.Struct):
  SIZE = 1152
  hdr: struct_mlx5_ifc_general_obj_in_cmd_hdr_bits
  cong_obj: struct_mlx5_ifc_pcie_cong_event_obj_bits
struct_mlx5_ifc_pcie_cong_event_cmd_in_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_in_cmd_hdr_bits, 0), ('cong_obj', struct_mlx5_ifc_pcie_cong_event_obj_bits, 128)])
@c.record
class struct_mlx5_ifc_pcie_cong_event_cmd_out_bits(c.Struct):
  SIZE = 1152
  hdr: struct_mlx5_ifc_general_obj_out_cmd_hdr_bits
  cong_obj: struct_mlx5_ifc_pcie_cong_event_obj_bits
struct_mlx5_ifc_pcie_cong_event_cmd_out_bits.register_fields([('hdr', struct_mlx5_ifc_general_obj_out_cmd_hdr_bits, 0), ('cong_obj', struct_mlx5_ifc_pcie_cong_event_obj_bits, 128)])
enum_mlx5e_pcie_cong_event_mod_field: dict[int, str] = {(MLX5_PCIE_CONG_EVENT_MOD_EVENT_EN:=0): 'MLX5_PCIE_CONG_EVENT_MOD_EVENT_EN', (MLX5_PCIE_CONG_EVENT_MOD_THRESH:=1): 'MLX5_PCIE_CONG_EVENT_MOD_THRESH'}
@c.record
class struct_mlx5_ifc_psp_rotate_key_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_psp_rotate_key_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
@c.record
class struct_mlx5_ifc_psp_rotate_key_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[64]]
struct_mlx5_ifc_psp_rotate_key_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[64]], 64)])
enum_mlx5_psp_gen_spi_in_key_size: dict[int, str] = {(MLX5_PSP_GEN_SPI_IN_KEY_SIZE_128:=0): 'MLX5_PSP_GEN_SPI_IN_KEY_SIZE_128', (MLX5_PSP_GEN_SPI_IN_KEY_SIZE_256:=1): 'MLX5_PSP_GEN_SPI_IN_KEY_SIZE_256'}
@c.record
class struct_mlx5_ifc_key_spi_bits(c.Struct):
  SIZE = 384
  spi: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[96]]
  key: c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]]
struct_mlx5_ifc_key_spi_bits.register_fields([('spi', c.Array[ctypes.c_ubyte, Literal[32]], 0), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[96]], 32), ('key', c.Array[c.Array[ctypes.c_ubyte, Literal[32]], Literal[8]], 128)])
@c.record
class struct_mlx5_ifc_psp_gen_spi_in_bits(c.Struct):
  SIZE = 128
  opcode: c.Array[ctypes.c_ubyte, Literal[16]]
  uid: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_20: c.Array[ctypes.c_ubyte, Literal[16]]
  op_mod: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[32]]
  key_size: c.Array[ctypes.c_ubyte, Literal[2]]
  reserved_at_62: c.Array[ctypes.c_ubyte, Literal[14]]
  num_of_spi: c.Array[ctypes.c_ubyte, Literal[16]]
struct_mlx5_ifc_psp_gen_spi_in_bits.register_fields([('opcode', c.Array[ctypes.c_ubyte, Literal[16]], 0), ('uid', c.Array[ctypes.c_ubyte, Literal[16]], 16), ('reserved_at_20', c.Array[ctypes.c_ubyte, Literal[16]], 32), ('op_mod', c.Array[ctypes.c_ubyte, Literal[16]], 48), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[32]], 64), ('key_size', c.Array[ctypes.c_ubyte, Literal[2]], 96), ('reserved_at_62', c.Array[ctypes.c_ubyte, Literal[14]], 98), ('num_of_spi', c.Array[ctypes.c_ubyte, Literal[16]], 112)])
@c.record
class struct_mlx5_ifc_psp_gen_spi_out_bits(c.Struct):
  SIZE = 128
  status: c.Array[ctypes.c_ubyte, Literal[8]]
  reserved_at_8: c.Array[ctypes.c_ubyte, Literal[24]]
  syndrome: c.Array[ctypes.c_ubyte, Literal[32]]
  reserved_at_40: c.Array[ctypes.c_ubyte, Literal[16]]
  num_of_spi: c.Array[ctypes.c_ubyte, Literal[16]]
  reserved_at_60: c.Array[ctypes.c_ubyte, Literal[32]]
  key_spi: c.Array[struct_mlx5_ifc_key_spi_bits, Literal[0]]
struct_mlx5_ifc_psp_gen_spi_out_bits.register_fields([('status', c.Array[ctypes.c_ubyte, Literal[8]], 0), ('reserved_at_8', c.Array[ctypes.c_ubyte, Literal[24]], 8), ('syndrome', c.Array[ctypes.c_ubyte, Literal[32]], 32), ('reserved_at_40', c.Array[ctypes.c_ubyte, Literal[16]], 64), ('num_of_spi', c.Array[ctypes.c_ubyte, Literal[16]], 80), ('reserved_at_60', c.Array[ctypes.c_ubyte, Literal[32]], 96), ('key_spi', c.Array[struct_mlx5_ifc_key_spi_bits, Literal[0]], 128)])
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
MLX5_CMD_OP_QUERY_ISSI = 0x10a
MLX5_CMD_OP_SET_ISSI = 0x10b
MLX5_CMD_OP_SET_DRIVER_VERSION = 0x10d
MLX5_CMD_OP_CREATE_MKEY = 0x200
MLX5_CMD_OP_QUERY_SPECIAL_CONTEXTS = 0x203
MLX5_CMD_OP_CREATE_EQ = 0x301
MLX5_CMD_OP_DESTROY_EQ = 0x302
MLX5_CMD_OP_CREATE_CQ = 0x400
MLX5_CMD_OP_DESTROY_CQ = 0x401
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_QUERY_NIC_VPORT_CONTEXT = 0x754
MLX5_CMD_OP_MODIFY_NIC_VPORT_CONTEXT = 0x755
MLX5_CMD_OP_SET_ROCE_ADDRESS = 0x761
MLX5_CMD_OP_ALLOC_PD = 0x800
MLX5_CMD_OP_ALLOC_UAR = 0x802
MLX5_CMD_OP_ACCESS_REG = 0x805
MLX5_CMD_OP_ALLOC_TRANSPORT_DOMAIN = 0x816
MLX5_CMD_STAT_OK = 0x0
MLX5_CMD_STAT_INT_ERR = 0x1
MLX5_CMD_STAT_BAD_OP_ERR = 0x2
MLX5_CMD_STAT_BAD_PARAM_ERR = 0x3
MLX5_CMD_STAT_BAD_SYS_STATE_ERR = 0x4
MLX5_CMD_STAT_BAD_RES_ERR = 0x5
MLX5_CMD_STAT_RES_BUSY = 0x6
MLX5_CMD_STAT_LIM_ERR = 0x8
MLX5_CMD_STAT_BAD_RES_STATE_ERR = 0x9
MLX5_CMD_STAT_NO_RES_ERR = 0xf
MLX5_CMD_STAT_BAD_INP_LEN_ERR = 0x50
MLX5_CMD_STAT_BAD_OUTP_LEN_ERR = 0x51
MLX5_CAP_GENERAL = 0x0
MLX5_CAP_ODP = 0x2
MLX5_CAP_ATOMIC = 0x3
MLX5_CAP_ROCE = 0x4
HCA_CAP_OPMOD_GET_MAX = 0
HCA_CAP_OPMOD_GET_CUR = 1
MLX5_PAGES_GIVE = 1
MLX5_PAGES_TAKE = 2
MLX5_BOOT_PAGES = 1
MLX5_INIT_PAGES = 2
MLX5_REG_HOST_ENDIANNESS = 0x7004
MLX5_REG_DTOR = 0xC00E
MLX5_PCI_CMD_XPORT = 0x07
MLX5_CMD_DATA_BLOCK_SIZE = 512
CMD_OWNER_HW = 0x01
CAP_GEN_ABS_NATIVE_PORT_NUM = 0x007
CAP_GEN_HCA_CAP_2 = 0x020
CAP_GEN_EVENT_ON_VHCA_STATE_ALLOCATED = 0x023
CAP_GEN_EVENT_ON_VHCA_STATE_ACTIVE = 0x024
CAP_GEN_EVENT_ON_VHCA_STATE_IN_USE = 0x025
CAP_GEN_EVENT_ON_VHCA_STATE_TEARDOWN_REQUEST = 0x026
CAP_GEN_LOG_MAX_QP = 0x09B
CAP_GEN_LOG_MAX_CQ = 0x0DB
CAP_GEN_RELEASE_ALL_PAGES = 0x145
CAP_GEN_CACHE_LINE_128BYTE = 0x164
CAP_GEN_NUM_PORTS = 0x1B8
CAP_GEN_PKEY_TABLE_SIZE = 0x190
CAP_GEN_PCI_SYNC_FOR_FW_UPDATE_EVENT = 0x1F1
CAP_GEN_CMDIF_CHECKSUM = 0x210
CAP_GEN_DCT = 0x21A
CAP_GEN_ROCE = 0x21D
CAP_GEN_ATOMIC = 0x21E
CAP_GEN_ODP = 0x227
CAP_GEN_MKEY_BY_NAME = 0x266
CAP_GEN_LOG_MAX_PD = 0x32B
CAP_GEN_PCIE_RESET_USING_HOTRESET = 0x335
CAP_GEN_PCI_SYNC_FOR_FW_UPDATE_WITH_DRIVER_UNLOAD = 0x336
CAP_GEN_VHCA_STATE = 0x3EA
CAP_GEN_ROCE_RW_SUPPORTED = 0x3A1
CAP_GEN_LOG_MAX_CURRENT_UC_LIST = 0x3FB
CAP_GEN_LOG_UAR_PAGE_SZ = 0x490
CAP_GEN_NUM_VHCA_PORTS = 0x610
CAP_GEN_SW_OWNER_ID = 0x61E
CAP_GEN_NUM_TOTAL_DYNAMIC_VF_MSIX = 0x708
MLX5_FC_BULK_SIZE_FACTOR = 128
MLX5_FC_BULK_NUM_FCS = lambda fc_enum: (MLX5_FC_BULK_SIZE_FACTOR * (fc_enum)) # type: ignore
MLX5_FT_MAX_MULTIPATH_LEVEL = 63
MLX5_CMD_SET_MONITOR_NUM_PPCNT_COUNTER_SET1 = (6)
MLX5_CMD_SET_MONITOR_NUM_Q_COUNTERS_SET1 = (1)
MLX5_CMD_SET_MONITOR_NUM_COUNTER = (MLX5_CMD_SET_MONITOR_NUM_PPCNT_COUNTER_SET1 + MLX5_CMD_SET_MONITOR_NUM_Q_COUNTERS_SET1)
MLX5_IFC_DEFINER_FORMAT_OFFSET_UNUSED = 0x0
MLX5_IFC_DEFINER_FORMAT_OFFSET_OUTER_ETH_PKT_LEN = 0x48
MLX5_IFC_DEFINER_DW_SELECTORS_NUM = 9
MLX5_IFC_DEFINER_BYTE_SELECTORS_NUM = 8
MLX5_MACSEC_ASO_INC_SN = 0x2
MLX5_MACSEC_ASO_REG_C_4_5 = 0x2