# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)
# Copyright (c) 2021 Nvidia Inc. All rights reserved. See COPYING file

"""
This module provides scapy based classes that represent the mlx5 PRM structs.
"""
import unittest

try:
    import logging
    logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
    from scapy.packet import Packet
    from scapy.fields import BitField, ByteField, IntField, IPField, \
        ShortField, LongField, StrFixedLenField, PacketField, \
        PacketListField, ConditionalField, PadField, FieldListField, MACField, \
        MultipleTypeField
    from scapy.layers.inet6 import IP6Field
except ImportError:
    raise unittest.SkipTest('scapy package is needed in order to run DevX tests')


class DevxOps:
    MLX5_CMD_OP_ALLOC_PD = 0x800
    MLX5_CMD_OP_CREATE_CQ = 0x400
    MLX5_CMD_OP_QUERY_CQ = 0x402
    MLX5_CMD_OP_MODIFY_CQ = 0x403
    MLX5_CMD_OP_CREATE_QP = 0x500
    MLX5_CMD_OP_QUERY_QP = 0x50b
    MLX5_CMD_OP_RST2INIT_QP = 0x502
    MLX5_CMD_OP_INIT2RTR_QP = 0x503
    MLX5_CMD_OP_RTR2RTS_QP = 0x504
    MLX5_CMD_OP_RTS2RTS_QP = 0x505
    MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT = 0x762
    MLX5_CMD_OP_QUERY_HCA_VPORT_GID = 0x764
    MLX5_QPC_ST_RC = 0X0
    MLX5_QPC_PM_STATE_MIGRATED = 0x3
    MLX5_CMD_OP_QUERY_HCA_CAP = 0x100
    MLX5_CMD_OP_QUERY_QOS_CAP = 0xc
    MLX5_CMD_OP_QUERY_ODP_CAP = 0x2
    MLX5_CMD_OP_ALLOC_FLOW_COUNTER = 0x939
    MLX5_CMD_OP_DEALLOC_FLOW_COUNTER = 0x93a
    MLX5_CMD_OP_QUERY_FLOW_COUNTER = 0x93b
    MLX5_CMD_OP_CREATE_TIR = 0x900
    MLX5_CMD_OP_CREATE_FLOW_TABLE = 0x930
    MLX5_CMD_OP_CREATE_FLOW_GROUP = 0x933
    MLX5_CMD_OP_SET_FLOW_TABLE_ENTRY = 0x936
    MLX5_CMD_OP_CREATE_EQ = 0x301
    MLX5_CMD_OP_MAD_IFC = 0x50d
    MLX5_CMD_OP_ACCESS_REGISTER_PAOS = 0x5006
    MLX5_CMD_OP_ACCESS_REG = 0x805
    MLX5_CMD_OP_CREATE_MKEY = 0x200
    MLX5_CMD_OP_CREATE_GENERAL_OBJECT = 0xa00


class DevxGeneralObjTypes:
    MLX5_OBJ_TYPE_RDMA_CTRL = 0x0053


class ActionType:
    SET_ACTION = 0x1
    ADD_ACTION = 0x2
    COPY_ACTION = 0x3


class PRMPacket(Packet):

    def extract_padding(self, p):
        return "", p


# Common
class SwPas(PRMPacket):
    fields_desc = [
        IntField('pa_h', 0),
        BitField('pa_l', 0, 20),
        BitField('reserved1', 0, 12),
    ]


# PD
class AllocPdIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_ALLOC_PD),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        StrFixedLenField('reserved2', None, length=8),
    ]


class AllocPdOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        ByteField('reserved2', 0),
        BitField('pd', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


# CQ
class CmdInputFieldSelectResizeCq(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 28),
        BitField('umem', 0, 1),
        BitField('log_page_size', 0, 1),
        BitField('page_offset', 0, 1),
        BitField('log_cq_size', 0, 1),
    ]


class CmdInputFieldSelectModifyCqFields(PRMPacket):
    fields_desc = [
        BitField('reserved_0', 0, 26),
        BitField('status', 0, 1),
        BitField('cq_period_mode', 0, 1),
        BitField('c_eqn', 0, 1),
        BitField('oi', 0, 1),
        BitField('cq_max_count', 0, 1),
        BitField('cq_period', 0, 1),
    ]


class SwCqc(PRMPacket):
    fields_desc = [
        BitField('status', 0, 4),
        BitField('as_notify', 0, 1),
        BitField('initiator_src_dct', 0, 1),
        BitField('dbr_umem_valid', 0, 1),
        BitField('reserved1', 0, 1),
        BitField('cqe_sz', 0, 3),
        BitField('cc', 0, 1),
        BitField('reserved2', 0, 1),
        BitField('scqe_break_moderation_en', 0, 1),
        BitField('oi', 0, 1),
        BitField('cq_period_mode', 0, 2),
        BitField('cqe_compression_en', 0, 1),
        BitField('mini_cqe_res_format', 0, 2),
        BitField('st', 0, 4),
        ByteField('reserved3', 0),
        IntField('dbr_umem_id', 0),
        BitField('reserved4', 0, 20),
        BitField('page_offset', 0, 6),
        BitField('reserved5', 0, 6),
        BitField('reserved6', 0, 3),
        BitField('log_cq_size', 0, 5),
        BitField('uar_page', 0, 24),
        BitField('reserved7', 0, 4),
        BitField('cq_period', 0, 12),
        ShortField('cq_max_count', 0),
        BitField('reserved8', 0, 24),
        ByteField('c_eqn', 0),
        BitField('reserved9', 0, 3),
        BitField('log_page_size', 0, 5),
        BitField('reserved10', 0, 24),
        StrFixedLenField('reserved11', None, length=4),
        ByteField('reserved12', 0),
        BitField('last_notified_index', 0, 24),
        ByteField('reserved13', 0),
        BitField('last_solicit_index', 0, 24),
        ByteField('reserved14', 0),
        BitField('consumer_counter', 0, 24),
        ByteField('reserved15', 0),
        BitField('producer_counter', 0, 24),
        BitField('local_partition_id', 0, 12),
        BitField('process_id', 0, 20),
        ShortField('reserved16', 0),
        ShortField('thread_id', 0),
        IntField('db_record_addr_63_32', 0),
        BitField('db_record_addr_31_3', 0, 29),
        BitField('reserved17', 0, 3),
    ]


class CreateCqIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_CQ),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        ByteField('reserved2', 0),
        BitField('cqn', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
        PacketField('sw_cqc', SwCqc(), SwCqc),
        LongField('e_mtt_pointer_or_cq_umem_offset', 0),
        IntField('cq_umem_id', 0),
        BitField('cq_umem_valid', 0, 1),
        BitField('reserved4', 0, 31),
        StrFixedLenField('reserved5', None, length=176),
        PacketListField('pas', [SwPas() for x in range(0)], SwPas, count_from=lambda pkt: 0),
    ]


class CreateCqOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        ByteField('reserved2', 0),
        BitField('cqn', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


# QP
class SwAds(PRMPacket):
    fields_desc = [
        BitField('fl', 0, 1),
        BitField('free_ar', 0, 1),
        BitField('reserved1', 0, 14),
        ShortField('pkey_index', 0),
        ByteField('reserved2', 0),
        BitField('grh', 0, 1),
        BitField('mlid', 0, 7),
        ShortField('rlid', 0),
        BitField('ack_timeout', 0, 5),
        BitField('reserved3', 0, 3),
        ByteField('src_addr_index', 0),
        BitField('log_rtm', 0, 4),
        BitField('stat_rate', 0, 4),
        ByteField('hop_limit', 0),
        BitField('reserved4', 0, 4),
        BitField('tclass', 0, 8),
        BitField('flow_label', 0, 20),
        FieldListField('rgid_rip', [0 for x in range(4)], IntField('', 0),
                       count_from=lambda pkt: 4),
        BitField('reserved5', 0, 4),
        BitField('f_dscp', 0, 1),
        BitField('f_ecn', 0, 1),
        BitField('reserved6', 0, 1),
        BitField('f_eth_prio', 0, 1),
        BitField('ecn', 0, 2),
        BitField('dscp', 0, 6),
        ShortField('udp_sport', 0),
        BitField('dei_cfi_reserved_from_prm_041', 0, 1),
        BitField('eth_prio', 0, 3),
        BitField('sl', 0, 4),
        ByteField('vhca_port_num', 0),
        MACField('rmac', '00:00:00:00:00:00'),

    ]


class SwQpc(PRMPacket):
    fields_desc = [
        BitField('state', 0, 4),
        BitField('lag_tx_port_affinity', 0, 4),
        ByteField('st', 0),
        BitField('reserved1', 0, 3),
        BitField('pm_state', 0, 2),
        BitField('reserved2', 0, 1),
        BitField('req_e2e_credit_mode', 0, 2),
        BitField('offload_type', 0, 4),
        BitField('end_padding_mode', 0, 2),
        BitField('reserved3', 0, 2),
        BitField('wq_signature', 0, 1),
        BitField('block_lb_mc', 0, 1),
        BitField('atomic_like_write_en', 0, 1),
        BitField('latency_sensitive', 0, 1),
        BitField('dual_write', 0, 1),
        BitField('drain_sigerr', 0, 1),
        BitField('multi_path', 0, 1),
        BitField('reserved4', 0, 1),
        BitField('pd', 0, 24),
        BitField('mtu', 0, 3),
        BitField('log_msg_max', 0, 5),
        BitField('reserved5', 0, 1),
        BitField('log_rq_size', 0, 4),
        BitField('log_rq_stride', 0, 3),
        BitField('no_sq', 0, 1),
        BitField('log_sq_size', 0, 4),
        BitField('reserved6', 0, 1),
        BitField('retry_mode', 0, 2),
        BitField('ts_format', 0, 2),
        BitField('data_in_order', 0, 1),
        BitField('rlkey', 0, 1),
        BitField('ulp_stateless_offload_mode', 0, 4),
        ByteField('counter_set_id', 0),
        BitField('uar_page', 0, 24),
        BitField('send_dbr_mode', 0, 2),
        BitField('reserved7', 0, 1),
        BitField('full_handshake', 0, 1),
        BitField('cnak_reverse_sl', 0, 4),
        BitField('user_index', 0, 24),
        BitField('reserved8', 0, 3),
        BitField('log_page_size', 0, 5),
        BitField('remote_qpn', 0, 24),
        PacketField('primary_address_path', SwAds(), SwAds),
        PacketField('secondary_address_path', SwAds(), SwAds),
        BitField('log_ack_req_freq', 0, 4),
        BitField('reserved9', 0, 4),
        BitField('log_sra_max', 0, 3),
        BitField('extended_rnr_retry_valid', 0, 1),
        BitField('reserved10', 0, 1),
        BitField('retry_count', 0, 3),
        BitField('rnr_retry', 0, 3),
        BitField('extended_retry_count_valid', 0, 1),
        BitField('fre', 0, 1),
        BitField('cur_rnr_retry', 0, 3),
        BitField('cur_retry_count', 0, 3),
        BitField('extended_log_rnr_retry', 0, 5),
        ShortField('extended_cur_rnr_retry', 0),
        ShortField('packet_pacing_rate_limit_index', 0),
        ByteField('reserved11', 0),
        BitField('next_send_psn', 0, 24),
        ByteField('reserved12', 0),
        BitField('cqn_snd', 0, 24),
        ByteField('reserved13', 0),
        BitField('deth_sqpn', 0, 24),
        ByteField('reserved14', 0),
        ByteField('extended_retry_count', 0),
        ByteField('reserved15', 0),
        ByteField('extended_cur_retry_count', 0),
        ByteField('reserved16', 0),
        BitField('last_acked_psn', 0, 24),
        ByteField('reserved17', 0),
        BitField('ssn', 0, 24),
        ByteField('reserved18', 0),
        BitField('log_rra_max', 0, 3),
        BitField('reserved19', 0, 1),
        BitField('atomic_mode', 0, 4),
        BitField('rre', 0, 1),
        BitField('rwe', 0, 1),
        BitField('rae', 0, 1),
        BitField('reserved20', 0, 1),
        BitField('page_offset', 0, 6),
        BitField('reserved21', 0, 3),
        BitField('cd_slave_receive', 0, 1),
        BitField('cd_slave_send', 0, 1),
        BitField('cd_master', 0, 1),
        BitField('reserved22', 0, 3),
        BitField('min_rnr_nak', 0, 5),
        BitField('next_rcv_psn', 0, 24),
        ByteField('reserved23', 0),
        BitField('xrcd', 0, 24),
        ByteField('reserved24', 0),
        BitField('cqn_rcv', 0, 24),
        LongField('dbr_addr', 0),
        IntField('q_key', 0),
        BitField('reserved25', 0, 5),
        BitField('rq_type', 0, 3),
        BitField('srqn_rmpn_xrqn', 0, 24),
        ByteField('reserved26', 0),
        BitField('rmsn', 0, 24),
        ShortField('hw_sq_wqebb_counter', 0),
        ShortField('sw_sq_wqebb_counter', 0),
        IntField('hw_rq_counter', 0),
        IntField('sw_rq_counter', 0),
        ByteField('reserved27', 0),
        BitField('roce_adp_retrans_rtt', 0, 24),
        BitField('reserved28', 0, 15),
        BitField('cgs', 0, 1),
        ByteField('cs_req', 0),
        ByteField('cs_res', 0),
        LongField('dc_access_key', 0),
        BitField('rdma_active', 0, 1),
        BitField('comm_est', 0, 1),
        BitField('suspended', 0, 1),
        BitField('dbr_umem_valid', 0, 1),
        BitField('reserved29', 0, 4),
        BitField('send_msg_psn', 0, 24),
        ByteField('reserved30', 0),
        BitField('rcv_msg_psn', 0, 24),
        LongField('rdma_va', 0),
        IntField('rdma_key', 0),
        IntField('dbr_umem_id', 0),
    ]


class CreateQpIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_QP),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        ByteField('reserved2', 0),
        BitField('input_qpn', 0, 24),
        BitField('reserved3', 0, 1),
        BitField('cmd_on_behalf', 0, 1),
        BitField('reserved4', 0, 14),
        ShortField('vhca_id', 0),
        IntField('opt_param_mask', 0),
        StrFixedLenField('reserved5', None, length=4),
        PacketField('sw_qpc', SwQpc(), SwQpc),
        LongField('e_mtt_pointer_or_wq_umem_offset', 0),
        IntField('wq_umem_id', 0),
        BitField('wq_umem_valid', 0, 1),
        BitField('reserved6', 0, 31),
        PacketListField('pas', [SwPas() for x in range(0)], SwPas,
                        count_from=lambda pkt: 0),
    ]


class CreateQpOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        ByteField('reserved2', 0),
        BitField('qpn', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


class ModifyQpIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', 0),
        ShortField('uid', 0),
        ShortField('vhca_tunnel_id', 0),
        ShortField('op_mod', 0),
        ByteField('reserved2', 0),
        BitField('qpn', 0, 24),
        IntField('reserved3', 0),
        IntField('opt_param_mask', 0),
        IntField('ece', 0),
        PacketField('sw_qpc', SwQpc(), SwQpc),
        StrFixedLenField('reserved4', None, length=16),
    ]


class ModifyQpOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
    ]


class QueryQpIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_QUERY_QP),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        ByteField('reserved2', 0),
        BitField('qpn', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


class QueryQpOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        IntField('opt_param_mask', 0),
        StrFixedLenField('reserved3', None, length=4),
        PacketField('sw_qpc', SwQpc(), SwQpc),
        LongField('e_mtt_pointer', 0),
        StrFixedLenField('reserved4', None, length=8),
        PacketListField('pas', [SwPas() for x in range(0)], SwPas,
                        count_from=lambda pkt: 0),
    ]


# EQ
class SwEqc(PRMPacket):
    fields_desc = [
        BitField('status', 0, 4),
        BitField('reserved1', 0, 9),
        BitField('ec', 0, 1),
        BitField('oi', 0, 1),
        BitField('reserved2', 0, 5),
        BitField('st', 0, 4),
        ByteField('reserved3', 0),
        StrFixedLenField('reserved4', None, length=4),
        BitField('reserved5', 0, 20),
        BitField('page_offset', 0, 6),
        BitField('reserved6', 0, 6),
        BitField('reserved7', 0, 3),
        BitField('log_eq_size', 0, 5),
        BitField('uar_page', 0, 24),
        StrFixedLenField('reserved8', None, length=4),
        BitField('reserved9', 0, 20),
        BitField('intr', 0, 12),
        BitField('reserved10', 0, 3),
        BitField('log_page_size', 0, 5),
        BitField('reserved11', 0, 24),
        StrFixedLenField('reserved12', None, length=12),
        ByteField('reserved13', 0),
        BitField('consumer_counter', 0, 24),
        ByteField('reserved14', 0),
        BitField('producer_counter', 0, 24),
        StrFixedLenField('reserved15', None, length=16),
    ]


class CreateEqIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_EQ),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        BitField('reserved2', 0, 24),
        ByteField('eqn', 0),
        StrFixedLenField('reserved3', None, length=4),
        PacketField('sw_eqc', SwEqc(), SwEqc),
        LongField('e_mtt_pointer', 0),
        LongField('event_bitmask_63_0', 0),
        LongField('event_bitmask_127_640', 0),
        LongField('event_bitmask_191_128', 0),
        LongField('event_bitmask_255_192', 0),
        StrFixedLenField('reserved4', None, length=152),
    ]


class CreateEqOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        BitField('reserved2', 0, 24),
        ByteField('eqn', 0),
        StrFixedLenField('reserved3', None, length=4),
    ]


class IbSmp(PRMPacket):
    fields_desc = [
        ByteField('base_version', 0),
        ByteField('mgmt_class', 0),
        ByteField('class_version', 0),
        ByteField('method', 0),
        ShortField('status', 0),
        ByteField('hop_ptr', 0),
        ByteField('hop_cnt', 0),
        LongField('tid', 0),
        ShortField('attr_id', 0),
        ShortField('resv', 0),
        IntField('attr_mod', 0),
        LongField('mkey', 0),
        ShortField('dr_slid', 0),
        ShortField('dr_dlid', 0),
        FieldListField('reserved', [0 for x in range(7)], IntField('', 0), count_from=lambda pkt: 7),
        FieldListField('data', [0 for x in range(64)], ByteField('', 0), count_from=lambda pkt: 64),
        FieldListField('initial_path', [0 for x in range(64)], ByteField('', 0), count_from=lambda pkt: 64),
        FieldListField('return_path', [0 for x in range(64)], ByteField('', 0), count_from=lambda pkt: 64),

    ]


class MadIfcIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_MAD_IFC),
        ShortField('uid', 0),

        ShortField('reserved1', 0),
        ShortField('op_mod', 0),

        ShortField('remote_lid', 0),
        ByteField('reserved2', 0),
        ByteField('port', 0),
        StrFixedLenField('reserved3', None, length=4),
        StrFixedLenField('mad', None, length=256),
    ]


class MadIfcOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        StrFixedLenField('mad', None, length=256),
    ]


class PaosReg(PRMPacket):
    fields_desc = [
        ByteField('swid', 0),
        ByteField('local_port', 0),
        BitField('reserved1', 0, 4),
        BitField('admin_status', 0, 4),
        BitField('reserved2', 0, 4),
        BitField('oper_status', 0, 4),
        BitField('ase', 0, 1),
        BitField('ee', 0, 1),
        BitField('reserved3', 0, 21),
        BitField('fd', 0, 1),
        BitField('reserved4', 0, 6),
        BitField('e', 0, 2),
        StrFixedLenField('reserved5', None, length=8),
    ]


class AccessPaosRegisterIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_ACCESS_REG),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        ShortField('reserved2', 0),
        ShortField('register_id', 0),
        IntField('argument', 0),
        PacketField('data', PaosReg(), PaosReg),
    ]


class AccessPaosRegisterOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PacketField('data', PaosReg(), PaosReg),
    ]


# EQE
class EventType:
    COMPLETION_EVENTS = 0X0
    CQ_ERROR = 0X4
    PORT_STATE_CHANGE = 0X9


class AffiliatedEventHeader(PRMPacket):
    fields_desc = [
        ShortField('reserved1', 0),
        ShortField('obj_type', 0),
        IntField('obj_id', 0),
    ]


class CompEvent(PRMPacket):
    fields_desc = [
        StrFixedLenField('reserved1', None, length=24),
        ByteField('reserved2', 0),
        BitField('cqn', 0, 24),
    ]


class CqError(PRMPacket):
    fields_desc = [
        ByteField('reserved1', 0),
        BitField('cqn', 0, 24),
        StrFixedLenField('reserved2', None, length=4),
        BitField('reserved3', 0, 24),
        ByteField('syndrome', 0),
        StrFixedLenField('reserved4', None, length=16),
    ]


class PortStateChangeEvent(PRMPacket):
    fields_desc = [
        StrFixedLenField('reserved1', None, length=8),
        BitField('port_num', 0, 4),
        BitField('reserved2', 0, 28),
        StrFixedLenField('reserved3', None, length=16),
    ]


class SwEqe(PRMPacket):
    fields_desc = [
        ByteField('reserved1', 0),
        ByteField('event_type', 0),
        ByteField('reserved2', 0),
        ByteField('event_sub_type', 0),
        StrFixedLenField('reserved3', None, length=28),
        MultipleTypeField(
            [
                (PadField(PacketField('event_data', CompEvent(), CompEvent), 28, padwith=b"\x00"),
                 lambda pkt: pkt.event_type == EventType.COMPLETION_EVENTS),
                (PadField(PacketField('event_data', CqError(), CqError), 28, padwith=b"\x00"),
                 lambda pkt: pkt.event_type == EventType.CQ_ERROR),
                (PadField(PacketField('event_data', PortStateChangeEvent(), PortStateChangeEvent), 28, padwith=b"\x00"),
                 lambda pkt: pkt.event_type == EventType.PORT_STATE_CHANGE),
            ],
            StrFixedLenField('event_data', None, length=28)  # By default
        ),
        ShortField('reserved4', 0),
        ByteField('signature', 0),
        BitField('reserved5', 0, 7),
        BitField('owner', 0, 1),
    ]


# Query HCA VPORT Context
class QueryHcaVportContextIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_QUERY_HCA_VPORT_CONTEXT),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        BitField('other_vport', 0, 1),
        BitField('reserved2', 0, 11),
        BitField('port_num', 0, 4),
        ShortField('vport_number', 0),
        StrFixedLenField('reserved3', None, length=4),
    ]


class HcaVportContext(PRMPacket):
    fields_desc = [
        IntField('field_select', 0),
        StrFixedLenField('reserved1', None, length=28),
        BitField('sm_virt_aware', 0, 1),
        BitField('has_smi', 0, 1),
        BitField('has_raw', 0, 1),
        BitField('grh_required', 0, 1),
        BitField('reserved2', 0, 1),
        BitField('min_wqe_inline_mode', 0, 3),
        ByteField('reserved3', 0),
        BitField('port_physical_state', 0, 4),
        BitField('vport_state_policy', 0, 4),
        BitField('port_state', 0, 4),
        BitField('vport_state', 0, 4),
        StrFixedLenField('reserved4', None, length=4),
        LongField('system_image_guid', 0),
        LongField('port_guid', 0),
        LongField('node_guid', 0),
        IntField('cap_mask1', 0),
        IntField('cap_mask1_field_select', 0),
        IntField('cap_mask2', 0),
        IntField('cap_mask2_field_select', 0),
        ShortField('reserved5', 0),
        ShortField('ooo_sl_mask', 0),
        StrFixedLenField('reserved6', None, length=12),
        ShortField('lid', 0),
        BitField('reserved7', 0, 4),
        BitField('init_type_reply', 0, 4),
        BitField('lmc', 0, 3),
        BitField('subnet_timeout', 0, 5),
        ShortField('sm_lid', 0),
        BitField('sm_sl', 0, 4),
        BitField('reserved8', 0, 12),
        ShortField('qkey_violation_counter', 0),
        ShortField('pkey_violation_counter', 0),
        StrFixedLenField('reserved9', None, length=404),
    ]


class QueryHcaVportContextOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PacketField('hca_vport_context', HcaVportContext(), HcaVportContext),
    ]


# Query HCA VPORT GID
class QueryHcaVportGidIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_QUERY_HCA_VPORT_GID),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        BitField('other_vport', 0, 1),
        BitField('reserved2', 0, 11),
        BitField('port_num', 0, 4),
        ShortField('vport_number', 0),
        ShortField('reserved3', 0),
        ShortField('gid_index', 0),
    ]


class IbGidCmd(PRMPacket):
    fields_desc = [
        LongField('prefix', 0),
        LongField('guid', 0),
    ]


class QueryHcaVportGidOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=4),
        ShortField('gids_num', 0),
        ShortField('reserved3', 0),
        PacketField('gid0', IbGidCmd(), IbGidCmd),
    ]


class QueryHcaCapOp:
    HCA_CAP_2 = 0X20
    ADV_RDMA_CAP =  0x28
    HCA_NIC_FLOW_TABLE_CAP = 0x7


class QueryHcaCapMod:
    MAX = 0x0
    CURRENT = 0x1


class SendDbrMode:
    DBR_VALID = 0x0
    NO_DBR_EXT = 0x1
    NO_DBR_INT = 0x2


# Query HCA CAP
class QueryHcaCapIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_QUERY_HCA_CAP),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        BitField('other_function', 0, 1),
        BitField('reserved2', 0, 15),
        ShortField('function_id', 0),
        StrFixedLenField('reserved3', None, length=4),
    ]


