# 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', 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('reserved26', 0, 3),
        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, 24),
        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 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)
    ]