class CmdHcaCap(PRMPacket):
    fields_desc = [
        BitField('access_other_hca_roce', 0, 1),
        BitField('reserved1', 0, 30),
        BitField('vhca_resource_manager', 0, 1),
        BitField('hca_cap_2', 0, 1),
        BitField('reserved2', 0, 2),
        BitField('event_on_vhca_state_teardown_request', 0, 1),
        BitField('event_on_vhca_state_in_use', 0, 1),
        BitField('event_on_vhca_state_active', 0, 1),
        BitField('event_on_vhca_state_allocated', 0, 1),
        BitField('event_on_vhca_state_invalid', 0, 1),
        ByteField('transpose_max_element_size', 0),
        ShortField('vhca_id', 0),
        ByteField('transpose_max_cols', 0),
        ByteField('transpose_max_rows', 0),
        ShortField('transpose_max_size', 0),
        BitField('reserved3', 0, 1),
        BitField('sw_steering_icm_large_scale_steering', 0, 1),
        BitField('qp_data_in_order', 0, 1),
        BitField('log_regexp_scatter_gather_size', 0, 5),
        BitField('reserved4', 0, 3),
        BitField('log_dma_mmo_max_size', 0, 5),
        BitField('relaxed_ordering_write_pci_enabled', 0, 1),
        BitField('reserved5', 0, 2),
        BitField('log_compress_max_size', 0, 5),
        BitField('reserved6', 0, 3),
        BitField('log_decompress_max_size', 0, 5),
        ByteField('log_max_srq_sz', 0),
        ByteField('log_max_qp_sz', 0),
        BitField('event_cap', 0, 1),
        BitField('reserved7', 0, 2),
        BitField('isolate_vl_tc_new', 0, 1),
        BitField('reserved8', 0, 2),
        BitField('nvmeotcp', 0, 1),
        BitField('pcie_hanged', 0, 1),
        BitField('prio_tag_required', 0, 1),
        BitField('wqe_index_ignore_cap', 0, 1),
        BitField('reserved9', 0, 1),
        BitField('log_max_qp', 0, 5),
        BitField('regexp', 0, 1),
        BitField('regexp_params', 0, 1),
        BitField('regexp_alloc_onbehalf_umem', 0, 1),
        BitField('ece', 0, 1),
        BitField('regexp_num_of_engines', 0, 4),
        BitField('allow_pause_tx', 0, 1),
        BitField('reg_c_preserve', 0, 1),
        BitField('isolate_vl_tc', 0, 1),
        BitField('log_max_srqs', 0, 5),
        BitField('psp', 0, 1),
        BitField('reserved10', 0, 1),
        BitField('ts_cqe_to_dest_cqn', 0, 1),
        BitField('regexp_log_crspace_size', 0, 5),
        BitField('selective_repeat', 0, 1),
        BitField('go_back_n', 0, 1),
        BitField('reserved11', 0, 1),
        BitField('scatter_fcs_w_decap_disable', 0, 1),
        BitField('reserved12', 0, 4),
        ByteField('max_sgl_for_optimized_performance', 0),
        ByteField('log_max_cq_sz', 0),
        BitField('relaxed_ordering_write_umr', 0, 1),
        BitField('relaxed_ordering_read_umr', 0, 1),
        BitField('access_register_user', 0, 1),
        BitField('reserved13', 0, 5),
        BitField('upt_device_emulation_manager', 0, 1),
        BitField('virtio_net_device_emulation_manager', 0, 1),
        BitField('virtio_blk_device_emulation_manager', 0, 1),
        BitField('log_max_cq', 0, 5),
        ByteField('log_max_eq_sz', 0),
        BitField('relaxed_ordering_write', 0, 1),
        BitField('relaxed_ordering_read_pci_enabled', 0, 1),
        BitField('log_max_mkey', 0, 6),
        BitField('tunneled_atomic', 0, 1),
        BitField('as_notify', 0, 1),
        BitField('m_pci_port', 0, 1),
        BitField('m_vhca_mk', 0, 1),
        BitField('hotplug_manager', 0, 1),
        BitField('nvme_device_emulation_manager', 0, 1),
        BitField('terminate_scatter_list_mkey', 0, 1),
        BitField('repeated_mkey', 0, 1),
        BitField('dump_fill_mkey', 0, 1),
        BitField('dpp', 0, 1),
        BitField('resources_on_nvme_emulation_manager', 0, 1),
        BitField('fast_teardown', 0, 1),
        BitField('log_max_eq', 0, 4),
        ByteField('max_indirection', 0),
        BitField('fixed_buffer_size', 0, 1),
        BitField('log_max_mrw_sz', 0, 7),
        BitField('force_teardown', 0, 1),
        BitField('prepare_fast_teardown_allways_1', 0, 1),
        BitField('log_max_bsf_list_size', 0, 6),
        BitField('umr_extended_translation_offset', 0, 1),
        BitField('null_mkey', 0, 1),
        BitField('log_max_klm_list_size', 0, 6),
        BitField('non_wire_sq', 0, 1),
        BitField('ats_ro_dependence', 0, 1),
        BitField('qp_context_extension', 0, 1),
        BitField('log_max_static_sq_wq_size', 0, 5),
        BitField('resources_on_virtio_net_emulation_manager', 0, 1),
        BitField('resources_on_virtio_blk_emulation_manager', 0, 1),
        BitField('log_max_ra_req_dc', 0, 6),
        BitField('vhca_trust_level_reg', 0, 1),
        BitField('eth_wqe_too_small_mode', 0, 1),
        BitField('vnic_env_eth_wqe_too_small', 0, 1),
        BitField('log_max_static_sq_wq', 0, 5),
        BitField('ooo_sl_mask', 0, 1),
        BitField('vnic_env_cq_overrun', 0, 1),
        BitField('log_max_ra_res_dc', 0, 6),
        BitField('cc_roce_ecn_rp_classify_mode', 0, 1),
        BitField('cc_roce_ecn_rp_dynamic_rtt', 0, 1),
        BitField('cc_roce_ecn_rp_dynamic_ai', 0, 1),
        BitField('cc_roce_ecn_rp_dynamic_g', 0, 1),
        BitField('cc_roce_ecn_rp_burst_decouple', 0, 1),
        BitField('release_all_pages', 0, 1),
        BitField('depracated_do_not_use', 0, 1),
        BitField('sig_crc64_xp10', 0, 1),
        BitField('sig_crc32c', 0, 1),
        BitField('roce_accl', 0, 1),
        BitField('log_max_ra_req_qp', 0, 6),
        BitField('reserved14', 0, 1),
        BitField('rts2rts_udp_sport', 0, 1),
        BitField('rts2rts_lag_tx_port_affinity', 0, 1),
        BitField('dma_mmo', 0, 1),
        BitField('compress_min_block_size', 0, 4),
        BitField('compress', 0, 1),
        BitField('decompress', 0, 1),
        BitField('log_max_ra_res_qp', 0, 6),
        BitField('end_pad', 0, 1),
        BitField('cc_query_allowed', 0, 1),
        BitField('cc_modify_allowed', 0, 1),
        BitField('start_pad', 0, 1),
        BitField('cache_line_128byte', 0, 1),
        BitField('gid_table_size_ro', 0, 1),
        BitField('pkey_table_size_ro', 0, 1),
        BitField('rts2rts_qp_rmp', 0, 1),
        BitField('rnr_nak_q_counters', 0, 1),
        BitField('rts2rts_qp_counters_set_id', 0, 1),
        BitField('rts2rts_qp_dscp', 0, 1),
        BitField('gen3_cc_negotiation', 0, 1),
        BitField('vnic_env_int_rq_oob', 0, 1),
        BitField('sbcam_reg', 0, 1),
        BitField('cwcam_reg', 0, 1),
        BitField('qcam_reg', 0, 1),
        ShortField('gid_table_size', 0),
        BitField('out_of_seq_cnt', 0, 1),
        BitField('vport_counters', 0, 1),
        BitField('retransmission_q_counters', 0, 1),
        BitField('debug', 0, 1),
        BitField('modify_rq_counters_set_id', 0, 1),
        BitField('rq_delay_drop', 0, 1),
        BitField('max_qp_cnt', 0, 10),
        ShortField('pkey_table_size', 0),
        BitField('vport_group_manager', 0, 1),
        BitField('vhca_group_manager', 0, 1),
        BitField('ib_virt', 0, 1),
        BitField('eth_virt', 0, 1),
        BitField('vnic_env_queue_counters', 0, 1),
        BitField('ets', 0, 1),
        BitField('nic_flow_table', 0, 1),
        BitField('eswitch_manager', 0, 1),
        BitField('device_memory', 0, 1),
        BitField('mcam_reg', 0, 1),
        BitField('pcam_reg', 0, 1),
        BitField('local_ca_ack_delay', 0, 5),
        BitField('port_module_event', 0, 1),
        BitField('enhanced_retransmission_q_counters', 0, 1),
        BitField('port_checks', 0, 1),
        BitField('pulse_gen_control', 0, 1),
        BitField('disable_link_up_by_init_hca', 0, 1),
        BitField('beacon_led', 0, 1),
        BitField('port_type', 0, 2),
        ByteField('num_ports', 0),
        BitField('snapshot', 0, 1),
        BitField('pps', 0, 1),
        BitField('pps_modify', 0, 1),
        BitField('log_max_msg', 0, 5),
        BitField('multi_path_xrc_rdma', 0, 1),
        BitField('multi_path_dc_rdma', 0, 1),
        BitField('multi_path_rc_rdma', 0, 1),
        BitField('traffic_fast_control', 0, 1),
        BitField('max_tc', 0, 4),
        BitField('temp_warn_event', 0, 1),
        BitField('dcbx', 0, 1),
        BitField('general_notification_event', 0, 1),
        BitField('multi_prio_sq', 0, 1),
        BitField('afu_owner', 0, 1),
        BitField('fpga', 0, 1),
        BitField('rol_s', 0, 1),
        BitField('rol_g', 0, 1),
        BitField('ib_port_sniffer', 0, 1),
        BitField('wol_s', 0, 1),
        BitField('wol_g', 0, 1),
        BitField('wol_a', 0, 1),
        BitField('wol_b', 0, 1),
        BitField('wol_m', 0, 1),
        BitField('wol_u', 0, 1),
        BitField('wol_p', 0, 1),
        ShortField('stat_rate_support', 0),
        BitField('sig_block_4048', 0, 1),
        BitField('pci_sync_for_fw_update_event', 0, 1),
        BitField('init2rtr_drain_sigerr', 0, 1),
        BitField('log_max_extended_rnr_retry', 0, 5),
        BitField('init2_lag_tx_port_affinity', 0, 1),
        BitField('flow_group_type_hash_split', 0, 1),
        BitField('reserved15', 0, 1),
        BitField('wqe_based_flow_table_update', 0, 1),
        BitField('cqe_version', 0, 4),
        BitField('compact_address_vector', 0, 1),
        BitField('eth_striding_wq', 0, 1),
        BitField('reserved16', 0, 1),
        BitField('ipoib_enhanced_offloads', 0, 1),
        BitField('ipoib_basic_offloads', 0, 1),
        BitField('ib_link_list_striding_wq', 0, 1),
        BitField('repeated_block_disabled', 0, 1),
        BitField('umr_modify_entity_size_disabled', 0, 1),
        BitField('umr_modify_atomic_disabled', 0, 1),
        BitField('umr_indirect_mkey_disabled', 0, 1),
        BitField('umr_fence', 0, 2),
        BitField('dc_req_sctr_data_cqe', 0, 1),
        BitField('dc_connect_qp', 0, 1),
        BitField('dc_cnak_trace', 0, 1),
        BitField('drain_sigerr', 0, 1),
        BitField('cmdif_checksum', 0, 2),
        BitField('sigerr_cqe', 0, 1),
        BitField('e_psv', 0, 1),
        BitField('wq_signature', 0, 1),
        BitField('sctr_data_cqe', 0, 1),
        BitField('bsf_in_create_mkey', 0, 1),
        BitField('sho', 0, 1),
        BitField('tph', 0, 1),
        BitField('rf', 0, 1),
        BitField('dct', 0, 1),
        BitField('qos', 0, 1),
        BitField('eth_net_offloads', 0, 1),
        BitField('roce', 0, 1),
        BitField('atomic', 0, 1),
        BitField('extended_retry_count', 0, 1),
        BitField('cq_oi', 0, 1),
        BitField('cq_resize', 0, 1),
        BitField('cq_moderation', 0, 1),
        BitField('cq_period_mode_modify', 0, 1),
        BitField('cq_invalidate', 0, 1),
        BitField('reserved17', 0, 1),
        BitField('cq_eq_remap', 0, 1),
        BitField('pg', 0, 1),
        BitField('block_lb_mc', 0, 1),
        BitField('exponential_backoff', 0, 1),
        BitField('scqe_break_moderation', 0, 1),
        BitField('cq_period_start_from_cqe', 0, 1),
        BitField('cd', 0, 1),
        BitField('atm', 0, 1),
        BitField('apm', 0, 1),
        BitField('vector_calc', 0, 1),
        BitField('umr_ptr_rlkey', 0, 1),
        BitField('imaicl', 0, 1),
        BitField('qp_packet_based', 0, 1),
        BitField('ib_cyclic_striding_wq', 0, 1),
        BitField('ipoib_enhanced_pkey_change', 0, 1),
        BitField('initiator_src_dct_in_cqe', 0, 1),
        BitField('qkv', 0, 1),
        BitField('pkv', 0, 1),
        BitField('set_deth_sqpn', 0, 1),
        BitField('rts2rts_primary_sl', 0, 1),
        BitField('initiator_src_dct', 0, 1),
        BitField('dc_v2', 0, 1),
        BitField('xrc', 0, 1),
        BitField('ud', 0, 1),
        BitField('uc', 0, 1),
        BitField('rc', 0, 1),
        BitField('uar_4k', 0, 1),
        BitField('reserved18', 0, 7),
        BitField('fl_rc_qp_when_roce_disabled', 0, 1),
        BitField('reserved19', 0, 1),
        BitField('uar_sz', 0, 6),
        BitField('reserved20', 0, 3),
        BitField('log_max_dc_cnak_qps', 0, 5),
        ByteField('log_pg_sz', 0),
        BitField('bf', 0, 1),
        BitField('driver_version', 0, 1),
        BitField('pad_tx_eth_packet', 0, 1),
        BitField('query_driver_version', 0, 1),
        BitField('max_qp_retry_freq', 0, 1),
        BitField('qp_by_name', 0, 1),
        BitField('mkey_by_name', 0, 1),
        BitField('reserved21', 0, 4),
        BitField('log_bf_reg_size', 0, 5),
        BitField('reserved22', 0, 6),
        BitField('lag_dct', 0, 2),
        BitField('lag_tx_port_affinity', 0, 1),
        BitField('lag_native_fdb_selection', 0, 1),
        BitField('must_be_0', 0, 1),
        BitField('lag_master', 0, 1),
        BitField('num_lag_ports', 0, 4),
        ShortField('num_of_diagnostic_counters', 0),
        ShortField('max_wqe_sz_sq', 0),
        ShortField('reserved23', 0),
        ShortField('max_wqe_sz_rq', 0),
        ShortField('max_flow_counter_31_16', 0),
        ShortField('max_wqe_sz_sq_dc', 0),
        BitField('reserved24', 0, 7),
        BitField('max_qp_mcg', 0, 25),
        ShortField('mlnx_tag_ethertype', 0),
        ByteField('flow_counter_bulk_alloc', 0),
        ByteField('log_max_mcg', 0),
        BitField('reserved25', 0, 3),
        BitField('log_max_transport_domain', 0, 5),
        BitField('tir_esw_lb_filter_disable', 0, 1),
        BitField('reserved26', 0, 1),
        BitField('relaxed_ordering_read', 0, 1),
        BitField('log_max_pd', 0, 5),
        BitField('reserved27', 0, 11),
        BitField('log_max_xrcd', 0, 5),
        BitField('nic_receive_steering_discard', 0, 1),
        BitField('receive_discard_vport_down', 0, 1),
        BitField('transmit_discard_vport_down', 0, 1),
        BitField('eq_overrun_count', 0, 1),
        BitField('nic_receive_steering_depth', 0, 1),
        BitField('invalid_command_count', 0, 1),
        BitField('quota_exceeded_count', 0, 1),
        BitField('flow_counter_by_name', 0, 1),
        ByteField('log_max_flow_counter_bulk', 0),
        ShortField('max_flow_counter_15_0', 0),
        BitField('modify_tis', 0, 1),
        BitField('flow_counters_dump', 0, 1),
        BitField('reserved28', 0, 1),
        BitField('log_max_rq', 0, 5),
        BitField('reserved29', 0, 3),
        BitField('log_max_sq', 0, 5),
        BitField('reserved30', 0, 3),
        BitField('log_max_tir', 0, 5),
        BitField('reserved31', 0, 3),
        BitField('log_max_tis', 0, 5),
        BitField('basic_cyclic_rcv_wqe', 0, 1),
        BitField('reserved32', 0, 2),
        BitField('log_max_rmp', 0, 5),
        BitField('reserved33', 0, 3),
        BitField('log_max_rqt', 0, 5),
        BitField('reserved34', 0, 3),
        BitField('log_max_rqt_size', 0, 5),
        BitField('reserved35', 0, 3),
        BitField('log_max_tis_per_sq', 0, 5),
        BitField('ext_stride_num_range', 0, 1),
        BitField('reserved36', 0, 2),
        BitField('log_max_stride_sz_rq', 0, 5),
        BitField('reserved37', 0, 3),
        BitField('log_min_stride_sz_rq', 0, 5),
        BitField('reserved38', 0, 3),
        BitField('log_max_stride_sz_sq', 0, 5),
        BitField('reserved39', 0, 3),
        BitField('log_min_stride_sz_sq', 0, 5),
        BitField('hairpin_eth_raw', 0, 1),
        BitField('reserved40', 0, 2),
        BitField('log_max_hairpin_queues', 0, 5),
        BitField('hairpin_ib_raw', 0, 1),
        BitField('hairpin_eth2ipoib', 0, 1),
        BitField('hairpin_ipoib2eth', 0, 1),
        BitField('log_max_hairpin_wq_data_sz', 0, 5),
        BitField('reserved41', 0, 3),
        BitField('log_max_hairpin_num_packets', 0, 5),
        BitField('reserved42', 0, 3),
        BitField('log_max_wq_sz', 0, 5),
        BitField('nic_vport_change_event', 0, 1),
        BitField('disable_local_lb_uc', 0, 1),
        BitField('disable_local_lb_mc', 0, 1),
        BitField('log_min_hairpin_wq_data_sz', 0, 5),
        BitField('system_image_guid_modifiable', 0, 1),
        BitField('reserved43', 0, 1),
        BitField('vhca_state', 0, 1),
        BitField('log_max_vlan_list', 0, 5),
        BitField('reserved44', 0, 3),
        BitField('log_max_current_mc_list', 0, 5),
        BitField('reserved45', 0, 3),
        BitField('log_max_current_uc_list', 0, 5),
        LongField('general_obj_types', 0),
        BitField('sq_ts_format', 0, 2),
        BitField('rq_ts_format', 0, 2),
        BitField('steering_format_version', 0, 4),
        BitField('create_qp_start_hint', 0, 24),
        BitField('tls', 0, 1),
        BitField('ats', 0, 1),
        BitField('reserved46', 0, 1),
        BitField('log_max_uctx', 0, 5),
        BitField('aes_xts', 0, 1),
        BitField('crypto', 0, 1),
        BitField('ipsec_offload', 0, 1),
        BitField('log_max_umem', 0, 5),
        ShortField('max_num_eqs', 0),
        BitField('reserved47', 0, 1),
        BitField('tls_tx', 0, 1),
        BitField('tls_rx', 0, 1),
        BitField('log_max_l2_table', 0, 5),
        ByteField('reserved48', 0),
        ShortField('log_uar_page_sz', 0),
        BitField('e', 0, 1),
        BitField('reserved49', 0, 31),
        IntField('device_frequency_mhz', 0),
        IntField('device_frequency_khz', 0),
        BitField('capi', 0, 1),
        BitField('create_pec', 0, 1),
        BitField('nvmf_target_offload', 0, 1),
        BitField('capi_invalidate', 0, 1),
        BitField('reserved50', 0, 23),
        BitField('log_max_pasid', 0, 5),
        IntField('num_of_uars_per_page', 0),
        IntField('flex_parser_protocols', 0),
        ByteField('max_geneve_tlv_options', 0),
        BitField('reserved51', 0, 3),
        BitField('max_geneve_tlv_option_data_len', 0, 5),
        BitField('flex_parser_header_modify', 0, 1),
        BitField('adv_rdma_cap', 0, 1),
        BitField('reserved52', 0, 1),
        BitField('log_max_guaranteed_connections', 0, 5),
        BitField('reserved53', 0, 3),
        BitField('log_max_dct_connections', 0, 5),
        ByteField('log_max_atomic_size_qp', 0),
        BitField('reserved54', 0, 3),
        BitField('log_max_dci_stream_channels', 0, 5),
        BitField('reserved55', 0, 3),
        BitField('log_max_dci_errored_streams', 0, 5),
        ByteField('log_max_atomic_size_dc', 0),
        ShortField('max_multi_user_group_size', 0),
        BitField('reserved56', 0, 2),
        BitField('crossing_vhca_mkey', 0, 1),
        BitField('log_max_dek', 0, 5),
        BitField('reserved57', 0, 1),
        BitField('mini_cqe_resp_l3l4header', 0, 1),
        BitField('mini_cqe_resp_flow_tag', 0, 1),
        BitField('enhanced_cqe_compression', 0, 1),
        BitField('mini_cqe_resp_stride_index', 0, 1),
        BitField('cqe_128_always', 0, 1),
        BitField('cqe_compression_128b', 0, 1),
        BitField('cqe_compression', 0, 1),
        ShortField('cqe_compression_timeout', 0),
        ShortField('cqe_compression_max_num', 0),
        BitField('reserved58', 0, 3),
        BitField('wqe_based_flow_table_update_dest_type_offset', 0, 5),
        BitField('flex_parser_id_gtpu_dw_0', 0, 4),
        BitField('log_max_tm_offloaded_op_size', 0, 4),
        BitField('tag_matching', 0, 1),
        BitField('rndv_offload_rc', 0, 1),
        BitField('rndv_offload_dc', 0, 1),
        BitField('log_tag_matching_list_sz', 0, 5),
        BitField('reserved59', 0, 3),
        BitField('log_max_xrq', 0, 5),
        ByteField('affiliate_nic_vport_criteria', 0),
        ByteField('native_port_num', 0),
        ByteField('num_vhca_ports', 0),
        BitField('flex_parser_id_gtpu_teid', 0, 4),
        BitField('reserved60', 0, 1),
        BitField('trusted_vnic_vhca', 0, 1),
        BitField('sw_owner_id', 0, 1),
        BitField('reserve_not_to_use', 0, 1),
        ShortField('max_num_of_monitor_counters', 0),
        ShortField('num_ppcnt_monitor_counters', 0),
        ShortField('max_num_sf', 0),
        ShortField('num_q_monitor_counters', 0),
        StrFixedLenField('reserved61', None, length=4),
        BitField('sf', 0, 1),
        BitField('sf_set_partition', 0, 1),
        BitField('reserved62', 0, 1),
        BitField('log_max_sf', 0, 5),
        ByteField('reserved63', 0),
        ByteField('log_min_sf_size', 0),
        ByteField('max_num_sf_partitions', 0),
        IntField('uctx_permission', 0),
        BitField('flex_parser_id_mpls_over_x_cw', 0, 4),
        BitField('flex_parser_id_geneve_tlv_option_0', 0, 4),
        BitField('flex_parser_id_icmp_dw1', 0, 4),
        BitField('flex_parser_id_icmp_dw0', 0, 4),
        BitField('flex_parser_id_icmpv6_dw1', 0, 4),
        BitField('flex_parser_id_icmpv6_dw0', 0, 4),
        BitField('flex_parser_id_outer_first_mpls_over_gre', 0, 4),
        BitField('flex_parser_id_outer_first_mpls_over_udp_label', 0, 4),
        ShortField('max_num_match_definer', 0),
        ShortField('sf_base_id', 0),
        BitField('flex_parser_id_gtpu_dw_2', 0, 4),
        BitField('flex_parser_id_gtpu_first_ext_dw_0', 0, 4),
        BitField('num_total_dynamic_vf_msix', 0, 24),
        BitField('reserved64', 0, 3),
        BitField('log_flow_hit_aso_granularity', 0, 5),
        BitField('reserved65', 0, 3),
        BitField('log_flow_hit_aso_max_alloc', 0, 5),
        BitField('reserved66', 0, 4),
        BitField('dynamic_msix_table_size', 0, 12),
        BitField('reserved67', 0, 3),
        BitField('log_max_num_flow_hit_aso', 0, 5),
        BitField('reserved68', 0, 4),
        BitField('min_dynamic_vf_msix_table_size', 0, 4),
        BitField('reserved69', 0, 4),
        BitField('max_dynamic_vf_msix_table_size', 0, 12),
        BitField('reserved70', 0, 3),
        BitField('log_max_num_header_modify_argument', 0, 5),
        BitField('reserved71', 0, 4),
        BitField('log_header_modify_argument_granularity', 0, 4),
        BitField('reserved72', 0, 3),
        BitField('log_header_modify_argument_max_alloc', 0, 5),
        BitField('reserved73', 0, 3),
        BitField('max_flow_execute_aso', 0, 5),
        LongField('vhca_tunnel_commands', 0),
        LongField('match_definer_format_supported', 0),
    ]


class QueryCmdHcaCapOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', CmdHcaCap(), CmdHcaCap), 2048, padwith=b"\x00"),
    ]


class FlowTableEntryMatchSetMisc(PRMPacket):
    fields_desc = [
        BitField('gre_c_present', 0, 1),
        BitField('bth_a', 0, 1),
        BitField('gre_k_present', 0, 1),
        BitField('gre_s_present', 0, 1),
        BitField('source_vhca_port', 0, 4),
        BitField('source_sqn', 0, 24),
        ShortField('src_esw_owner_vhca_id', 0),
        ShortField('source_port', 0),
        BitField('outer_second_prio', 0, 3),
        BitField('outer_second_cfi', 0, 1),
        BitField('outer_second_vid', 0, 12),
        BitField('inner_second_prio', 0, 3),
        BitField('inner_second_cfi', 0, 1),
        BitField('inner_second_vid', 0, 12),
        BitField('outer_second_cvlan_tag', 0, 1),
        BitField('inner_second_cvlan_tag', 0, 1),
        BitField('outer_second_svlan_tag', 0, 1),
        BitField('inner_second_svlan_tag', 0, 1),
        BitField('outer_emd_tag', 0, 1),
        BitField('reserved2', 0, 11),
        ShortField('gre_protocol', 0),
        BitField('gre_key_h', 0, 24),
        ByteField('gre_key_l', 0),
        BitField('vxlan_vni', 0, 24),
        ByteField('bth_opcode', 0),
        BitField('geneve_vni', 0, 24),
        BitField('reserved4', 0, 7),
        BitField('geneve_oam', 0, 1),
        BitField('reserved5', 0, 12),
        BitField('outer_ipv6_flow_label', 0, 20),
        BitField('reserved6', 0, 12),
        BitField('inner_ipv6_flow_label', 0, 20),
        BitField('reserved7', 0, 10),
        BitField('geneve_opt_len', 0, 6),
        ShortField('geneve_protocol_type', 0),
        ByteField('reserved8', 0),
        BitField('bth_dst_qp', 0, 24),
        IntField('inner_esp_spi', 0),
        IntField('outer_esp_spi', 0),
        StrFixedLenField('reserved9', None, length=4),
        IntField('outer_emd_tag_data_47_16', 0),
        ShortField('outer_emd_tag_data_15_0', 0),
        ShortField('reserved10', 0),
    ]


class FlowTableEntryMatchSetMisc2(PRMPacket):
    fields_desc = [
        BitField('outer_first_mpls_label', 0, 20),
        BitField('outer_first_mpls_exp', 0, 3),
        BitField('outer_first_mpls_s_bos', 0, 1),
        ByteField('outer_first_mpls_ttl', 0),
        BitField('inner_first_mpls_label', 0, 20),
        BitField('inner_first_mpls_exp', 0, 3),
        BitField('inner_first_mpls_s_bos', 0, 1),
        ByteField('inner_first_mpls_ttl', 0),
        BitField('outer_last_mpls_over_gre_label', 0, 20),
        BitField('outer_last_mpls_over_gre_exp', 0, 3),
        BitField('outer_last_mpls_over_gre_s_bos', 0, 1),
        ByteField('outer_last_mpls_over_gre_ttl', 0),
        BitField('outer_last_mpls_over_udp_label', 0, 20),
        BitField('outer_last_mpls_over_udp_exp', 0, 3),
        BitField('outer_last_mpls_over_udp_s_bos', 0, 1),
        ByteField('outer_last_mpls_over_udp_ttl', 0),
        IntField('metadata_reg_c_7', 0),
        IntField('metadata_reg_c_6', 0),
        IntField('metadata_reg_c_5', 0),
        IntField('metadata_reg_c_4', 0),
        IntField('metadata_reg_c_3', 0),
        IntField('metadata_reg_c_2', 0),
        IntField('metadata_reg_c_1', 0),
        IntField('metadata_reg_c_0', 0),
        IntField('metadata_reg_a', 0),
        IntField('metadata_reg_b', 0),
        StrFixedLenField('reserved1', None, length=8),
    ]


class FlowTableEntryMatchSetMisc3(PRMPacket):
    fields_desc = [
        IntField('inner_tcp_seq_num', 0),
        IntField('outer_tcp_seq_num', 0),
        IntField('inner_tcp_ack_num', 0),
        IntField('outer_tcp_ack_num', 0),
        ByteField('reserved1', 0),
        BitField('outer_vxlan_gpe_vni', 0, 24),
        ByteField('outer_vxlan_gpe_next_protocol', 0),
        ByteField('outer_vxlan_gpe_flags', 0),
        ShortField('reserved2', 0),
        IntField('icmp_header_data', 0),
        IntField('icmpv6_header_data', 0),
        ByteField('icmp_type', 0),
        ByteField('icmp_code', 0),
        ByteField('icmpv6_type', 0),
        ByteField('icmpv6_code', 0),
        IntField('geneve_tlv_option_0_data', 0),
        IntField('gtpu_teid', 0),
        ByteField('gtpu_msg_type', 0),
        BitField('reserved3', 0, 5),
        BitField('gtpu_flags', 0, 3),
        ShortField('reserved4', 0),
        IntField('gtpu_dw_2', 0),
        IntField('gtpu_first_ext_dw_0', 0),
        IntField('gtpu_dw_0', 0),
        StrFixedLenField('reserved5', None, length=4),
    ]


class FlowTableEntryMatchSetLyr24(PRMPacket):
    fields_desc = [
        MACField('smac', '00:00:00:00:00:00'),
        ShortField('ethertype', 0),
        MACField('dmac', '00:00:00:00:00:00'),
        BitField('first_prio', 0, 3),
        BitField('first_cfi', 0, 1),
        BitField('first_vid', 0, 12),
        ByteField('ip_protocol', 0),
        BitField('ip_dscp', 0, 6),
        BitField('ip_ecn', 0, 2),
        BitField('cvlan_tag', 0, 1),
        BitField('svlan_tag', 0, 1),
        BitField('frag', 0, 1),
        BitField('ip_version', 0, 4),
        BitField('tcp_flags', 0, 9),
        ShortField('tcp_sport', 0),
        ShortField('tcp_dport', 0),
        BitField('reserved1', 0, 16),
        BitField('ipv4_ihl', 0, 4),
        BitField('l3_ok', 0, 1),
        BitField('l4_ok', 0, 1),
        BitField('ipv4_checksum_ok', 0, 1),
        BitField('l4_checksum_ok', 0, 1),
        ByteField('ip_ttl_hoplimit', 0),
        ShortField('udp_sport', 0),
        ShortField('udp_dport', 0),
        # Ipv4 and IPv6 fields are edited manually:
        # Added lambda conditioning
        # Field names must be different
        ConditionalField(BitField('src_ip_mask', 0, 128),
                        lambda pkt: pkt.ip_version != 4 and pkt.ip_version != 6),
        ConditionalField(BitField('reserved2', 0, 96),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IPField("src_ip4", "0.0.0.0"),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IP6Field("src_ip6", "::"),
                         lambda pkt: pkt.ip_version == 6),
        ConditionalField(BitField('dst_ip_mask', 0, 128),
                        lambda pkt: pkt.ip_version != 4 and pkt.ip_version != 6),
        ConditionalField(BitField('reserved3', 0, 96),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IPField("dst_ip4", "0.0.0.0"),
                         lambda pkt: pkt.ip_version == 4),
        ConditionalField(IP6Field("dst_ip6", "::"),
                         lambda pkt: pkt.ip_version == 6),
    ]


class ProgSampleField(PRMPacket):
    fields_desc = [
        IntField('prog_sample_field_value', 0),
        IntField('prog_sample_field_id', 0),
    ]


class FlowTableEntryMatchSetMisc4(PRMPacket):
    fields_desc = [
        PacketListField('prog_sample_field', [ProgSampleField() for x in range(4)], ProgSampleField, count_from=lambda pkt:4),
        StrFixedLenField('reserved1', None, length=32),
    ]


class FlowTableEntryMatchSetMisc5(PRMPacket):
    fields_desc = [
        IntField('macsec_tag_0', 0),
        IntField('macsec_tag_1', 0),
        IntField('macsec_tag_2', 0),
        IntField('macsec_tag_3', 0),
        IntField('tunnel_header_0', 0),
        IntField('tunnel_header_1', 0),
        IntField('tunnel_header_2', 0),
        IntField('tunnel_header_3', 0),
        StrFixedLenField('reserved1', None, length=32),
    ]


class FlowTableEntryMatchSetMisc6(PRMPacket):
    fields_desc = [
        FieldListField('nisp_header', [0 for x in range(10)], IntField('', 0), count_from=lambda pkt:10),
        StrFixedLenField('reserved1', None, length=24),
    ]


class FlowTableEntryMatchParam(PRMPacket):
    fields_desc = [
        PacketField('outer_headers', FlowTableEntryMatchSetLyr24(), FlowTableEntryMatchSetLyr24),
        PacketField('misc_parameters', FlowTableEntryMatchSetMisc(), FlowTableEntryMatchSetMisc),
        PacketField('inner_headers', FlowTableEntryMatchSetLyr24(), FlowTableEntryMatchSetLyr24),
        PacketField('misc_parameters_2', FlowTableEntryMatchSetMisc2(), FlowTableEntryMatchSetMisc2),
        PacketField('misc_parameters_3', FlowTableEntryMatchSetMisc3(), FlowTableEntryMatchSetMisc3),
        PacketField('misc_parameters_4', FlowTableEntryMatchSetMisc4(), FlowTableEntryMatchSetMisc4),
        PacketField('misc_parameters_5', FlowTableEntryMatchSetMisc5(), FlowTableEntryMatchSetMisc5),
        PacketField('misc_parameters_6', FlowTableEntryMatchSetMisc6(), FlowTableEntryMatchSetMisc6),
    ]


class FlowTableEntryMatchParamSW(PRMPacket):
    fields_desc = [
        PacketField('outer_headers', FlowTableEntryMatchSetLyr24(), FlowTableEntryMatchSetLyr24),
        PacketField('misc_parameters', FlowTableEntryMatchSetMisc(), FlowTableEntryMatchSetMisc),
        PacketField('inner_headers', FlowTableEntryMatchSetLyr24(), FlowTableEntryMatchSetLyr24),
        PacketField('misc_parameters_2', FlowTableEntryMatchSetMisc2(), FlowTableEntryMatchSetMisc2),
        PacketField('misc_parameters_3', FlowTableEntryMatchSetMisc3(), FlowTableEntryMatchSetMisc3),
        PacketField('misc_parameters_4', FlowTableEntryMatchSetMisc4(), FlowTableEntryMatchSetMisc4),
        PacketField('misc_parameters_5', FlowTableEntryMatchSetMisc5(), FlowTableEntryMatchSetMisc5),
        # Keep reserved commented out since SW steering checks the size with
        # supported fields only.
        # StrFixedLenField('reserved1', None, length=128),
    ]


class SetActionIn(PRMPacket):
    fields_desc = [
        BitField('action_type', ActionType.SET_ACTION, 4),
        BitField('field', 0, 12),
        BitField('reserved1', 0, 3),
        BitField('offset', 0, 5),
        BitField('reserved2', 0, 3),
        BitField('length', 0, 5),
        IntField('data', 0),
    ]


class CopyActionIn(PRMPacket):
    fields_desc = [
        BitField('action_type', ActionType.COPY_ACTION, 4),
        BitField('src_field', 0, 12),
        BitField('reserved1', 0, 3),
        BitField('src_offset', 0, 5),
        BitField('reserved2', 0, 3),
        BitField('length', 0, 5),
        BitField('reserved3', 0, 4),
        BitField('dst_field', 0, 12),
        BitField('reserved4', 0, 3),
        BitField('dst_offest', 0, 5),
        ByteField('reserved5', 0),
    ]


class AllocFlowCounterIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_ALLOC_FLOW_COUNTER),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        IntField('flow_counter_id', 0),
        BitField('reserved2', 0, 19),
        BitField('flow_counter_bulk_log_size', 0, 5),
        ByteField('flow_counter_bulk', 0),
    ]


class AllocFlowCounterOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        IntField('flow_counter_id', 0),
        StrFixedLenField('reserved2', None, length=4),
    ]


class DeallocFlowCounterIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_DEALLOC_FLOW_COUNTER),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        IntField('flow_counter_id', 0),
        StrFixedLenField('reserved2', None, length=4),
    ]


class DeallocFlowCounterOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
    ]


class QueryFlowCounterIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_QUERY_FLOW_COUNTER),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        StrFixedLenField('reserved2', None, length=4),
        IntField('mkey', 0),
        LongField('address', 0),
        BitField('clear', 0, 1),
        BitField('dump_to_memory', 0, 1),
        BitField('num_of_counters', 0, 30),
        IntField('flow_counter_id', 0),
    ]


class TrafficCounter(PRMPacket):
    fields_desc = [
        LongField('packets', 0),
        LongField('octets', 0),
    ]


class QueryFlowCounterOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PacketField('flow_statistics', TrafficCounter(), TrafficCounter),
    ]


class QueryBulkFlowCounterOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=4),
        IntField('num_statistics', 0),
        PacketListField('flow_statistics', [], TrafficCounter),
    ]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        if self.num_statistics > 0:
            self.flow_statistics = [TrafficCounter() for _ in range(self.num_statistics)]


class RxHashFieldSelect(PRMPacket):
    fields_desc = [
        BitField('l3_prot_type', 0, 1),
        BitField('l4_prot_type', 0, 1),
        BitField('selected_fields', 0, 30),
    ]


class Tirc(PRMPacket):
    fields_desc = [
        StrFixedLenField('reserved1', None, length=4),
        BitField('disp_type', 0, 4),
        BitField('tls_en', 0, 1),
        BitField('nvmeotcp_zerocopy_en', 0, 1),
        BitField('nvmeotcp_crc_en', 0, 1),
        BitField('reserved2', 0, 25),
        StrFixedLenField('reserved3', None, length=8),
        BitField('reserved4', 0, 4),
        BitField('lro_timeout_period_usecs', 0, 16),
        BitField('lro_enable_mask', 0, 4),
        ByteField('lro_max_msg_sz', 0),
        ByteField('reserved5', 0),
        BitField('afu_id', 0, 24),
        BitField('inline_rqn_vhca_id_valid', 0, 1),
        BitField('reserved6', 0, 15),
        ShortField('inline_rqn_vhca_id', 0),
        BitField('reserved7', 0, 5),
        BitField('inline_q_type', 0, 3),
        BitField('inline_rqn', 0, 24),
        BitField('rx_hash_symmetric', 0, 1),
        BitField('reserved8', 0, 1),
        BitField('tunneled_offload_en', 0, 1),
        BitField('reserved9', 0, 5),
        BitField('indirect_table', 0, 24),
        BitField('rx_hash_fn', 0, 4),
        BitField('reserved10', 0, 2),
        BitField('self_lb_en', 0, 2),
        BitField('transport_domain', 0, 24),
        FieldListField('rx_hash_toeplitz_key', [0 for x in range(10)], IntField('', 0), count_from=lambda pkt:10),
        PacketField('rx_hash_field_selector_outer', RxHashFieldSelect(), RxHashFieldSelect),
        PacketField('rx_hash_field_selector_inner', RxHashFieldSelect(), RxHashFieldSelect),
        IntField('nvmeotcp_tag_buffer_table_id', 0),
        StrFixedLenField('reserved11', None, length=148),
    ]


class CreateTirIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_TIR),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        StrFixedLenField('reserved2', None, length=24),
        PacketField('tir_context', Tirc(), Tirc),
    ]


class CreateTirOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('icm_address_63_40', 0, 24),
        IntField('syndrome', 0),
        ByteField('icm_address_39_32', 0),
        BitField('tirn', 0, 24),
        IntField('icm_address_31_0', 0),
    ]


class SwMkc(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 1),
        BitField('free', 0, 1),
        BitField('reserved2', 0, 1),
        BitField('access_mode_4_2', 0, 3),
        BitField('alter_pd_to_vhca_id', 0, 1),
        BitField('crossed_side_mkey', 0, 1),
        BitField('reserved3', 0, 5),
        BitField('relaxed_ordering_write', 0, 1),
        BitField('reserved4', 0, 1),
        BitField('small_fence_on_rdma_read_response', 0, 1),
        BitField('umr_en', 0, 1),
        BitField('a', 0, 1),
        BitField('rw', 0, 1),
        BitField('rr', 0, 1),
        BitField('lw', 0, 1),
        BitField('lr', 0, 1),
        BitField('access_mode_1_0', 0, 2),
        BitField('reserved5', 0, 1),
        BitField('tunneled_atomic', 0, 1),
        BitField('ma_translation_mode', 0, 2),
        BitField('reserved6', 0, 4),
        BitField('qpn', 0, 24),
        ByteField('mkey_7_0', 0),
        ByteField('reserved7', 0),
        BitField('pasid', 0, 24),
        BitField('length64', 0, 1),
        BitField('bsf_en', 0, 1),
        BitField('sync_umr', 0, 1),
        BitField('reserved8', 0, 2),
        BitField('expected_sigerr_count', 0, 1),
        BitField('reserved9', 0, 1),
        BitField('en_rinval', 0, 1),
        BitField('pd', 0, 24),
        LongField('start_addr', 0),
        LongField('len', 0),
        IntField('bsf_octword_size', 0),
        StrFixedLenField('reserved10', None, length=12),
        ShortField('crossing_target_vhca_id', 0),
        ShortField('reserved11', 0),
        IntField('translations_octword_size', 0),
        BitField('reserved12', 0, 25),
        BitField('relaxed_ordering_read', 0, 1),
        BitField('reserved13', 0, 1),
        BitField('log_entity_size', 0, 5),
        BitField('reserved14', 0, 3),
        BitField('crypto_en', 0, 2),
        BitField('reserved15', 0, 27),
    ]


class CreateMkeyIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_MKEY),
        ShortField('uid', 0),
        ShortField('reserved1', 0),
        ShortField('op_mod', 0),
        ByteField('reserved2', 0),
        BitField('input_mkey_index', 0, 24),
        BitField('pg_access', 0, 1),
        BitField('mkey_umem_valid', 0, 1),
        BitField('reserved3', 0, 30),
        PacketField('sw_mkc', SwMkc(), SwMkc),
        LongField('e_mtt_pointer', 0),
        LongField('e_bsf_pointer', 0),
        IntField('translations_octword_actual_size', 0),
        IntField('mkey_umem_id', 0),
        LongField('mkey_umem_offset', 0),
        IntField('bsf_octword_actual_size', 0),
        StrFixedLenField('reserved4', None, length=156),
        FieldListField('klm_pas_mtt', [0 for x in range(0)], IntField('', 0), count_from=lambda pkt:0),
    ]


class CreateMkeyOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        ByteField('reserved2', 0),
        BitField('mkey_index', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


class MigrationTagVersion0(PRMPacket):
    fields_desc = [
        ShortField('reserved1', 0),
        ShortField('device_id', 0),
        ShortField('fw_version_minor', 0),
        ShortField('icm_version', 0),
        StrFixedLenField('reserved2', None, length=4),
        IntField('crc', 0),
    ]


class CmdHcaCap2(PRMPacket):
    fields_desc = [
        StrFixedLenField('reserved1', None, length=16),
        BitField('migratable', 0, 1),
        BitField('force_multi_prio_sq', 0, 1),
        BitField('cq_with_emulated_dev_eq', 0, 1),
        BitField('max_num_prog_sample_field', 0, 5),
        BitField('multi_path_force', 0, 1),
        BitField('fw_cpu_monitoring', 0, 1),
        BitField('enh_eth_striding_wq', 0, 1),
        BitField('log_max_num_reserved_qpn', 0, 5),
        BitField('reserved2', 0, 1),
        BitField('introspection_mkey_access_allowed', 0, 1),
        BitField('query_vuid', 0, 1),
        BitField('log_reserved_qpn_granularity', 0, 5),
        BitField('reserved3', 0, 3),
        BitField('log_reserved_qpn_max_alloc', 0, 5),
        ByteField('max_reformat_insert_size', 0),
        ByteField('max_reformat_insert_offset', 0),
        ByteField('max_reformat_remove_size', 0),
        ByteField('max_reformat_remove_offset', 0),
        BitField('multi_sl_qp', 0, 1),
        BitField('non_tunnel_reformat', 0, 1),
        BitField('reserved4', 0, 2),
        BitField('log_min_stride_wqe_sz', 0, 4),
        BitField('migration_multi_load', 0, 1),
        BitField('migration_tracking_state', 0, 1),
        BitField('reserved5', 0, 1),
        BitField('log_conn_track_granularity', 0, 5),
        BitField('reserved6', 0, 3),
        BitField('log_conn_track_max_alloc', 0, 5),
        BitField('reserved7', 0, 3),
        BitField('log_max_conn_track_offload', 0, 5),
        IntField('cross_vhca_object_to_object_supported', 0),
        LongField('allowed_object_for_other_vhca_access', 0),
        IntField('introspection_mkey', 0),
        BitField('ec_mmo_qp', 0, 1),
        BitField('sync_driver_version', 0, 1),
        BitField('driver_version_change_event', 0, 1),
        BitField('hairpin_sq_wqe_bb_size', 0, 5),
        BitField('hairpin_sq_wq_in_host_mem', 0, 1),
        BitField('hairpin_data_buffer_locked', 0, 1),
        BitField('reserved8', 0, 1),
        BitField('log_ec_mmo_max_size', 0, 5),
        BitField('reserved9', 0, 3),
        BitField('log_ec_mmo_max_src', 0, 5),
        BitField('reserved10', 0, 3),
        BitField('log_ec_mmo_max_dst', 0, 5),
        IntField('sync_driver_actions', 0),
        ByteField('flow_table_type_2_type', 0),
        BitField('reserved11', 0, 2),
        BitField('format_select_dw_8_6_ext', 0, 1),
        BitField('reserved12', 0, 1),
        BitField('log_min_mkey_entity_size', 0, 4),
        ShortField('execute_aso_type', 0),
        LongField('general_obj_types_127_64', 0),
        IntField('repeated_mkey_v2', 0),
        BitField('reserved_gid_index_valid', 0, 1),
        BitField('sw_vhca_id_valid', 0, 1),
        BitField('sw_vhca_id', 0, 14),
        ShortField('reserved_gid_index', 0),
        BitField('reserved13', 0, 3),
        BitField('log_max_channel_service_connection', 0, 5),
        BitField('reserved14', 0, 3),
        BitField('ts_cqe_metadata_size2wqe_counter', 0, 5),
        BitField('reserved15', 0, 3),
        BitField('flow_counter_bulk_log_max_alloc', 0, 5),
        BitField('reserved16', 0, 3),
        BitField('flow_counter_bulk_log_granularity', 0, 5),
        ByteField('format_select_dw_mpls_over_x_cw', 0),
        ByteField('format_select_dw_geneve_tlv_option_0', 0),
        ByteField('format_select_dw_outer_first_mpls_over_gre', 0),
        ByteField('format_select_dw_outer_first_mpls_over_udp', 0),
        ByteField('format_select_dw_gtpu_dw_0', 0),
        ByteField('format_select_dw_gtpu_dw_1', 0),
        ByteField('format_select_dw_gtpu_dw_2', 0),
        ByteField('format_select_dw_gtpu_first_ext_dw_0', 0),
        IntField('generate_wqe_type', 0),
        ShortField('max_enh_strwq_supported_profile', 0),
        BitField('reserved17', 0, 3),
        BitField('log_max_total_hairpin_data_buffer_locked_size', 0, 5),
        BitField('reserved18', 0, 3),
        BitField('log_max_rq_hairpin_data_buffer_locked_size', 0, 5),
        BitField('send_dbr_mode_no_dbr_int', 0, 1),
        BitField('send_dbr_mode_no_dbr_ext', 0, 1),
        BitField('reserved19', 0, 1),
        BitField('log_max_send_dbr_less_qp_sq', 0, 5),
        BitField('reserved20', 0, 3),
        BitField('enh_strwq_max_log_page_size', 0, 5),
        ByteField('enh_strwq_max_headroom', 0),
        ByteField('enh_strwq_max_tailroom', 0),
        PacketField('migration_tag_version_0', MigrationTagVersion0(), MigrationTagVersion0),
        BitField('reserved21', 0, 3),
        BitField('log_max_hairpin_wqe_num', 0, 5),
        BitField('reserved22', 0, 24),
        StrFixedLenField('reserved23', None, length=140),
    ]


class QueryCmdHcaCap2Out(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', CmdHcaCap2(), CmdHcaCap2), 2048, padwith=b"\x00"),
    ]


class FlowMeterParams(PRMPacket):
    fields_desc = [
        BitField('valid', 0, 1),
        BitField('bucket_overflow', 0, 1),
        BitField('start_color', 0, 2),
        BitField('both_buckets_on_green', 0, 1),
        BitField('reserved1', 0, 1),
        BitField('meter_mode', 0, 2),
        BitField('reserved2', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
        ByteField('cbs_exponent', 0),
        ByteField('cbs_mantissa', 0),
        BitField('reserved4', 0, 3),
        BitField('cir_exponent', 0, 5),
        ByteField('cir_mantissa', 0),
        StrFixedLenField('reserved5', None, length=4),
        ByteField('ebs_exponent', 0),
        ByteField('ebs_mantissa', 0),
        BitField('reserved6', 0, 3),
        BitField('eir_exponent', 0, 5),
        ByteField('eir_mantissa', 0),
        StrFixedLenField('reserved7', None, length=12),
    ]


class QosCaps(PRMPacket):
    fields_desc = [
        BitField('packet_pacing', 0, 1),
        BitField('esw_scheduling', 0, 1),
        BitField('esw_bw_share', 0, 1),
        BitField('esw_rate_limit', 0, 1),
        BitField('hll', 0, 1),
        BitField('packet_pacing_burst_bound', 0, 1),
        BitField('packet_pacing_typical_size', 0, 1),
        BitField('flow_meter_old', 0, 1),
        BitField('nic_sq_scheduling', 0, 1),
        BitField('nic_bw_share', 0, 1),
        BitField('nic_rate_limit', 0, 1),
        BitField('packet_pacing_uid', 0, 1),
        BitField('log_esw_max_sched_depth', 0, 4),
        ByteField('log_max_flow_meter', 0),
        ByteField('flow_meter_reg_id', 0),
        BitField('wqe_rate_pp', 0, 1),
        BitField('nic_qp_scheduling', 0, 1),
        BitField('reserved1', 0, 2),
        BitField('log_nic_max_sched_depth', 0, 4),
        BitField('flow_meter', 0, 1),
        BitField('reserved2', 0, 1),
        BitField('qos_remap_pp', 0, 1),
        BitField('log_max_qos_nic_queue_group', 0, 5),
        ShortField('reserved3', 0),
        IntField('packet_pacing_max_rate', 0),
        IntField('packet_pacing_min_rate', 0),
        BitField('reserved4', 0, 11),
        BitField('log_esw_max_rate_limit', 0, 5),
        ShortField('packet_pacing_rate_table_size', 0),
        ShortField('esw_element_type', 0),
        ShortField('esw_tsar_type', 0),
        ShortField('max_qos_para_vport', 0),
        ShortField('max_qos_para_vport_old', 0),
        IntField('max_tsar_bw_share', 0),
        ShortField('nic_element_type', 0),
        ShortField('nic_tsar_type', 0),
        BitField('reserved5', 0, 3),
        BitField('log_meter_aso_granularity', 0, 5),
        BitField('reserved6', 0, 3),
        BitField('log_meter_aso_max_alloc', 0, 5),
        BitField('reserved7', 0, 3),
        BitField('log_max_num_meter_aso', 0, 5),
        ByteField('reserved8', 0),
        BitField('reserved9', 0, 3),
        BitField('log_max_qos_nic_scheduling_element', 0, 5),
        BitField('reserved10', 0, 3),
        BitField('log_max_qos_esw_scheduling_element', 0, 5),
        ShortField('reserved11', 0),
        StrFixedLenField('reserved12', None, length=212),
    ]


class QueryQosCapOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', QosCaps(), QosCaps), 4096, padwith=b"\x00"),
    ]


class OdpPerTransportServiceCap(PRMPacket):
    fields_desc = [
        BitField('send', 0, 1),
        BitField('receive', 0, 1),
        BitField('write', 0, 1),
        BitField('read', 0, 1),
        BitField('atomic', 0, 1),
        BitField('rmp', 0, 1),
        BitField('tag_matching', 0, 1),
        BitField('reserved1', 0, 25),
    ]


class OdpSchemeCap(PRMPacket):
    fields_desc = [
        StrFixedLenField('reserved1', None, length=8),
        BitField('sig', 0, 1),
        BitField('cross_vhca_mkey', 0, 1),
        BitField('klm_null_mkey', 0, 1),
        BitField('dpa_process_win', 0, 1),
        BitField('reserved2', 0, 3),
        BitField('mmo_wqe', 0, 1),
        BitField('local_mmo_wqe', 0, 1),
        BitField('aso_wqe', 0, 1),
        BitField('umr_wqe', 0, 1),
        BitField('get_psv_wqe', 0, 1),
        BitField('rget_psv_wqe', 0, 1),
        BitField('reserved3', 0, 19),
        StrFixedLenField('reserved4', None, length=4),
        PacketField('rc_odp_caps', OdpPerTransportServiceCap(), OdpPerTransportServiceCap),
        PacketField('uc_odp_caps', OdpPerTransportServiceCap(), OdpPerTransportServiceCap),
        PacketField('ud_odp_caps', OdpPerTransportServiceCap(), OdpPerTransportServiceCap),
        PacketField('xrc_odp_caps', OdpPerTransportServiceCap(), OdpPerTransportServiceCap),
        PacketField('dc_odp_caps', OdpPerTransportServiceCap(), OdpPerTransportServiceCap),
        StrFixedLenField('reserved5', None, length=28),
    ]


class OdpCap(PRMPacket):
    fields_desc = [
        PacketField('transport_page_fault_scheme_cap', OdpSchemeCap(), OdpSchemeCap),
        PacketField('memory_page_fault_scheme_cap', OdpSchemeCap(), OdpSchemeCap),
        StrFixedLenField('reserved1', None, length=64),
        BitField('mem_page_fault', 0, 1),
        BitField('reserved2', 0, 31),
        StrFixedLenField('reserved3', None, length=60),
    ]


class QueryOdpCapOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', OdpCap(), OdpCap), 4096, padwith=b"\x00"),
    ]


class FlowTableFieldsSupported2(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 10),
        BitField('lag_rx_port_affinity', 0, 1),
        BitField('inner_esp_seq_num', 0, 1),
        BitField('outer_esp_seq_num', 0, 1),
        BitField('hash_result', 0, 1),
        BitField('bth_opcode', 0, 1),
        BitField('tunnel_header_2_3', 0, 1),
        BitField('tunnel_header_0_1', 0, 1),
        BitField('macsec_syndrome', 0, 1),
        BitField('macsec_tag', 0, 1),
        BitField('outer_lrh_sl', 0, 1),
        BitField('inner_ipv4_ihl', 0, 1),
        BitField('outer_ipv4_ihl', 0, 1),
        BitField('nisp_syndrome', 0, 1),
        BitField('inner_l3_ok', 0, 1),
        BitField('inner_l4_ok', 0, 1),
        BitField('outer_l3_ok', 0, 1),
        BitField('outer_l4_ok', 0, 1),
        BitField('nisp_header', 0, 1),
        BitField('inner_ipv4_checksum_ok', 0, 1),
        BitField('inner_l4_checksum_ok', 0, 1),
        BitField('outer_ipv4_checksum_ok', 0, 1),
        BitField('outer_l4_checksum_ok', 0, 1),
        StrFixedLenField('reserved2', None, length=12),
    ]


class FlowTableFieldsSupported(PRMPacket):
    fields_desc = [
        BitField('outer_dmac', 0, 1),
        BitField('outer_smac', 0, 1),
        BitField('outer_ether_type', 0, 1),
        BitField('outer_ip_version', 0, 1),
        BitField('outer_first_prio', 0, 1),
        BitField('outer_first_cfi', 0, 1),
        BitField('outer_first_vid', 0, 1),
        BitField('outer_ipv4_ttl', 0, 1),
        BitField('outer_second_prio', 0, 1),
        BitField('outer_second_cfi', 0, 1),
        BitField('outer_second_vid', 0, 1),
        BitField('outer_ipv6_flow_label', 0, 1),
        BitField('outer_sip', 0, 1),
        BitField('outer_dip', 0, 1),
        BitField('outer_frag', 0, 1),
        BitField('outer_ip_protocol', 0, 1),
        BitField('outer_ip_ecn', 0, 1),
        BitField('outer_ip_dscp', 0, 1),
        BitField('outer_udp_sport', 0, 1),
        BitField('outer_udp_dport', 0, 1),
        BitField('outer_tcp_sport', 0, 1),
        BitField('outer_tcp_dport', 0, 1),
        BitField('outer_tcp_flags', 0, 1),
        BitField('outer_gre_protocol', 0, 1),
        BitField('outer_gre_key', 0, 1),
        BitField('outer_vxlan_vni', 0, 1),
        BitField('outer_geneve_vni', 0, 1),
        BitField('outer_geneve_oam', 0, 1),
        BitField('outer_geneve_protocol_type', 0, 1),
        BitField('outer_geneve_opt_len', 0, 1),
        BitField('source_vhca_port', 0, 1),
        BitField('source_eswitch_port', 0, 1),
        BitField('inner_dmac', 0, 1),
        BitField('inner_smac', 0, 1),
        BitField('inner_ether_type', 0, 1),
        BitField('inner_ip_version', 0, 1),
        BitField('inner_first_prio', 0, 1),
        BitField('inner_first_cfi', 0, 1),
        BitField('inner_first_vid', 0, 1),
        BitField('inner_ipv4_ttl', 0, 1),
        BitField('inner_second_prio', 0, 1),
        BitField('inner_second_cfi', 0, 1),
        BitField('inner_second_vid', 0, 1),
        BitField('inner_ipv6_flow_label', 0, 1),
        BitField('inner_sip', 0, 1),
        BitField('inner_dip', 0, 1),
        BitField('inner_frag', 0, 1),
        BitField('inner_ip_protocol', 0, 1),
        BitField('inner_ip_ecn', 0, 1),
        BitField('inner_ip_dscp', 0, 1),
        BitField('inner_udp_sport', 0, 1),
        BitField('inner_udp_dport', 0, 1),
        BitField('inner_tcp_sport', 0, 1),
        BitField('inner_tcp_dport', 0, 1),
        BitField('inner_tcp_flags', 0, 1),
        BitField('outer_tcp_seq_num', 0, 1),
        BitField('inner_tcp_seq_num', 0, 1),
        BitField('prog_sample_field', 0, 1),
        BitField('outer_first_mpls_over_udp_cw', 0, 1),
        BitField('outer_tcp_ack_num', 0, 1),
        BitField('inner_tcp_ack_num', 0, 1),
        BitField('outer_first_mpls_over_gre_cw', 0, 1),
        BitField('metadata_reg_b', 0, 1),
        BitField('metadata_reg_a', 0, 1),
        BitField('geneve_tlv_option_0_data', 0, 1),
        BitField('geneve_tlv_option_0_exist', 0, 1),
        BitField('outer_vxlan_gpe_vni', 0, 1),
        BitField('outer_vxlan_gpe_flags', 0, 1),
        BitField('outer_vxlan_gpe_next_protocol', 0, 1),
        BitField('outer_first_mpls_over_gre_ttl', 0, 1),
        BitField('outer_first_mpls_over_gre_s_bos', 0, 1),
        BitField('outer_first_mpls_over_gre_exp', 0, 1),
        BitField('outer_first_mpls_over_gre_label', 0, 1),
        BitField('outer_first_mpls_over_udp_ttl', 0, 1),
        BitField('outer_first_mpls_over_udp_s_bos', 0, 1),
        BitField('outer_first_mpls_over_udp_exp', 0, 1),
        BitField('outer_first_mpls_over_udp_label', 0, 1),
        BitField('inner_first_mpls_ttl', 0, 1),
        BitField('inner_first_mpls_s_bos', 0, 1),
        BitField('inner_first_mpls_exp', 0, 1),
        BitField('inner_first_mpls_label', 0, 1),
        BitField('outer_first_mpls_ttl', 0, 1),
        BitField('outer_first_mpls_s_bos', 0, 1),
        BitField('outer_first_mpls_exp', 0, 1),
        BitField('outer_first_mpls_label', 0, 1),
        BitField('outer_emd_tag', 0, 1),
        BitField('inner_esp_spi', 0, 1),
        BitField('outer_esp_spi', 0, 1),
        BitField('inner_ipv6_hop_limit', 0, 1),
        BitField('outer_ipv6_hop_limit', 0, 1),
        BitField('bth_dst_qp', 0, 1),
        BitField('inner_first_svlan', 0, 1),
        BitField('inner_second_svlan', 0, 1),
        BitField('outer_first_svlan', 0, 1),
        BitField('outer_second_svlan', 0, 1),
        BitField('source_sqn', 0, 1),
        BitField('outer_gre_c_present', 0, 1),
        BitField('outer_gre_k_present', 0, 1),
        BitField('outer_gre_s_present', 0, 1),
        BitField('ipsec_syndrome', 0, 1),
        BitField('ipsec_next_header', 0, 1),
        BitField('gtpu_first_ext_dw_0', 0, 1),
        BitField('gtpu_dw_0', 0, 1),
        BitField('gtpu_teid', 0, 1),
        BitField('gtpu_msg_type', 0, 1),
        BitField('gtpu_flags', 0, 1),
        BitField('outer_lrh_lid', 0, 1),
        BitField('outer_grh_flow_label', 0, 1),
        BitField('outer_grh_tclass', 0, 1),
        BitField('outer_grh_gid', 0, 1),
        BitField('outer_bth_pkey', 0, 1),
        BitField('gtpu_dw_2', 0, 1),
        BitField('reserved1', 0, 2),
        BitField('icmpv6_code', 0, 1),
        BitField('icmp_code', 0, 1),
        BitField('icmpv6_type', 0, 1),
        BitField('icmp_type', 0, 1),
        BitField('icmpv6_header_data', 0, 1),
        BitField('icmp_header_data', 0, 1),
        BitField('metadata_reg_c_7', 0, 1),
        BitField('metadata_reg_c_6', 0, 1),
        BitField('metadata_reg_c_5', 0, 1),
        BitField('metadata_reg_c_4', 0, 1),
        BitField('metadata_reg_c_3', 0, 1),
        BitField('metadata_reg_c_2', 0, 1),
        BitField('metadata_reg_c_1', 0, 1),
        BitField('metadata_reg_c_0', 0, 1),
    ]


class HeaderModifyCapProperties(PRMPacket):
    fields_desc = [
        PacketField('set_action_field_support', FlowTableFieldsSupported(),
                    FlowTableFieldsSupported),
        PacketField('set_action_field_support_2', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('add_action_field_support', FlowTableFieldsSupported(),
                    FlowTableFieldsSupported),
        PacketField('add_action_field_support_2', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('copy_action_field_support', FlowTableFieldsSupported(),
                    FlowTableFieldsSupported),
        PacketField('copy_action_field_support_2', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        StrFixedLenField('reserved1', None, length=32),
    ]


class FlowTablePropLayout(PRMPacket):
    fields_desc = [
        BitField('ft_support', 0, 1),
        BitField('flow_tag', 0, 1),
        BitField('flow_counter', 0, 1),
        BitField('flow_modify_en', 0, 1),
        BitField('modify_root', 0, 1),
        BitField('identified_miss_table', 0, 1),
        BitField('flow_table_modify', 0, 1),
        BitField('reformat', 0, 1),
        BitField('decap', 0, 1),
        BitField('reset_root_to_default', 0, 1),
        BitField('pop_vlan', 0, 1),
        BitField('push_vlan', 0, 1),
        BitField('fpga_vendor_acceleration', 0, 1),
        BitField('pop_vlan_2', 0, 1),
        BitField('push_vlan_2', 0, 1),
        BitField('reformat_and_vlan_action', 0, 1),
        BitField('modify_and_vlan_action', 0, 1),
        BitField('sw_owner', 0, 1),
        BitField('reformat_l3_tunnel_to_l2', 0, 1),
        BitField('reformat_l2_to_l3_tunnel', 0, 1),
        BitField('reformat_and_modify_action', 0, 1),
        BitField('ignore_flow_level', 0, 1),
        BitField('reserved1', 0, 1),
        BitField('table_miss_action_domain', 0, 1),
        BitField('termination_table', 0, 1),
        BitField('reformat_and_fwd_to_table', 0, 1),
        BitField('forward_vhca_rx_root', 0, 1),
        BitField('forward_vhca_tx_root', 0, 1),
        BitField('ipsec_encrypt', 0, 1),
        BitField('ipsec_decrypt', 0, 1),
        BitField('sw_owner_v2', 0, 1),
        BitField('wqe_based_flow_update', 0, 1),
        BitField('termination_table_raw_traffic', 0, 1),
        BitField('vlan_and_fwd_to_table', 0, 1),
        BitField('log_max_ft_size', 0, 6),
        ByteField('log_max_modify_header_context', 0),
        ByteField('max_modify_header_actions', 0),
        ByteField('max_ft_level', 0),
        BitField('reformat_add_esp_transport', 0, 1),
        BitField('reformat_l2_to_l3_esp_tunnel', 0, 1),
        BitField('reformat_add_esp_transport_over_udp', 0, 1),
        BitField('reformat_del_esp_transport', 0, 1),
        BitField('reformat_l3_esp_tunnel_to_l2', 0, 1),
        BitField('reformat_del_esp_transport_over_udp', 0, 1),
        BitField('execute_aso', 0, 1),
        BitField('forward_flow_meter', 0, 1),
        ByteField('log_max_flow_sampler_num', 0),
        ByteField('metadata_reg_b_width', 0),
        ByteField('metadata_reg_a_width', 0),
        BitField('reformat_l2_to_l3_nisp_tunnel', 0, 1),
        BitField('reformat_l3_nisp_tunnel_to_l2', 0, 1),
        BitField('reformat_insert', 0, 1),
        BitField('reformat_remove', 0, 1),
        BitField('macsec_encrypt', 0, 1),
        BitField('macsec_decrypt', 0, 1),
        BitField('nisp_encrypt', 0, 1),
        BitField('nisp_decrypt', 0, 1),
        BitField('reformat_add_macsec', 0, 1),
        BitField('reformat_remove_macsec', 0, 1),
        BitField('reparse', 0, 1),
        BitField('reserved2', 0, 1),
        BitField('cross_vhca_object', 0, 1),
        BitField('reserved3', 0, 11),
        ByteField('log_max_ft_num', 0),
        ShortField('reserved4', 0),
        ByteField('log_max_flow_counter', 0),
        ByteField('log_max_destination', 0),
        BitField('reserved5', 0, 24),
        ByteField('log_max_flow', 0),
        StrFixedLenField('reserved6', None, length=8),
        PacketField('ft_field_support', FlowTableFieldsSupported(), FlowTableFieldsSupported),
        PacketField('ft_field_bitmask_support', FlowTableFieldsSupported(),
                    FlowTableFieldsSupported),
    ]

class AdvRdmaCapabilities(PRMPacket):
    fields_desc = [
        BitField('ps_cap', 0, 1),
        BitField('ps_auto_select', 0, 1),
        BitField('reserved1', 0, 30),
        ByteField('rcx_type', 0),
        BitField('reserved2', 0, 2),
        BitField('ps_entry_log_max_value', 0, 6),
        BitField('reserved3', 0, 6),
        BitField('qp_max_ps_num_entry', 0, 10),
        ByteField('mp_max_num_queues', 0),
        ByteField('ps_user_context_max_log_size', 0),
        ByteField('message_based_qp_and_striding_wq', 0),
        ByteField('reserved4', 0),
        ShortField('max_receive_send_message_size_stride', 0),
        ShortField('reserved5', 0),
        IntField('max_receive_send_message_size_byte', 0),
        StrFixedLenField('reserved6', None, length=44),
        PacketField('rdma_transport_rx_flow_table_properties', FlowTablePropLayout(), FlowTablePropLayout),
        PacketField('rdma_transport_tx_flow_table_properties', FlowTablePropLayout(), FlowTablePropLayout),
        PacketField('rdma_transport_rx_ft_field_support_2', FlowTableFieldsSupported2(), FlowTableFieldsSupported2),
        PacketField('rdma_transport_tx_ft_field_support_2', FlowTableFieldsSupported2(), FlowTableFieldsSupported2),
        PacketField('rdma_transport_rx_ft_field_bitmask_support_2', FlowTableFieldsSupported2(), FlowTableFieldsSupported2),
        PacketField('rdma_transport_tx_ft_field_bitmask_support_2', FlowTableFieldsSupported2(), FlowTableFieldsSupported2),
        PacketField('rdma_transport_rx_header_modify', HeaderModifyCapProperties(), HeaderModifyCapProperties),
        PacketField('rdma_transport_tx_header_modify', HeaderModifyCapProperties(), HeaderModifyCapProperties),
    ]


class QueryAdvRdmaCapOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', AdvRdmaCapabilities(), AdvRdmaCapabilities), 2048, padwith=b"\x00"),
    ]


class FlowTableNicCap(PRMPacket):
    fields_desc = [
        BitField('nic_rx_multi_path_tirs', 0, 1),
        BitField('nic_rx_multi_path_tirs_fts', 0, 1),
        BitField('allow_sniffer_and_nic_rx_shared_tir', 0, 1),
        BitField('reserved1', 0, 1),
        BitField('nic_rx_flow_tag_multipath_en', 0, 1),
        BitField('ttl_checksum_correction', 0, 1),
        BitField('nic_rx_rdma_fwd_tir', 0, 1),
        BitField('sw_owner_reformat_supported', 0, 1),
        ShortField('reserved2', 0),
        ByteField('nic_receive_max_steering_depth', 0),
        BitField('encap_general_header', 0, 1),
        BitField('reserved3', 0, 10),
        BitField('log_max_packet_reformat_context', 0, 5),
        BitField('reserved4', 0, 6),
        BitField('max_encap_header_size', 0, 10),
        StrFixedLenField('reserved5', None, length=56),
        PacketField('flow_table_properties_nic_receive', FlowTablePropLayout(),
                    FlowTablePropLayout),
        PacketField('flow_table_properties_nic_receive_rdma', FlowTablePropLayout(),
                    FlowTablePropLayout),
        PacketField('flow_table_properties_nic_receive_sniffer', FlowTablePropLayout(),
                    FlowTablePropLayout),
        PacketField('flow_table_properties_nic_transmit', FlowTablePropLayout(),
                    FlowTablePropLayout),
        PacketField('flow_table_properties_nic_transmit_rdma', FlowTablePropLayout(),
                    FlowTablePropLayout),
        PacketField('flow_table_properties_nic_transmit_sniffer', FlowTablePropLayout(),
                    FlowTablePropLayout),
        StrFixedLenField('reserved6', None, length=64),
        PacketField('header_modify_nic_receive', HeaderModifyCapProperties(),
                    HeaderModifyCapProperties),
        PacketField('ft_field_support_2_nic_receive', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_receive', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_support_2_nic_receive_rdma', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_receive_rdma', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_support_2_nic_receive_sniffer', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_receive_sniffer', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_support_2_nic_transmit', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_transmit', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_support_2_nic_transmit_rdma', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_transmit_rdma', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_support_2_nic_transmit_sniffer', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        PacketField('ft_field_bitmask_support_2_nic_transmit_sniffer', FlowTableFieldsSupported2(),
                    FlowTableFieldsSupported2),
        StrFixedLenField('reserved7', None, length=64),
        PacketField('header_modify_nic_transmit', HeaderModifyCapProperties(),
                    HeaderModifyCapProperties),
        LongField('sw_steering_nic_rx_action_drop_icm_address', 0),
        LongField('sw_steering_nic_tx_action_drop_icm_address', 0),
        LongField('sw_steering_nic_tx_action_allow_icm_address', 0),
        StrFixedLenField('reserved8', None, length=40),
    ]


class QueryCmdHcaNicFlowTableCapOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        StrFixedLenField('reserved2', None, length=8),
        PadField(PacketField('capability', FlowTableNicCap(), FlowTableNicCap), 2048,
                 padwith=b"\x00"),
    ]


class RdmaCtrlObj(PRMPacket):
    fields_desc = [
        LongField('modify_field_select', 0),
        StrFixedLenField('reserved1', None, length=6),
        ShortField('other_vhca_id', 0),
    ]


class GeneralObjCreateParam(PRMPacket):
    fields_desc = [
        BitField('alias_object', 0, 1),
        BitField('reserved1', 0, 2),
        BitField('log_obj_range', 0, 5),
        BitField('reserved2', 0, 24),
    ]


class GeneralObjInCmdHdr(PRMPacket):
    fields_desc = [
        ShortField('opcode', 0),
        ShortField('uid', 0),
        ShortField('vhca_tunnel_id', 0),
        ShortField('obj_type', 0),
        IntField('obj_id', 0),
        ConditionalField(
            PadField(PacketField('op_param_create', GeneralObjCreateParam(), GeneralObjCreateParam), 4, padwith=b"\x00"),
            lambda pkt: pkt.opcode == DevxOps.MLX5_CMD_OP_CREATE_GENERAL_OBJECT)
    ]


class GeneralObjOutCmdHdr(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        IntField('obj_id', 0),
        StrFixedLenField('reserved2', None, length=4),
    ]


class CreateGeneralObjIn(PRMPacket):
    fields_desc = [
        PacketField('general_obj_in_cmd_hdr', GeneralObjInCmdHdr(), GeneralObjInCmdHdr),
        ConditionalField(
            PadField(PacketField('obj_context', RdmaCtrlObj(), RdmaCtrlObj), 488, padwith=b"\x00"),
            lambda pkt: pkt.general_obj_in_cmd_hdr.obj_type == DevxGeneralObjTypes.MLX5_OBJ_TYPE_RDMA_CTRL),
    ]


class CreateGeneralObjOut(PRMPacket):
    fields_desc = [
        PacketField('general_obj_out_cmd_hdr', GeneralObjOutCmdHdr(), GeneralObjOutCmdHdr),
    ]


class SwOwnerIcmRootParams(PRMPacket):
    fields_desc = [
        LongField('sw_owner_icm_root_1', 0),
        LongField('sw_owner_icm_root_0', 0),
    ]


class RtcParams(PRMPacket):
    fields_desc = [
        IntField('rtc_id_0', 0),
        IntField('rtc_id_1', 0),
        StrFixedLenField('reserved1', None, length=8),
    ]


class FlowTableContext(PRMPacket):
        fields_desc = [
            BitField("reformat_en", 0, 1),
            BitField("decap_en", 0, 1),
            BitField("sw_owner", 0, 1),
            BitField("termination_table", 0, 1),
            BitField("table_miss_action", 0, 4),
            ByteField("level", 0),
            BitField("rtc_vld", 0, 1),
            BitField("freeze", 0, 1),
            BitField("reserved1", 0, 6),
            ByteField("log_size", 0),
            ByteField("reserved2", 0),
            BitField("table_miss_id", 0, 24),
            ByteField("reserved3", 0),
            BitField("lag_master_next_table_id", 0, 24),
            StrFixedLenField('reserved4', None, length=12),
            ConditionalField(
                PadField(PacketField('sw_owner_icm_root', SwOwnerIcmRootParams(), SwOwnerIcmRootParams), 16, padwith=b"\x00"),
                lambda pkt: pkt.sw_owner == 1 or pkt.rtc_vld == 0),
            ConditionalField(
                PadField(PacketField('rtc_params', RtcParams(), RtcParams), 16, padwith=b"\x00"),
                lambda pkt: pkt.rtc_vld == 1),
    ]


class CreateFlowTableIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_FLOW_TABLE),
        ShortField('uid', 0),
        ShortField('vhca_tunnel_id', 0),
        ShortField('op_mod', 0),
        BitField('other_vport', 0, 1),
        BitField('reserved1', 0, 15),
        ShortField('vport_number', 0),
        StrFixedLenField('reserved2', None, length=4),
        ByteField('table_type', 0),
        BitField('reserved3', 0, 24),
        StrFixedLenField('reserved4', None, length=4),
        PacketField('flow_table_context', FlowTableContext(), FlowTableContext),
    ]


class CreateFlowTableOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('icm_address_63_40', 0, 24),
        IntField('syndrome', 0),
        ByteField('icm_address_39_32', 0),
        BitField('table_id', 0, 24),
        IntField('icm_address_31_0', 0),
    ]


class CreateFlowGroupIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_CREATE_FLOW_GROUP),
        ShortField('uid', 0),
        ShortField('vhca_tunnel_id', 0),
        ShortField('op_mod', 0),
        BitField('other_vport', 0, 1),
        BitField('reserved1', 0, 15),
        ShortField('vport_number', 0),
        StrFixedLenField('reserved2', None, length=4),
        ByteField('table_type', 0),
        BitField('reserved3', 0, 4),
        BitField('group_type', 0, 4),
        ShortField('reserved4', 0),
        ByteField('reserved5', 0),
        BitField('table_id', 0, 24),
        BitField('src_esw_owner_vhca_id_valid', 0, 1),
        BitField('reserved6', 0, 31),
        IntField('start_flow_index', 0),
        BitField('reserved7', 0, 18),
        BitField('log2_match_table_size', 0, 6),
        BitField('reserved8', 0, 2),
        BitField('log2_match_table_rows', 0, 6),
        IntField('end_flow_index', 0),
        ShortField('reserved9', 0),
        ShortField('match_definer_id', 0),
        StrFixedLenField('reserved10', None, length=16),
        BitField('reserved11', 0, 24),
        ByteField('match_criteria_enable', 0),
        PacketField('match_criteria', FlowTableEntryMatchParam(), FlowTableEntryMatchParam),
        StrFixedLenField('reserved12', None, length=448),
    ]


class CreateFlowGroupOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        ByteField('reserved2', 0),
        BitField('group_id', 0, 24),
        StrFixedLenField('reserved3', None, length=4),
    ]


class DestFormatStruct(PRMPacket):
    fields_desc = [
        ByteField('destination_type', 0),
        BitField('destination_id', 0, 24),
        BitField('dst_esw_owner_vhca_id_valid', 0, 1),
        BitField('packet_reformat', 0, 1),
        BitField('reserved1', 0, 6),
        ByteField('destination_table_type', 0),
        BitField('reserved2', 0, 1),
        BitField('dst_esw_owner_vhca_id', 0, 15),
    ]


class ExtendedDestFormat(PRMPacket):
    fields_desc = [
        PacketField('extended', DestFormatStruct(), DestFormatStruct),
        IntField('packet_reformat_id', 0),
        StrFixedLenField('reserved1', None, length=4),
    ]


class ExtendedFlowCounterList(PRMPacket):
    fields_desc = [
        IntField('flow_counter_id', 0),
        StrFixedLenField('reserved1', None, length=12),
    ]


class DestFormatStruct(PRMPacket):
    fields_desc = [
        ByteField('destination_type', 0),
        BitField('destination_id', 0, 24),
        BitField('dst_esw_owner_vhca_id_valid', 0, 1),
        BitField('packet_reformat', 0, 1),
        BitField('reserved1', 0, 6),
        ByteField('destination_table_type', 0),
        BitField('reserved2', 0, 1),
        BitField('dst_esw_owner_vhca_id', 0, 15),
    ]


class FlowCounterList(PRMPacket):
    fields_desc = [
        IntField('flow_counter_id', 0),
        StrFixedLenField('reserved1', None, length=4),
    ]


class ExeAsoCtrlConnTrack(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 23),
        BitField('direction', 0, 1),
    ]


class ExeAsoCtrlFlowHit(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 14),
        BitField('read', 0, 1),
        BitField('flag_id', 0, 9),
    ]


class ExeAsoCtrlFlowMeter(PRMPacket):
    fields_desc = [
        BitField('reserved1', 0, 20),
        BitField('action', 0, 1),
        BitField('init_color', 0, 2),
        BitField('meter_id', 0, 1),
    ]


class ExecuteAso(PRMPacket):
    fields_desc = [
        BitField('valid', 0, 1),
        BitField('reserved1', 0, 7),
        BitField('aso_object_id', 0, 24),
        BitField('return_reg_id', 0, 4),
        BitField('aso_type', 0, 4),
        ConditionalField(
            PadField(PacketField('flow_meter', ExeAsoCtrlFlowMeter(), ExeAsoCtrlFlowMeter), 4, padwith=b"\x00"),
            lambda pkt: pkt.aso_type == 0x2),
        ConditionalField(
            PadField(PacketField('flow_hit', ExeAsoCtrlFlowHit(), ExeAsoCtrlFlowHit), 4, padwith=b"\x00"),
            lambda pkt: pkt.aso_type == 0x4),
        ConditionalField(
            PadField(PacketField('exe_aso_ctrl', ExeAsoCtrlConnTrack(), ExeAsoCtrlConnTrack), 4, padwith=b"\x00"),
            lambda pkt: pkt.aso_type == 0x0),
    ]


class VlanTag(PRMPacket):
    fields_desc = [
        ShortField('tpid', 0),
        BitField('pcp', 0, 3),
        BitField('dei', 0, 1),
        BitField('vid', 0, 12),
    ]


class FlowContext(PRMPacket):
    fields_desc = [
        PacketField('push_vlan_tag', VlanTag(), VlanTag),
        IntField('group_id', 0),
        ByteField('reserved1', 0),
        BitField('flow_tag', 0, 24),
        ShortField('reserved2', 0),
        ShortField('action', 0),
        BitField('extended_destination', 0, 1),
        BitField('reserved3', 0, 1),
        BitField('flow_source', 0, 2),
        BitField('encrypt_decrypt_type', 0, 4),
        BitField('destination_list_size', 0, 24),
        ByteField('reserved4', 0),
        BitField('flow_counter_list_size', 0, 24),
        IntField('packet_reformat_id', 0),
        PacketField('push_vlan_2_tag', VlanTag(), VlanTag),
        IntField('encrypt_decrypt_obj_id', 0),
        StrFixedLenField('reserved5', None, length=24),
        PacketField('match_value', FlowTableEntryMatchParam(), FlowTableEntryMatchParam),
        PacketListField('execute_aso', [ExecuteAso() for x in range(4)], ExecuteAso, count_from=lambda pkt:4),
        StrFixedLenField('reserved6', None, length=160),
        ConditionalField(
            PacketListField('dest_format', [DestFormatStruct() for x in range(0)], DestFormatStruct, count_from=lambda pkt:0),
            lambda pkt: pkt.destination_list_size > 0),
        ConditionalField(
            PacketListField('flow_counter', [FlowCounterList() for x in range(0)], FlowCounterList, count_from=lambda pkt:0),
            lambda pkt: pkt.flow_counter_list_size > 0),
        ConditionalField(
            PacketListField('extended_dest_format', [ExtendedDestFormat() for x in range(0)], ExtendedDestFormat, count_from=lambda pkt:0),
            lambda pkt: pkt.destination_list_size > 0),
        ConditionalField(
            PacketListField('extended_flow_counter', [ExtendedFlowCounterList() for x in range(0)], ExtendedFlowCounterList, count_from=lambda pkt:0),
            lambda pkt: pkt.flow_counter_list_size > 0),
    ]


class SetFlowTableEntryIn(PRMPacket):
    fields_desc = [
        ShortField('opcode', DevxOps.MLX5_CMD_OP_SET_FLOW_TABLE_ENTRY),
        ShortField('uid', 0),
        ShortField('vhca_tunnel_id', 0),
        ShortField('op_mod', 0),
        BitField('other_vport', 0, 1),
        BitField('reserved1', 0, 15),
        ShortField('vport_number', 0),
        StrFixedLenField('reserved2', None, length=4),
        ByteField('table_type', 0),
        BitField('reserved3', 0, 24),
        ByteField('reserved4', 0),
        BitField('table_id', 0, 24),
        BitField('ignore_flow_level', 0, 1),
        BitField('reserved5', 0, 15),
        ShortField('modify_enable_mask', 0),
        StrFixedLenField('reserved6', None, length=4),
        IntField('flow_index', 0),
        StrFixedLenField('reserved7', None, length=28),
        PacketField('flow_context', FlowContext(), FlowContext),
    ]


class SetFlowTableEntryOut(PRMPacket):
    fields_desc = [
        ByteField('status', 0),
        BitField('reserved1', 0, 24),
        IntField('syndrome', 0),
        LongField('reserved2', 0)
    ]
