/*
  This software is available to you under a choice of one of two
  licenses.  You may choose to be licensed under the terms of the GNU
  General Public License (GPL) Version 2, available at
  <http://www.fsf.org/copyleft/gpl.html>, or the OpenIB.org BSD
  license, available in the LICENSE.TXT file accompanying this
  software.  These details are also available at
  <http://openib.org/license.html>.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  SOFTWARE.

  Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved.
*/

FILE_LICENCE ( GPL2_ONLY );

/***
 *** This file was generated at "Tue Nov 22 15:21:23 2005"
 *** by:
 ***    % csp_bf -copyright=/mswg/misc/license-header.txt -prefix arbelprm_ -bits -fixnames MT25218_PRM.csp
 ***/

#ifndef H_prefix_arbelprm_bits_fixnames_MT25218_PRM_csp_H
#define H_prefix_arbelprm_bits_fixnames_MT25218_PRM_csp_H

/* UD Address Vector */

struct arbelprm_ud_address_vector_st {	/* Little Endian */
    pseudo_bit_t	pd[0x00018];           /* Protection Domain */
    pseudo_bit_t	port_number[0x00002];  /* Port number
                                                 1 - Port 1
                                                 2 - Port 2
                                                 other - reserved */
    pseudo_bit_t	reserved0[0x00006];
/* -------------- */
    pseudo_bit_t	rlid[0x00010];         /* Remote (Destination) LID */
    pseudo_bit_t	my_lid_path_bits[0x00007];/* Source LID - the lower 7 bits (upper bits are taken from PortInfo) */
    pseudo_bit_t	g[0x00001];            /* Global address enable - if set, GRH will be formed for packet header */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	hop_limit[0x00008];    /* IPv6 hop limit */
    pseudo_bit_t	max_stat_rate[0x00003];/* Maximum static rate control. 
                                                 0 - 4X injection rate
                                                 1 - 1X injection rate
                                                 other - reserved
                                                  */
    pseudo_bit_t	reserved2[0x00001];
    pseudo_bit_t	msg[0x00002];          /* Max Message size, size is 256*2^MSG bytes */
    pseudo_bit_t	reserved3[0x00002];
    pseudo_bit_t	mgid_index[0x00006];   /* Index to port GID table
                                                 mgid_index = (port_number-1) * 2^log_max_gid + gid_index
                                                 Where:
                                                 1. log_max_gid is taken from QUERY_DEV_LIM command
                                                 2. gid_index is the index to the GID table */
    pseudo_bit_t	reserved4[0x0000a];
/* -------------- */
    pseudo_bit_t	flow_label[0x00014];   /* IPv6 flow label */
    pseudo_bit_t	tclass[0x00008];       /* IPv6 TClass */
    pseudo_bit_t	sl[0x00004];           /* InfiniBand Service Level (SL) */
/* -------------- */
    pseudo_bit_t	rgid_127_96[0x00020];  /* Remote GID[127:96] */
/* -------------- */
    pseudo_bit_t	rgid_95_64[0x00020];   /* Remote GID[95:64] */
/* -------------- */
    pseudo_bit_t	rgid_63_32[0x00020];   /* Remote GID[63:32] */
/* -------------- */
    pseudo_bit_t	rgid_31_0[0x00020];    /* Remote GID[31:0] if G bit is set. Must be set to 0x2 if G bit is cleared. */
/* -------------- */
};

/* Send doorbell */

struct arbelprm_send_doorbell_st {	/* Little Endian */
    pseudo_bit_t	nopcode[0x00005];      /* Opcode of descriptor to be executed */
    pseudo_bit_t	f[0x00001];            /* Fence bit. If set, descriptor is fenced */
    pseudo_bit_t	reserved0[0x00002];
    pseudo_bit_t	wqe_counter[0x00010];  /* Modulo-64K counter of WQEs posted to the QP since its creation excluding the newly posted WQEs in this doorbell. Should be zero for the first doorbell on the QP */
    pseudo_bit_t	wqe_cnt[0x00008];      /* Number of WQEs posted with this doorbell. Must be grater then zero. */
/* -------------- */
    pseudo_bit_t	nds[0x00006];          /* Next descriptor size (in 16-byte chunks) */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	qpn[0x00018];          /* QP number this doorbell is rung on */
/* -------------- */
};

/* ACCESS_LAM_inject_errors_input_modifier */

struct arbelprm_access_lam_inject_errors_input_modifier_st {	/* Little Endian */
    pseudo_bit_t	index3[0x00007];
    pseudo_bit_t	q3[0x00001];
    pseudo_bit_t	index2[0x00007];
    pseudo_bit_t	q2[0x00001];
    pseudo_bit_t	index1[0x00007];
    pseudo_bit_t	q1[0x00001];
    pseudo_bit_t	index0[0x00007];
    pseudo_bit_t	q0[0x00001];
/* -------------- */
};

/* ACCESS_LAM_inject_errors_input_parameter */

struct arbelprm_access_lam_inject_errors_input_parameter_st {	/* Little Endian */
    pseudo_bit_t	ba[0x00002];           /* Bank Address */
    pseudo_bit_t	da[0x00002];           /* Dimm Address */
    pseudo_bit_t	reserved0[0x0001c];
/* -------------- */
    pseudo_bit_t	ra[0x00010];           /* Row Address */
    pseudo_bit_t	ca[0x00010];           /* Column Address */
/* -------------- */
};

/*  */

struct arbelprm_recv_wqe_segment_next_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00006];
    pseudo_bit_t	nda_31_6[0x0001a];     /* Next WQE address, low 32 bit. WQE address must be aligned to 64-byte boundary (6 LSB are forced ZERO). */
/* -------------- */
    pseudo_bit_t	nds[0x00006];          /* Next WQE size in OctoWords (16 bytes). 
                                                 Zero value in NDS field signals end of WQEs? chain.
                                                  */
    pseudo_bit_t	reserved1[0x0001a];
/* -------------- */
};

/* Send wqe segment data inline */

struct arbelprm_wqe_segment_data_inline_st {	/* Little Endian */
    pseudo_bit_t	byte_count[0x0000a];   /* Not including padding for 16Byte chunks */
    pseudo_bit_t	reserved0[0x00015];
    pseudo_bit_t	always1[0x00001];
/* -------------- */
    pseudo_bit_t	data[0x00018];         /* Data may be more this segment size - in 16Byte chunks */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	reserved2[0x00040];
/* -------------- */
};

/* Send wqe segment data ptr */

struct arbelprm_wqe_segment_data_ptr_st {	/* Little Endian */
    pseudo_bit_t	byte_count[0x0001f];
    pseudo_bit_t	always0[0x00001];
/* -------------- */
    pseudo_bit_t	l_key[0x00020];
/* -------------- */
    pseudo_bit_t	local_address_h[0x00020];
/* -------------- */
    pseudo_bit_t	local_address_l[0x00020];
/* -------------- */
};

/* Send wqe segment rd */

struct arbelprm_local_invalidate_segment_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
    pseudo_bit_t	mem_key[0x00018];
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	reserved2[0x000a0];
/* -------------- */
};

/* Fast_Registration_Segment */

struct arbelprm_fast_registration_segment_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x0001b];
    pseudo_bit_t	lr[0x00001];           /* If set - Local Read access will be enabled */
    pseudo_bit_t	lw[0x00001];           /* If set - Local Write access will be enabled */
    pseudo_bit_t	rr[0x00001];           /* If set - Remote Read access will be enabled */
    pseudo_bit_t	rw[0x00001];           /* If set - Remote Write access will be enabled */
    pseudo_bit_t	a[0x00001];            /* If set - Remote Atomic access will be enabled */
/* -------------- */
    pseudo_bit_t	pbl_ptr_63_32[0x00020];/* Physical address pointer [63:32] to the physical buffer list */
/* -------------- */
    pseudo_bit_t	mem_key[0x00020];      /* Memory Key on which the fast registration is executed on. */
/* -------------- */
    pseudo_bit_t	page_size[0x00005];    /* Page size used for the region. Actual size is [4K]*2^Page_size bytes.
                                                 page_size should be less than 20. */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	zb[0x00001];           /* Zero Based Region */
    pseudo_bit_t	pbl_ptr_31_8[0x00018]; /* Physical address pointer [31:8] to the physical buffer list */
/* -------------- */
    pseudo_bit_t	start_address_h[0x00020];/* Start Address[63:32] - Virtual Address where this region starts */
/* -------------- */
    pseudo_bit_t	start_address_l[0x00020];/* Start Address[31:0] - Virtual Address where this region starts */
/* -------------- */
    pseudo_bit_t	reg_len_h[0x00020];    /* Region Length[63:32] */
/* -------------- */
    pseudo_bit_t	reg_len_l[0x00020];    /* Region Length[31:0] */
/* -------------- */
};

/* Send wqe segment atomic */

struct arbelprm_wqe_segment_atomic_st {	/* Little Endian */
    pseudo_bit_t	swap_add_h[0x00020];
/* -------------- */
    pseudo_bit_t	swap_add_l[0x00020];
/* -------------- */
    pseudo_bit_t	compare_h[0x00020];
/* -------------- */
    pseudo_bit_t	compare_l[0x00020];
/* -------------- */
};

/* Send wqe segment remote address */

struct arbelprm_wqe_segment_remote_address_st {	/* Little Endian */
    pseudo_bit_t	remote_virt_addr_h[0x00020];
/* -------------- */
    pseudo_bit_t	remote_virt_addr_l[0x00020];
/* -------------- */
    pseudo_bit_t	rkey[0x00020];
/* -------------- */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
};

/* end wqe segment bind */

struct arbelprm_wqe_segment_bind_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x0001d];
    pseudo_bit_t	rr[0x00001];           /* If set, Remote Read Enable for bound window. */
    pseudo_bit_t	rw[0x00001];           /* If set, Remote Write Enable for bound window.
                                                  */
    pseudo_bit_t	a[0x00001];            /* If set, Atomic Enable for bound window. */
/* -------------- */
    pseudo_bit_t	reserved1[0x0001e];
    pseudo_bit_t	zb[0x00001];           /* If set, Window is Zero Based. */
    pseudo_bit_t	type[0x00001];         /* Window type.
                                                 0 - Type one window
                                                 1 - Type two window
                                                  */
/* -------------- */
    pseudo_bit_t	new_rkey[0x00020];     /* The new RKey of window to bind */
/* -------------- */
    pseudo_bit_t	region_lkey[0x00020];  /* Local key of region, which window will be bound to */
/* -------------- */
    pseudo_bit_t	start_address_h[0x00020];
/* -------------- */
    pseudo_bit_t	start_address_l[0x00020];
/* -------------- */
    pseudo_bit_t	length_h[0x00020];
/* -------------- */
    pseudo_bit_t	length_l[0x00020];
/* -------------- */
};

/* Send wqe segment ud */

struct arbelprm_wqe_segment_ud_st {	/* Little Endian */
    struct arbelprm_ud_address_vector_st	ud_address_vector;/* UD Address Vector */
/* -------------- */
    pseudo_bit_t	destination_qp[0x00018];
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	q_key[0x00020];
/* -------------- */
    pseudo_bit_t	reserved1[0x00040];
/* -------------- */
};

/* Send wqe segment rd */

struct arbelprm_wqe_segment_rd_st {	/* Little Endian */
    pseudo_bit_t	destination_qp[0x00018];
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	q_key[0x00020];
/* -------------- */
    pseudo_bit_t	reserved1[0x00040];
/* -------------- */
};

/* Send wqe segment ctrl */

struct arbelprm_wqe_segment_ctrl_send_st {	/* Little Endian */
    pseudo_bit_t	always1[0x00001];
    pseudo_bit_t	s[0x00001];            /* Solicited Event bit. If set, SE (Solicited Event) bit is set in the (last packet of) message. */
    pseudo_bit_t	e[0x00001];            /* Event bit. If set, event is generated upon WQE?s completion, if QP is allowed to generate an event. Every WQE with E-bit set generates an event. The C bit must be set on unsignalled QPs if the E bit is set. */
    pseudo_bit_t	c[0x00001];            /* Completion Queue bit. Valid for unsignalled QPs only. If set, the CQ is updated upon WQE?s completion */
    pseudo_bit_t	ip[0x00001];           /* When set, InfiniHost III Ex will calculate the IP checksum of the IP header that is present immediately after the IPoverIB encapsulation header. In the case of multiple headers (encapsulation), InfiniHost III Ex will calculate the checksum only for the first IP header following the IPoverIB encapsulation header. Not Valid for IPv6 packets */
    pseudo_bit_t	tcp_udp[0x00001];      /* When set, InfiniHost III Ex will calculate the TCP/UDP checksum of the packet that is present immediately after the IP header. In the case of multiple headers (encapsulation), InfiniHost III Ex will calculate the checksum only for the first TCP header following the IP header. This bit may be set only if the entire TCP/UDP segment is present in one IB packet */
    pseudo_bit_t	reserved0[0x00001];
    pseudo_bit_t	so[0x00001];           /* Strong Ordering - when set, the WQE will be executed only after all previous WQEs have been executed. Can be set for RC WQEs only. This bit must be set in type two BIND, Fast Registration and Local invalidate operations. */
    pseudo_bit_t	reserved1[0x00018];
/* -------------- */
    pseudo_bit_t	immediate[0x00020];    /* If the OpCode encodes an operation with Immediate (RDMA-write/SEND), This field will hold the Immediate data to be sent. If the OpCode encodes send and invalidate operations, this field holds the Invalidation key to be inserted into the packet; otherwise, this field is reserved. */
/* -------------- */
};

/* Send wqe segment next */

struct arbelprm_wqe_segment_next_st {	/* Little Endian */
    pseudo_bit_t	nopcode[0x00005];      /* Next Opcode: OpCode to be used in the next WQE. Encodes the type of operation to be executed on the QP:
                                                 ?00000? - NOP. WQE with this opcode creates a completion, but does nothing else
                                                 ?01000? - RDMA-write
                                                 ?01001? - RDMA-Write with Immediate 
                                                 ?10000? - RDMA-read  
                                                 ?10001? - Atomic Compare & swap
                                                 ?10010? - Atomic Fetch & Add
                                                 ?11000? - Bind memory window
                                                 
                                                 The encoding for the following operations depends on the QP type:
                                                 For RC, UC and RD QP:
                                                 ?01010? - SEND
                                                 ?01011? - SEND with Immediate
                                                 
                                                 For UD QP: 
                                                 the encoding depends on the values of bit[31] of the Q_key field in the Datagram Segment (see Table 39, ?Unreliable Datagram Segment Format - Pointers,? on page 101) of
                                                 both  the current WQE and the next WQE, as follows:
                                                 
                                                 If  the last WQE Q_Key bit[31] is clear and the next WQE Q_key bit[31] is set :
                                                 ?01000? - SEND
                                                 ?01001? - SEND with Immediate
                                                 
                                                 otherwise (if the next WQE Q_key bit[31] is cleared, or the last WQE Q_Key bit[31] is set):
                                                 ?01010? - SEND
                                                 ?01011? - SEND with Immediate
                                                 
                                                 All other opcode values are RESERVED, and will result in invalid operation execution. */
    pseudo_bit_t	reserved0[0x00001];
    pseudo_bit_t	nda_31_6[0x0001a];     /* Next WQE address, low 32 bit. WQE address must be aligned to 64-byte boundary (6 LSB are forced ZERO). */
/* -------------- */
    pseudo_bit_t	nds[0x00006];          /* Next WQE size in OctoWords (16 bytes). 
                                                 Zero value in NDS field signals end of WQEs? chain.
                                                  */
    pseudo_bit_t	f[0x00001];            /* Fence bit. If set, next WQE will start execution only after all previous Read/Atomic WQEs complete. */
    pseudo_bit_t	always1[0x00001];
    pseudo_bit_t	reserved1[0x00018];
/* -------------- */
};

/* Address Path */

struct arbelprm_address_path_st {	/* Little Endian */
    pseudo_bit_t	pkey_index[0x00007];   /* PKey table index */
    pseudo_bit_t	reserved0[0x00011];
    pseudo_bit_t	port_number[0x00002];  /* Specific port associated with this QP/EE.
                                                 1 - Port 1
                                                 2 - Port 2
                                                 other - reserved */
    pseudo_bit_t	reserved1[0x00006];
/* -------------- */
    pseudo_bit_t	rlid[0x00010];         /* Remote (Destination) LID */
    pseudo_bit_t	my_lid_path_bits[0x00007];/* Source LID - the lower 7 bits (upper bits are taken from PortInfo) */
    pseudo_bit_t	g[0x00001];            /* Global address enable - if set, GRH will be formed for packet header */
    pseudo_bit_t	reserved2[0x00005];
    pseudo_bit_t	rnr_retry[0x00003];    /* RNR retry count (see C9-132 in IB spec Vol 1)
                                                 0-6 - number of retries
                                                 7    - infinite */
/* -------------- */
    pseudo_bit_t	hop_limit[0x00008];    /* IPv6 hop limit */
    pseudo_bit_t	max_stat_rate[0x00003];/* Maximum static rate control. 
                                                 0 - 100% injection rate 
                                                 1 - 25% injection rate
                                                 2 - 12.5% injection rate
                                                 3 - 50% injection rate
                                                 other - reserved */
    pseudo_bit_t	reserved3[0x00005];
    pseudo_bit_t	mgid_index[0x00006];   /* Index to port GID table */
    pseudo_bit_t	reserved4[0x00005];
    pseudo_bit_t	ack_timeout[0x00005];  /* Local ACK timeout - Transport timer for activation of retransmission mechanism. Refer to IB spec Vol1 9.7.6.1.3 for further details.
                                                 The transport timer is set to 4.096us*2^ack_timeout, if ack_timeout is 0 then transport timer is disabled. */
/* -------------- */
    pseudo_bit_t	flow_label[0x00014];   /* IPv6 flow label */
    pseudo_bit_t	tclass[0x00008];       /* IPv6 TClass */
    pseudo_bit_t	sl[0x00004];           /* InfiniBand Service Level (SL) */
/* -------------- */
    pseudo_bit_t	rgid_127_96[0x00020];  /* Remote GID[127:96] */
/* -------------- */
    pseudo_bit_t	rgid_95_64[0x00020];   /* Remote GID[95:64] */
/* -------------- */
    pseudo_bit_t	rgid_63_32[0x00020];   /* Remote GID[63:32] */
/* -------------- */
    pseudo_bit_t	rgid_31_0[0x00020];    /* Remote GID[31:0] */
/* -------------- */
};

/* HCA Command Register (HCR) */

struct arbelprm_hca_command_register_st {	/* Little Endian */
    pseudo_bit_t	in_param_h[0x00020];   /* Input Parameter: parameter[63:32] or pointer[63:32] to input mailbox (see command description) */
/* -------------- */
    pseudo_bit_t	in_param_l[0x00020];   /* Input Parameter: parameter[31:0] or pointer[31:0] to input mailbox (see command description) */
/* -------------- */
    pseudo_bit_t	input_modifier[0x00020];/* Input Parameter Modifier */
/* -------------- */
    pseudo_bit_t	out_param_h[0x00020];  /* Output Parameter: parameter[63:32] or pointer[63:32] to output mailbox (see command description) */
/* -------------- */
    pseudo_bit_t	out_param_l[0x00020];  /* Output Parameter: parameter[31:0] or pointer[31:0] to output mailbox (see command description) */
/* -------------- */
    pseudo_bit_t	reserved0[0x00010];
    pseudo_bit_t	token[0x00010];        /* Software assigned token to the command, to uniquely identify it. The token is returned to the software in the EQE reported. */
/* -------------- */
    pseudo_bit_t	opcode[0x0000c];       /* Command opcode */
    pseudo_bit_t	opcode_modifier[0x00004];/* Opcode Modifier, see specific description for each command. */
    pseudo_bit_t	reserved1[0x00006];
    pseudo_bit_t	e[0x00001];            /* Event Request
                                                 0 - Don't report event (software will poll the GO bit)
                                                 1 - Report event to EQ when the command completes */
    pseudo_bit_t	go[0x00001];           /* Go (0=Software ownership for the HCR, 1=Hardware ownership for the HCR)
                                                 Software can write to the HCR only if Go bit is cleared.
                                                 Software must set the Go bit to trigger the HW to execute the command. Software must not write to this register value other than 1 for the Go bit. */
    pseudo_bit_t	status[0x00008];       /* Command execution status report. Valid only if command interface in under SW ownership (Go bit is cleared)
                                                 0 - command completed without error. If different than zero, command execution completed with error. Syndrom encoding is depended on command executed and is defined for each command */
/* -------------- */
};

/* CQ Doorbell */

struct arbelprm_cq_cmd_doorbell_st {	/* Little Endian */
    pseudo_bit_t	cqn[0x00018];          /* CQ number accessed */
    pseudo_bit_t	cmd[0x00003];          /* Command to be executed on CQ
                                                 0x0 - Reserved
                                                 0x1 - Request notification for next Solicited completion event. CQ_param specifies the current CQ Consumer Counter.
                                                 0x2 - Request notification for next Solicited or Unsolicited completion event. CQ_param specifies the current CQ Consumer Counter.
                                                 0x3 - Request notification for multiple completions (Arm-N). CQ_param specifies the value of the CQ Counter that when reached by HW (i.e. HW generates a CQE into this Counter) Event will be generated
                                                 Other - Reserved */
    pseudo_bit_t	reserved0[0x00001];
    pseudo_bit_t	cmd_sn[0x00002];       /* Command Sequence Number - This field should be incremented upon receiving completion notification of the respective CQ.
                                                 This transition is done by ringing Request notification for next Solicited, Request notification for next Solicited or Unsolicited 
                                                 completion or Request notification for multiple completions doorbells after receiving completion notification.
                                                 This field is initialized to Zero */
    pseudo_bit_t	reserved1[0x00002];
/* -------------- */
    pseudo_bit_t	cq_param[0x00020];     /* parameter to be used by CQ command */
/* -------------- */
};

/* RD-send doorbell */

struct arbelprm_rd_send_doorbell_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	een[0x00018];          /* End-to-end context number (reliable datagram)
                                                 Must be zero for Nop and Bind operations */
/* -------------- */
    pseudo_bit_t	reserved1[0x00008];
    pseudo_bit_t	qpn[0x00018];          /* QP number this doorbell is rung on */
/* -------------- */
    struct arbelprm_send_doorbell_st	send_doorbell;/* Send Parameters */
/* -------------- */
};

/* Multicast Group Member QP */

struct arbelprm_mgmqp_st {	/* Little Endian */
    pseudo_bit_t	qpn_i[0x00018];        /* QPN_i: QP number which is a member in this multicast group. Valid only if Qi bit is set. Length of the QPN_i list is set in INIT_HCA */
    pseudo_bit_t	reserved0[0x00007];
    pseudo_bit_t	qi[0x00001];           /* Qi: QPN_i is valid */
/* -------------- */
};

/* vsd */

struct arbelprm_vsd_st {	/* Little Endian */
    pseudo_bit_t	vsd_dw0[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw1[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw2[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw3[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw4[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw5[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw6[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw7[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw8[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw9[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw10[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw11[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw12[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw13[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw14[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw15[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw16[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw17[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw18[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw19[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw20[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw21[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw22[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw23[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw24[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw25[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw26[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw27[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw28[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw29[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw30[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw31[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw32[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw33[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw34[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw35[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw36[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw37[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw38[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw39[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw40[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw41[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw42[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw43[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw44[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw45[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw46[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw47[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw48[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw49[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw50[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw51[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw52[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw53[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw54[0x00020];
/* -------------- */
    pseudo_bit_t	vsd_dw55[0x00020];
/* -------------- */
};

/* ACCESS_LAM_inject_errors */

struct arbelprm_access_lam_inject_errors_st {	/* Little Endian */
    struct arbelprm_access_lam_inject_errors_input_parameter_st	access_lam_inject_errors_input_parameter;
/* -------------- */
    struct arbelprm_access_lam_inject_errors_input_modifier_st	access_lam_inject_errors_input_modifier;
/* -------------- */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
};

/* Logical DIMM Information */

struct arbelprm_dimminfo_st {	/* Little Endian */
    pseudo_bit_t	dimmsize[0x00010];     /* Size of DIMM in units of 2^20 Bytes. This value is valid only when DIMMStatus is 0. */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	dimmstatus[0x00001];   /* DIMM Status
                                                 0 - Enabled
                                                 1 - Disabled
                                                  */
    pseudo_bit_t	dh[0x00001];           /* When set, the DIMM is Hidden and can not be accessed from the PCI bus. */
    pseudo_bit_t	wo[0x00001];           /* When set, the DIMM is write only.
                                                 If data integrity is configured (other than none), the DIMM must be
                                                 only targeted by write transactions where the address and size are multiples of 16 bytes. */
    pseudo_bit_t	reserved1[0x00005];
/* -------------- */
    pseudo_bit_t	spd[0x00001];          /* 0 - DIMM SPD was read from DIMM
                                                 1 - DIMM SPD was read from InfiniHost-III-EX NVMEM */
    pseudo_bit_t	sladr[0x00003];        /* SPD Slave Address 3 LSBits. 
                                                 Valid only if spd bit is 0. */
    pseudo_bit_t	sock_num[0x00002];     /* DIMM socket number (for double sided DIMM one of the two numbers will be reported) */
    pseudo_bit_t	syn[0x00004];          /* Error syndrome (valid regardless of status value)
                                                 0 - DIMM has no error
                                                 1 - SPD error (e.g. checksum error, no response, error while reading)
                                                 2 - DIMM out of bounds (e.g. DIMM rows number is not between 7 and 14, DIMM type is not 2)
                                                 3 - DIMM conflict (e.g. mix of registered and unbuffered DIMMs, CAS latency conflict)
                                                 5 - DIMM size trimmed due to configuration (size exceeds)
                                                 other - Error, reserved
                                                  */
    pseudo_bit_t	reserved2[0x00016];
/* -------------- */
    pseudo_bit_t	reserved3[0x00040];
/* -------------- */
    pseudo_bit_t	dimm_start_adr_h[0x00020];/* DIMM memory start address [63:32]. This value is valid only when DIMMStatus is 0. */
/* -------------- */
    pseudo_bit_t	dimm_start_adr_l[0x00020];/* DIMM memory start address [31:0]. This value is valid only when DIMMStatus is 0. */
/* -------------- */
    pseudo_bit_t	reserved4[0x00040];
/* -------------- */
};

/* UAR Parameters */

struct arbelprm_uar_params_st {	/* Little Endian */
    pseudo_bit_t	uar_base_addr_h[0x00020];/* UAR Base (pyhsical) Address [63:32] (QUERY_HCA only) */
/* -------------- */
    pseudo_bit_t	reserved0[0x00014];
    pseudo_bit_t	uar_base_addr_l[0x0000c];/* UAR Base (pyhsical) Address [31:20] (QUERY_HCA only) */
/* -------------- */
    pseudo_bit_t	uar_page_sz[0x00008];  /* This field defines the size of each UAR page.
                                                 Size of UAR Page is 4KB*2^UAR_Page_Size */
    pseudo_bit_t	log_max_uars[0x00004]; /* Number of UARs supported is 2^log_max_UARs */
    pseudo_bit_t	reserved1[0x00004];
    pseudo_bit_t	log_uar_entry_sz[0x00006];/* Size of UAR Context entry is 2^log_uar_sz in 4KByte pages */
    pseudo_bit_t	reserved2[0x0000a];
/* -------------- */
    pseudo_bit_t	reserved3[0x00020];
/* -------------- */
    pseudo_bit_t	uar_scratch_base_addr_h[0x00020];/* Base address of UAR scratchpad [63:32].
                                                 Number of entries in table is 2^log_max_uars.
                                                 Table must be aligned to its size */
/* -------------- */
    pseudo_bit_t	uar_scratch_base_addr_l[0x00020];/* Base address of UAR scratchpad [31:0].
                                                 Number of entries in table is 2^log_max_uars. 
                                                 Table must be aligned to its size. */
/* -------------- */
    pseudo_bit_t	uar_context_base_addr_h[0x00020];/* Base address of UAR Context [63:32].
                                                 Number of entries in table is 2^log_max_uars.
                                                 Table must be aligned to its size. */
/* -------------- */
    pseudo_bit_t	uar_context_base_addr_l[0x00020];/* Base address of UAR Context [31:0].
                                                 Number of entries in table is 2^log_max_uars. 
                                                 Table must be aligned to its size. */
/* -------------- */
};

/* Translation and Protection Tables Parameters */

struct arbelprm_tptparams_st {	/* Little Endian */
    pseudo_bit_t	mpt_base_adr_h[0x00020];/* MPT - Memory Protection Table base physical address [63:32].
                                                 Entry size is 64 bytes.
                                                 Table must be aligned to its size.
                                                 Address may be set to 0xFFFFFFFF if address translation and protection is not supported. */
/* -------------- */
    pseudo_bit_t	mpt_base_adr_l[0x00020];/* MPT - Memory Protection Table base physical address [31:0].
                                                 Entry size is 64 bytes.
                                                 Table must be aligned to its size.
                                                 Address may be set to 0xFFFFFFFF if address translation and protection is not supported. */
/* -------------- */
    pseudo_bit_t	log_mpt_sz[0x00006];   /* Log (base 2) of the number of region/windows entries in the MPT table. */
    pseudo_bit_t	reserved0[0x00002];
    pseudo_bit_t	pfto[0x00005];         /* Page Fault RNR Timeout - 
                                                 The field returned in RNR Naks generated when a page fault is detected.
                                                 It has no effect when on-demand-paging is not used. */
    pseudo_bit_t	reserved1[0x00013];
/* -------------- */
    pseudo_bit_t	reserved2[0x00020];
/* -------------- */
    pseudo_bit_t	mtt_base_addr_h[0x00020];/* MTT - Memory Translation table base physical address [63:32].
                                                 Table must be aligned to its size.
                                                 Address may be set to 0xFFFFFFFF if address translation and protection is not supported. */
/* -------------- */
    pseudo_bit_t	mtt_base_addr_l[0x00020];/* MTT - Memory Translation table base physical address [31:0].
                                                 Table must be aligned to its size.
                                                 Address may be set to 0xFFFFFFFF if address translation and protection is not supported. */
/* -------------- */
    pseudo_bit_t	reserved3[0x00040];
/* -------------- */
};

/* Multicast Support Parameters */

struct arbelprm_multicastparam_st {	/* Little Endian */
    pseudo_bit_t	mc_base_addr_h[0x00020];/* Base Address of the Multicast Table [63:32].
                                                 The base address must be aligned to the entry size.
                                                 Address may be set to 0xFFFFFFFF if multicast is not supported. */
/* -------------- */
    pseudo_bit_t	mc_base_addr_l[0x00020];/* Base Address of the Multicast Table [31:0]. 
                                                 The base address must be aligned to the entry size.
                                                 Address may be set to 0xFFFFFFFF if multicast is not supported. */
/* -------------- */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
    pseudo_bit_t	log_mc_table_entry_sz[0x00010];/* Log2 of the Size of multicast group member (MGM) entry.
                                                 Must be greater than 5 (to allow CTRL and GID sections). 
                                                 That implies the number of QPs per MC table entry. */
    pseudo_bit_t	reserved1[0x00010];
/* -------------- */
    pseudo_bit_t	mc_table_hash_sz[0x00011];/* Number of entries in multicast DGID hash table (must be power of 2)
                                                 INIT_HCA - the required number of entries
                                                 QUERY_HCA - the actual number of entries assigned by firmware (will be less than or equal to the amount required in INIT_HCA) */
    pseudo_bit_t	reserved2[0x0000f];
/* -------------- */
    pseudo_bit_t	log_mc_table_sz[0x00005];/* Log2 of the overall number of MC entries in the MCG table (includes both hash and auxiliary tables) */
    pseudo_bit_t	reserved3[0x00013];
    pseudo_bit_t	mc_hash_fn[0x00003];   /* Multicast hash function
                                                 0 - Default hash function
                                                 other - reserved */
    pseudo_bit_t	reserved4[0x00005];
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
};

/* QPC/EEC/CQC/EQC/RDB Parameters */

struct arbelprm_qpcbaseaddr_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
    pseudo_bit_t	qpc_base_addr_h[0x00020];/* QPC Base Address [63:32]
                                                 Table must be aligned on its size */
/* -------------- */
    pseudo_bit_t	log_num_of_qp[0x00005];/* Log base 2 of number of supported QPs */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	qpc_base_addr_l[0x00019];/* QPC Base Address [31:7]
                                                 Table must be aligned on its size */
/* -------------- */
    pseudo_bit_t	reserved2[0x00040];
/* -------------- */
    pseudo_bit_t	eec_base_addr_h[0x00020];/* EEC Base Address [63:32]
                                                 Table must be aligned on its size.
                                                 Address may be set to 0xFFFFFFFF if RD is not supported. */
/* -------------- */
    pseudo_bit_t	log_num_of_ee[0x00005];/* Log base 2 of number of supported EEs. */
    pseudo_bit_t	reserved3[0x00002];
    pseudo_bit_t	eec_base_addr_l[0x00019];/* EEC Base Address [31:7]
                                                 Table must be aligned on its size
                                                 Address may be set to 0xFFFFFFFF if RD is not supported. */
/* -------------- */
    pseudo_bit_t	srqc_base_addr_h[0x00020];/* SRQ Context Base Address [63:32]
                                                 Table must be aligned on its size
                                                 Address may be set to 0xFFFFFFFF if SRQ is not supported. */
/* -------------- */
    pseudo_bit_t	log_num_of_srq[0x00005];/* Log base 2 of number of supported SRQs. */
    pseudo_bit_t	srqc_base_addr_l[0x0001b];/* SRQ Context Base Address [31:5]
                                                 Table must be aligned on its size
                                                 Address may be set to 0xFFFFFFFF if SRQ is not supported. */
/* -------------- */
    pseudo_bit_t	cqc_base_addr_h[0x00020];/* CQC Base Address [63:32]
                                                 Table must be aligned on its size */
/* -------------- */
    pseudo_bit_t	log_num_of_cq[0x00005];/* Log base 2 of number of supported CQs. */
    pseudo_bit_t	reserved4[0x00001];
    pseudo_bit_t	cqc_base_addr_l[0x0001a];/* CQC Base Address [31:6]
                                                 Table must be aligned on its size */
/* -------------- */
    pseudo_bit_t	reserved5[0x00040];
/* -------------- */
    pseudo_bit_t	eqpc_base_addr_h[0x00020];/* Extended QPC Base Address [63:32]
                                                 Table has same number of entries as QPC table.
                                                 Table must be aligned to entry size. */
/* -------------- */
    pseudo_bit_t	eqpc_base_addr_l[0x00020];/* Extended QPC Base Address [31:0]
                                                 Table has same number of entries as QPC table.
                                                 Table must be aligned to entry size. */
/* -------------- */
    pseudo_bit_t	reserved6[0x00040];
/* -------------- */
    pseudo_bit_t	eeec_base_addr_h[0x00020];/* Extended EEC Base Address [63:32]
                                                 Table has same number of entries as EEC table.
                                                 Table must be aligned to entry size.
                                                 Address may be set to 0xFFFFFFFF if RD is not supported. */
/* -------------- */
    pseudo_bit_t	eeec_base_addr_l[0x00020];/* Extended EEC Base Address [31:0]
                                                 Table has same number of entries as EEC table.
                                                 Table must be aligned to entry size.
                                                 Address may be set to 0xFFFFFFFF if RD is not supported. */
/* -------------- */
    pseudo_bit_t	reserved7[0x00040];
/* -------------- */
    pseudo_bit_t	eqc_base_addr_h[0x00020];/* EQC Base Address [63:32]
                                                 Address may be set to 0xFFFFFFFF if EQs are not supported.
                                                 Table must be aligned to entry size. */
/* -------------- */
    pseudo_bit_t	log_num_eq[0x00004];   /* Log base 2 of number of supported EQs.
                                                 Must be 6 or less in InfiniHost-III-EX. */
    pseudo_bit_t	reserved8[0x00002];
    pseudo_bit_t	eqc_base_addr_l[0x0001a];/* EQC Base Address [31:6]
                                                 Address may be set to 0xFFFFFFFF if EQs are not supported.
                                                 Table must be aligned to entry size. */
/* -------------- */
    pseudo_bit_t	reserved9[0x00040];
/* -------------- */
    pseudo_bit_t	rdb_base_addr_h[0x00020];/* Base address of table that holds remote read and remote atomic requests [63:32]. 
                                                 Address may be set to 0xFFFFFFFF if remote RDMA reads are not supported.
                                                 Please refer to QP and EE chapter for further explanation on RDB allocation. */
/* -------------- */
    pseudo_bit_t	rdb_base_addr_l[0x00020];/* Base address of table that holds remote read and remote atomic requests [31:0]. 
                                                 Table must be aligned to RDB entry size (32 bytes).
                                                 Address may be set to zero if remote RDMA reads are not supported.
                                                 Please refer to QP and EE chapter for further explanation on RDB allocation. */
/* -------------- */
    pseudo_bit_t	reserved10[0x00040];
/* -------------- */
};

/* Header_Log_Register */

struct arbelprm_header_log_register_st {	/* Little Endian */
    pseudo_bit_t	place_holder[0x00020];
/* -------------- */
    pseudo_bit_t	reserved0[0x00060];
/* -------------- */
};

/* Performance Monitors */

struct arbelprm_performance_monitors_st {	/* Little Endian */
    pseudo_bit_t	e0[0x00001];           /* Enables counting of respective performance counter */
    pseudo_bit_t	e1[0x00001];           /* Enables counting of respective performance counter */
    pseudo_bit_t	e2[0x00001];           /* Enables counting of respective performance counter */
    pseudo_bit_t	reserved0[0x00001];
    pseudo_bit_t	r0[0x00001];           /* If written to as '1 - resets respective performance counter, if written to az '0 - no change to matter */
    pseudo_bit_t	r1[0x00001];           /* If written to as '1 - resets respective performance counter, if written to az '0 - no change to matter */
    pseudo_bit_t	r2[0x00001];           /* If written to as '1 - resets respective performance counter, if written to az '0 - no change to matter */
    pseudo_bit_t	reserved1[0x00001];
    pseudo_bit_t	i0[0x00001];           /* Interrupt enable on respective counter overflow. '1 - interrupt enabled, '0 - interrupt disabled. */
    pseudo_bit_t	i1[0x00001];           /* Interrupt enable on respective counter overflow. '1 - interrupt enabled, '0 - interrupt disabled. */
    pseudo_bit_t	i2[0x00001];           /* Interrupt enable on respective counter overflow. '1 - interrupt enabled, '0 - interrupt disabled. */
    pseudo_bit_t	reserved2[0x00001];
    pseudo_bit_t	f0[0x00001];           /* Overflow flag. If set, overflow occurred on respective counter. Cleared if written to as '1 */
    pseudo_bit_t	f1[0x00001];           /* Overflow flag. If set, overflow occurred on respective counter. Cleared if written to as '1 */
    pseudo_bit_t	f2[0x00001];           /* Overflow flag. If set, overflow occurred on respective counter. Cleared if written to as '1 */
    pseudo_bit_t	reserved3[0x00001];
    pseudo_bit_t	ev_cnt1[0x00005];      /* Specifies event to be counted by Event_counter1 See XXX for events' definition. */
    pseudo_bit_t	reserved4[0x00003];
    pseudo_bit_t	ev_cnt2[0x00005];      /* Specifies event to be counted by Event_counter2 See XXX for events' definition. */
    pseudo_bit_t	reserved5[0x00003];
/* -------------- */
    pseudo_bit_t	clock_counter[0x00020];
/* -------------- */
    pseudo_bit_t	event_counter1[0x00020];
/* -------------- */
    pseudo_bit_t	event_counter2[0x00020];/* Read/write event counter, counting events specified by EvCntl and EvCnt2 fields repsectively. When the event counter reaches is maximum value of 0xFFFFFF, the next event will cause it to roll over to zero, set F1 or F2 bit respectively and generate interrupt by I1 I2 bit respectively. */
/* -------------- */
};

/* Receive segment format */

struct arbelprm_wqe_segment_ctrl_recv_st {	/* Little Endian */
    struct arbelprm_recv_wqe_segment_next_st	wqe_segment_next;
/* -------------- */
    pseudo_bit_t	reserved0[0x00002];
    pseudo_bit_t	reserved1[0x00001];
    pseudo_bit_t	reserved2[0x00001];
    pseudo_bit_t	reserved3[0x0001c];
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
};

/* MLX WQE segment format */

struct arbelprm_wqe_segment_ctrl_mlx_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00002];
    pseudo_bit_t	e[0x00001];            /* WQE event */
    pseudo_bit_t	c[0x00001];            /* Create CQE (for "requested signalling" QP) */
    pseudo_bit_t	icrc[0x00002];         /* icrc field detemines what to do with the last dword of the packet: 0 - Calculate ICRC and put it instead of last dword. Last dword must be 0x0. 1,2 - reserved.  3 - Leave last dword as is. Last dword must not be 0x0. */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	sl[0x00004];
    pseudo_bit_t	max_statrate[0x00004];
    pseudo_bit_t	slr[0x00001];          /* 0= take slid from port. 1= take slid from given headers */
    pseudo_bit_t	v15[0x00001];          /* Send packet over VL15 */
    pseudo_bit_t	reserved2[0x0000e];
/* -------------- */
    pseudo_bit_t	vcrc[0x00010];         /* Packet's VCRC (if not 0 - otherwise computed by HW) */
    pseudo_bit_t	rlid[0x00010];         /* Destination LID (must match given headers) */
/* -------------- */
};

/* Send WQE segment format */

struct arbelprm_send_wqe_segment_st {	/* Little Endian */
    struct arbelprm_wqe_segment_next_st	wqe_segment_next;/* Send wqe segment next */
/* -------------- */
    struct arbelprm_wqe_segment_ctrl_send_st	wqe_segment_ctrl_send;/* Send wqe segment ctrl */
/* -------------- */
    struct arbelprm_wqe_segment_rd_st	wqe_segment_rd;/* Send wqe segment rd */
/* -------------- */
    struct arbelprm_wqe_segment_ud_st	wqe_segment_ud;/* Send wqe segment ud */
/* -------------- */
    struct arbelprm_wqe_segment_bind_st	wqe_segment_bind;/* Send wqe segment bind */
/* -------------- */
    pseudo_bit_t	reserved0[0x00180];
/* -------------- */
    struct arbelprm_wqe_segment_remote_address_st	wqe_segment_remote_address;/* Send wqe segment remote address */
/* -------------- */
    struct arbelprm_wqe_segment_atomic_st	wqe_segment_atomic;/* Send wqe segment atomic */
/* -------------- */
    struct arbelprm_fast_registration_segment_st	fast_registration_segment;/* Fast Registration Segment */
/* -------------- */
    struct arbelprm_local_invalidate_segment_st	local_invalidate_segment;/* local invalidate segment */
/* -------------- */
    struct arbelprm_wqe_segment_data_ptr_st	wqe_segment_data_ptr;/* Send wqe segment data ptr */
/* -------------- */
    struct arbelprm_wqe_segment_data_inline_st	wqe_segment_data_inline;/* Send wqe segment data inline */
/* -------------- */
    pseudo_bit_t	reserved1[0x00200];
/* -------------- */
};

/* QP and EE Context Entry */

struct arbelprm_queue_pair_ee_context_entry_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	de[0x00001];           /* Send/Receive Descriptor Event enable - if set, events can be generated upon descriptors' completion on send/receive queue (controlled by E bit in WQE). Invalid in EE context */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	pm_state[0x00002];     /* Path migration state (Migrated, Armed or Rearm)
                                                 11-Migrated
                                                 00-Armed
                                                 01-Rearm
                                                 10-Reserved
                                                 Should be set to 11 for UD QPs and for QPs which do not support APM */
    pseudo_bit_t	reserved2[0x00003];
    pseudo_bit_t	st[0x00003];           /* Service type (invalid in EE context):
                                                 000-Reliable Connection
                                                 001-Unreliable Connection
                                                 010-Reliable Datagram 
                                                 011-Unreliable Datagram
                                                 111-MLX transport (raw bits injection). Used for management QPs and RAW */
    pseudo_bit_t	reserved3[0x00009];
    pseudo_bit_t	state[0x00004];        /* QP/EE state:
                                                 0 - RST
                                                 1 - INIT
                                                 2 - RTR
                                                 3 - RTS
                                                 4 - SQEr
                                                 5 - SQD (Send Queue Drained)
                                                 6 - ERR
                                                 7 - Send Queue Draining
                                                 8 - Reserved
                                                 9 - Suspended
                                                 A- F - Reserved
                                                 (Valid for QUERY_QPEE and ERR2RST_QPEE commands only) */
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
    pseudo_bit_t	sched_queue[0x00004];  /* Schedule queue to be used for WQE scheduling to execution. Determines QOS for this QP. */
    pseudo_bit_t	rlky[0x00001];         /* When set this QP can use the Reserved L_Key */
    pseudo_bit_t	reserved5[0x00003];
    pseudo_bit_t	log_sq_stride[0x00003];/* Stride on the send queue. WQ entry is 16*(2^log_SQ_stride) bytes.
                                                 Stride must be equal or bigger then 64 bytes (minimum log_RQ_stride value allowed is 2). */
    pseudo_bit_t	log_sq_size[0x00004];  /* Log2 of the Number of WQEs in the Send Queue. */
    pseudo_bit_t	reserved6[0x00001];
    pseudo_bit_t	log_rq_stride[0x00003];/* Stride on the receive queue. WQ entry is 16*(2^log_RQ_stride) bytes.
                                                 Stride must be equal or bigger then 64 bytes (minimum log_RQ_stride value allowed is 2). */
    pseudo_bit_t	log_rq_size[0x00004];  /* Log2 of the Number of WQEs in the Receive Queue. */
    pseudo_bit_t	reserved7[0x00001];
    pseudo_bit_t	msg_max[0x00005];      /* Max message size allowed on the QP. Maximum message size is 2^msg_Max.
                                                 Must be equal to MTU for UD and MLX QPs. */
    pseudo_bit_t	mtu[0x00003];          /* MTU of the QP (Must be the same for both paths: primary and alternative):
                                                 0x1 - 256 bytes
                                                 0x2 - 512
                                                 0x3 - 1024
                                                 0x4 - 2048
                                                 other - reserved
                                                 
                                                 Should be configured to 0x4 for UD and MLX QPs. */
/* -------------- */
    pseudo_bit_t	usr_page[0x00018];     /* QP (see "non_privileged Access to the HCA Hardware"). Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved8[0x00008];
/* -------------- */
    pseudo_bit_t	local_qpn_een[0x00018];/* Local QP/EE number Lower bits determine position of this record in QPC table, and - thus - constrained
                                                 This field is valid for QUERY and ERR2RST commands only. */
    pseudo_bit_t	reserved9[0x00008];
/* -------------- */
    pseudo_bit_t	remote_qpn_een[0x00018];/* Remote QP/EE number */
    pseudo_bit_t	reserved10[0x00008];
/* -------------- */
    pseudo_bit_t	reserved11[0x00040];
/* -------------- */
    struct arbelprm_address_path_st	primary_address_path;/* Primary address path for the QP/EE */
/* -------------- */
    struct arbelprm_address_path_st	alternative_address_path;/* Alternate address path for the QP/EE */
/* -------------- */
    pseudo_bit_t	rdd[0x00018];          /* Reliable Datagram Domain */
    pseudo_bit_t	reserved12[0x00008];
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* QP protection domain. Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved13[0x00008];
/* -------------- */
    pseudo_bit_t	wqe_base_adr_h[0x00020];/* Bits 63:32 of WQE address for both SQ and RQ. 
                                                 Reserved for EE context. */
/* -------------- */
    pseudo_bit_t	wqe_lkey[0x00020];     /* memory key (L-Key) to be used to access WQEs. Not valid (reserved) in EE context. */
/* -------------- */
    pseudo_bit_t	reserved14[0x00003];
    pseudo_bit_t	ssc[0x00001];          /* Send Signaled Completion
                                                 1 - all send WQEs generate CQEs. 
                                                 0 - only send WQEs with C bit set generate completion. 
                                                 Not valid (reserved) in EE context. */
    pseudo_bit_t	sic[0x00001];          /* If set - Ignore end to end credits on send queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	cur_retry_cnt[0x00003];/* Current transport retry counter (QUERY_QPEE only).
                                                 The current transport retry counter can vary from retry_count down to 1, where 1 means that the last retry attempt is currently executing. */
    pseudo_bit_t	cur_rnr_retry[0x00003];/* Current RNR retry counter (QUERY_QPEE only).
                                                 The current RNR retry counter can vary from rnr_retry to 1, where 1 means that the last retry attempt is currently executing. */
    pseudo_bit_t	fre[0x00001];          /* Fast Registration Work Request Enabled. (Reserved for EE) */
    pseudo_bit_t	reserved15[0x00001];
    pseudo_bit_t	sae[0x00001];          /* If set - Atomic operations enabled on send queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	swe[0x00001];          /* If set - RDMA - write enabled on send queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	sre[0x00001];          /* If set - RDMA - read enabled on send queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	retry_count[0x00003];  /* Transport timeout Retry count */
    pseudo_bit_t	reserved16[0x00002];
    pseudo_bit_t	sra_max[0x00003];      /* Maximum number of outstanding RDMA-read/Atomic operations allowed in the send queue. Maximum number is 2^SRA_Max. Must be zero in EE context. */
    pseudo_bit_t	flight_lim[0x00004];   /* Number of outstanding (in-flight) messages on the wire allowed for this send queue. 
                                                 Number of outstanding messages is 2^Flight_Lim. 
                                                 Use 0xF for unlimited number of outstanding messages. */
    pseudo_bit_t	ack_req_freq[0x00004]; /* ACK required frequency. ACK required bit will be set in every 2^AckReqFreq packets at least. Not valid for RD QP. */
/* -------------- */
    pseudo_bit_t	reserved17[0x00020];
/* -------------- */
    pseudo_bit_t	next_send_psn[0x00018];/* Next PSN to be sent */
    pseudo_bit_t	reserved18[0x00008];
/* -------------- */
    pseudo_bit_t	cqn_snd[0x00018];      /* CQ number completions from the send queue to be reported to. Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved19[0x00008];
/* -------------- */
    pseudo_bit_t	reserved20[0x00006];
    pseudo_bit_t	snd_wqe_base_adr_l[0x0001a];/* While opening (creating) the WQ, this field should contain the address of first descriptor to be posted. Not valid (reserved) in EE context. */
/* -------------- */
    pseudo_bit_t	snd_db_record_index[0x00020];/* Index in the UAR Context Table Entry.
                                                 HW uses this index as an offset from the UAR Context Table Entry in order to read this SQ doorbell record.
                                                 The entry is obtained via the usr_page field.
                                                 Not valid for EE. */
/* -------------- */
    pseudo_bit_t	last_acked_psn[0x00018];/* The last acknowledged PSN for the requester (QUERY_QPEE only) */
    pseudo_bit_t	reserved21[0x00008];
/* -------------- */
    pseudo_bit_t	ssn[0x00018];          /* Requester Send Sequence Number (QUERY_QPEE only) */
    pseudo_bit_t	reserved22[0x00008];
/* -------------- */
    pseudo_bit_t	reserved23[0x00003];
    pseudo_bit_t	rsc[0x00001];          /* 1 - all receive WQEs generate CQEs. 
                                                 0 - only receive WQEs with C bit set generate completion. 
                                                 Not valid (reserved) in EE context.
                                                  */
    pseudo_bit_t	ric[0x00001];          /* Invalid Credits. 
                                                 1 - place "Invalid Credits" to ACKs sent from this queue.
                                                 0 - ACKs report the actual number of end to end credits on the connection.
                                                 Not valid (reserved) in EE context.
                                                 Must be set to 1 on QPs which are attached to SRQ. */
    pseudo_bit_t	reserved24[0x00008];
    pseudo_bit_t	rae[0x00001];          /* If set - Atomic operations enabled. on receive queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	rwe[0x00001];          /* If set - RDMA - write enabled on receive queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	rre[0x00001];          /* If set - RDMA - read enabled on receive queue. Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved25[0x00005];
    pseudo_bit_t	rra_max[0x00003];      /* Maximum number of outstanding RDMA-read/Atomic operations allowed on receive queue is 2^RRA_Max. 
                                                 Must be 0 for EE context. */
    pseudo_bit_t	reserved26[0x00008];
/* -------------- */
    pseudo_bit_t	next_rcv_psn[0x00018]; /* Next (expected) PSN on receive */
    pseudo_bit_t	min_rnr_nak[0x00005];  /* Minimum RNR NAK timer value (TTTTT field encoding according to the IB spec Vol1 9.7.5.2.8). 
                                                 Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved27[0x00003];
/* -------------- */
    pseudo_bit_t	reserved28[0x00005];
    pseudo_bit_t	ra_buff_indx[0x0001b]; /* Index to outstanding read/atomic buffer. 
                                                 This field constructs the address to the RDB for maintaining the incoming RDMA read and atomic requests. */
/* -------------- */
    pseudo_bit_t	cqn_rcv[0x00018];      /* CQ number completions from receive queue to be reported to. Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved29[0x00008];
/* -------------- */
    pseudo_bit_t	reserved30[0x00006];
    pseudo_bit_t	rcv_wqe_base_adr_l[0x0001a];/* While opening (creating) the WQ, this field should contain the address of first descriptor to be posted. Not valid (reserved) in EE context. */
/* -------------- */
    pseudo_bit_t	rcv_db_record_index[0x00020];/* Index in the UAR Context Table Entry containing the doorbell record for the receive queue. 
                                                 HW uses this index as an offset from the UAR Context Table Entry in order to read this RQ doorbell record.
                                                 The entry is obtained via the usr_page field.
                                                 Not valid for EE. */
/* -------------- */
    pseudo_bit_t	q_key[0x00020];        /* Q_Key to be validated against received datagrams.
                                                 On send datagrams, if Q_Key[31] specified in the WQE is set, then this Q_Key will be transmitted in the outgoing message.
                                                 Not valid (reserved) in EE context. */
/* -------------- */
    pseudo_bit_t	srqn[0x00018];         /* SRQN - Shared Receive Queue Number - specifies the SRQ number from which the QP dequeues receive descriptors. 
                                                 SRQN is valid only if SRQ bit is set. Not valid (reserved) in EE context. */
    pseudo_bit_t	srq[0x00001];          /* SRQ - Shared Receive Queue. If this bit is set, then the QP is associated with a SRQ. Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved31[0x00007];
/* -------------- */
    pseudo_bit_t	rmsn[0x00018];         /* Responder current message sequence number (QUERY_QPEE only) */
    pseudo_bit_t	reserved32[0x00008];
/* -------------- */
    pseudo_bit_t	sq_wqe_counter[0x00010];/* A 16bits counter that is incremented for each WQE posted to the SQ.
                                                 Must be 0x0 in SQ initialization.
                                                 (QUERY_QPEE only). */
    pseudo_bit_t	rq_wqe_counter[0x00010];/* A 16bits counter that is incremented for each WQE posted to the RQ.
                                                 Must be 0x0 in RQ initialization.
                                                 (QUERY_QPEE only). */
/* -------------- */
    pseudo_bit_t	reserved33[0x00040];
/* -------------- */
};

/* Clear Interrupt [63:0] */

struct arbelprm_clr_int_st {	/* Little Endian */
    pseudo_bit_t	clr_int_h[0x00020];    /* Clear Interrupt [63:32]
                                                 Write transactions to this register will clear (de-assert) the virtual interrupt output pins of InfiniHost-III-EX. The value to be written in this register is obtained by executing QUERY_ADAPTER command on command interface after system boot. 
                                                 This register is write-only. Reading from this register will cause undefined result
                                                  */
/* -------------- */
    pseudo_bit_t	clr_int_l[0x00020];    /* Clear Interrupt [31:0]
                                                 Write transactions to this register will clear (de-assert) the virtual interrupt output pins of InfiniHost-III-EX. The value to be written in this register is obtained by executing QUERY_ADAPTER command on command interface after system boot. 
                                                 This register is write-only. Reading from this register will cause undefined result */
/* -------------- */
};

/* EQ_Arm_DB_Region */

struct arbelprm_eq_arm_db_region_st {	/* Little Endian */
    pseudo_bit_t	eq_x_arm_h[0x00020];   /* EQ[63:32]  X state.
                                                 This register is used to Arm EQs when setting the appropriate bits. */
/* -------------- */
    pseudo_bit_t	eq_x_arm_l[0x00020];   /* EQ[31:0]  X state.
                                                 This register is used to Arm EQs when setting the appropriate bits. */
/* -------------- */
};

/* EQ Set CI DBs Table */

struct arbelprm_eq_set_ci_table_st {	/* Little Endian */
    pseudo_bit_t	eq0_set_ci[0x00020];   /* EQ0_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
    pseudo_bit_t	eq1_set_ci[0x00020];   /* EQ1_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
    pseudo_bit_t	eq2_set_ci[0x00020];   /* EQ2_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved2[0x00020];
/* -------------- */
    pseudo_bit_t	eq3_set_ci[0x00020];   /* EQ3_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved3[0x00020];
/* -------------- */
    pseudo_bit_t	eq4_set_ci[0x00020];   /* EQ4_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
    pseudo_bit_t	eq5_set_ci[0x00020];   /* EQ5_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
    pseudo_bit_t	eq6_set_ci[0x00020];   /* EQ6_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved6[0x00020];
/* -------------- */
    pseudo_bit_t	eq7_set_ci[0x00020];   /* EQ7_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved7[0x00020];
/* -------------- */
    pseudo_bit_t	eq8_set_ci[0x00020];   /* EQ8_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved8[0x00020];
/* -------------- */
    pseudo_bit_t	eq9_set_ci[0x00020];   /* EQ9_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved9[0x00020];
/* -------------- */
    pseudo_bit_t	eq10_set_ci[0x00020];  /* EQ10_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved10[0x00020];
/* -------------- */
    pseudo_bit_t	eq11_set_ci[0x00020];  /* EQ11_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved11[0x00020];
/* -------------- */
    pseudo_bit_t	eq12_set_ci[0x00020];  /* EQ12_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved12[0x00020];
/* -------------- */
    pseudo_bit_t	eq13_set_ci[0x00020];  /* EQ13_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved13[0x00020];
/* -------------- */
    pseudo_bit_t	eq14_set_ci[0x00020];  /* EQ14_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved14[0x00020];
/* -------------- */
    pseudo_bit_t	eq15_set_ci[0x00020];  /* EQ15_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved15[0x00020];
/* -------------- */
    pseudo_bit_t	eq16_set_ci[0x00020];  /* EQ16_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved16[0x00020];
/* -------------- */
    pseudo_bit_t	eq17_set_ci[0x00020];  /* EQ17_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved17[0x00020];
/* -------------- */
    pseudo_bit_t	eq18_set_ci[0x00020];  /* EQ18_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved18[0x00020];
/* -------------- */
    pseudo_bit_t	eq19_set_ci[0x00020];  /* EQ19_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved19[0x00020];
/* -------------- */
    pseudo_bit_t	eq20_set_ci[0x00020];  /* EQ20_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved20[0x00020];
/* -------------- */
    pseudo_bit_t	eq21_set_ci[0x00020];  /* EQ21_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved21[0x00020];
/* -------------- */
    pseudo_bit_t	eq22_set_ci[0x00020];  /* EQ22_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved22[0x00020];
/* -------------- */
    pseudo_bit_t	eq23_set_ci[0x00020];  /* EQ23_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved23[0x00020];
/* -------------- */
    pseudo_bit_t	eq24_set_ci[0x00020];  /* EQ24_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved24[0x00020];
/* -------------- */
    pseudo_bit_t	eq25_set_ci[0x00020];  /* EQ25_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved25[0x00020];
/* -------------- */
    pseudo_bit_t	eq26_set_ci[0x00020];  /* EQ26_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved26[0x00020];
/* -------------- */
    pseudo_bit_t	eq27_set_ci[0x00020];  /* EQ27_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved27[0x00020];
/* -------------- */
    pseudo_bit_t	eq28_set_ci[0x00020];  /* EQ28_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved28[0x00020];
/* -------------- */
    pseudo_bit_t	eq29_set_ci[0x00020];  /* EQ29_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved29[0x00020];
/* -------------- */
    pseudo_bit_t	eq30_set_ci[0x00020];  /* EQ30_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved30[0x00020];
/* -------------- */
    pseudo_bit_t	eq31_set_ci[0x00020];  /* EQ31_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved31[0x00020];
/* -------------- */
    pseudo_bit_t	eq32_set_ci[0x00020];  /* EQ32_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved32[0x00020];
/* -------------- */
    pseudo_bit_t	eq33_set_ci[0x00020];  /* EQ33_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved33[0x00020];
/* -------------- */
    pseudo_bit_t	eq34_set_ci[0x00020];  /* EQ34_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved34[0x00020];
/* -------------- */
    pseudo_bit_t	eq35_set_ci[0x00020];  /* EQ35_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved35[0x00020];
/* -------------- */
    pseudo_bit_t	eq36_set_ci[0x00020];  /* EQ36_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved36[0x00020];
/* -------------- */
    pseudo_bit_t	eq37_set_ci[0x00020];  /* EQ37_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved37[0x00020];
/* -------------- */
    pseudo_bit_t	eq38_set_ci[0x00020];  /* EQ38_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved38[0x00020];
/* -------------- */
    pseudo_bit_t	eq39_set_ci[0x00020];  /* EQ39_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved39[0x00020];
/* -------------- */
    pseudo_bit_t	eq40_set_ci[0x00020];  /* EQ40_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved40[0x00020];
/* -------------- */
    pseudo_bit_t	eq41_set_ci[0x00020];  /* EQ41_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved41[0x00020];
/* -------------- */
    pseudo_bit_t	eq42_set_ci[0x00020];  /* EQ42_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved42[0x00020];
/* -------------- */
    pseudo_bit_t	eq43_set_ci[0x00020];  /* EQ43_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved43[0x00020];
/* -------------- */
    pseudo_bit_t	eq44_set_ci[0x00020];  /* EQ44_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved44[0x00020];
/* -------------- */
    pseudo_bit_t	eq45_set_ci[0x00020];  /* EQ45_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved45[0x00020];
/* -------------- */
    pseudo_bit_t	eq46_set_ci[0x00020];  /* EQ46_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved46[0x00020];
/* -------------- */
    pseudo_bit_t	eq47_set_ci[0x00020];  /* EQ47_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved47[0x00020];
/* -------------- */
    pseudo_bit_t	eq48_set_ci[0x00020];  /* EQ48_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved48[0x00020];
/* -------------- */
    pseudo_bit_t	eq49_set_ci[0x00020];  /* EQ49_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved49[0x00020];
/* -------------- */
    pseudo_bit_t	eq50_set_ci[0x00020];  /* EQ50_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved50[0x00020];
/* -------------- */
    pseudo_bit_t	eq51_set_ci[0x00020];  /* EQ51_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved51[0x00020];
/* -------------- */
    pseudo_bit_t	eq52_set_ci[0x00020];  /* EQ52_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved52[0x00020];
/* -------------- */
    pseudo_bit_t	eq53_set_ci[0x00020];  /* EQ53_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved53[0x00020];
/* -------------- */
    pseudo_bit_t	eq54_set_ci[0x00020];  /* EQ54_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved54[0x00020];
/* -------------- */
    pseudo_bit_t	eq55_set_ci[0x00020];  /* EQ55_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved55[0x00020];
/* -------------- */
    pseudo_bit_t	eq56_set_ci[0x00020];  /* EQ56_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved56[0x00020];
/* -------------- */
    pseudo_bit_t	eq57_set_ci[0x00020];  /* EQ57_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved57[0x00020];
/* -------------- */
    pseudo_bit_t	eq58_set_ci[0x00020];  /* EQ58_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved58[0x00020];
/* -------------- */
    pseudo_bit_t	eq59_set_ci[0x00020];  /* EQ59_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved59[0x00020];
/* -------------- */
    pseudo_bit_t	eq60_set_ci[0x00020];  /* EQ60_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved60[0x00020];
/* -------------- */
    pseudo_bit_t	eq61_set_ci[0x00020];  /* EQ61_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved61[0x00020];
/* -------------- */
    pseudo_bit_t	eq62_set_ci[0x00020];  /* EQ62_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved62[0x00020];
/* -------------- */
    pseudo_bit_t	eq63_set_ci[0x00020];  /* EQ63_Set_CI */
/* -------------- */
    pseudo_bit_t	reserved63[0x00020];
/* -------------- */
};

/* InfiniHost-III-EX Configuration Registers */

struct arbelprm_configuration_registers_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x403400];
/* -------------- */
    struct arbelprm_hca_command_register_st	hca_command_interface_register;/* HCA Command Register */
/* -------------- */
    pseudo_bit_t	reserved1[0x3fcb20];
/* -------------- */
};

/* QP_DB_Record */

struct arbelprm_qp_db_record_st {	/* Little Endian */
    pseudo_bit_t	counter[0x00010];      /* Modulo-64K counter of WQEs posted to the QP since its creation. Should be initialized to zero. */
    pseudo_bit_t	reserved0[0x00010];
/* -------------- */
    pseudo_bit_t	reserved1[0x00005];
    pseudo_bit_t	res[0x00003];          /* 0x3 for SQ
                                                 0x4 for RQ 
                                                 0x5 for SRQ */
    pseudo_bit_t	qp_number[0x00018];    /* QP number */
/* -------------- */
};

/* CQ_ARM_DB_Record */

struct arbelprm_cq_arm_db_record_st {	/* Little Endian */
    pseudo_bit_t	counter[0x00020];      /* CQ counter for the arming request */
/* -------------- */
    pseudo_bit_t	cmd[0x00003];          /* 0x0 - No command
                                                 0x1 - Request notification for next Solicited completion event. Counter filed specifies the current CQ Consumer Counter.
                                                 0x2 - Request notification for next Solicited or Unsolicited completion event. Counter filed specifies the current CQ Consumer counter.
                                                 0x3 - Request notification for multiple completions (Arm-N). Counter filed specifies the value of the CQ Index that when reached by HW (i.e. HW generates a CQE into this Index) Event will be generated
                                                 Other - Reserved */
    pseudo_bit_t	cmd_sn[0x00002];       /* Command Sequence Number - See Table 35, "CQ Doorbell Layout" for definition of this filed */
    pseudo_bit_t	res[0x00003];          /* Must be 0x2 */
    pseudo_bit_t	cq_number[0x00018];    /* CQ number */
/* -------------- */
};

/* CQ_CI_DB_Record */

struct arbelprm_cq_ci_db_record_st {	/* Little Endian */
    pseudo_bit_t	counter[0x00020];      /* CQ counter */
/* -------------- */
    pseudo_bit_t	reserved0[0x00005];
    pseudo_bit_t	res[0x00003];          /* Must be 0x1 */
    pseudo_bit_t	cq_number[0x00018];    /* CQ number */
/* -------------- */
};

/* Virtual_Physical_Mapping */

struct arbelprm_virtual_physical_mapping_st {	/* Little Endian */
    pseudo_bit_t	va_h[0x00020];         /* Virtual Address[63:32]. Valid only for MAP_ICM command. */
/* -------------- */
    pseudo_bit_t	reserved0[0x0000c];
    pseudo_bit_t	va_l[0x00014];         /* Virtual Address[31:12]. Valid only for MAP_ICM command. */
/* -------------- */
    pseudo_bit_t	pa_h[0x00020];         /* Physical Address[63:32] */
/* -------------- */
    pseudo_bit_t	log2size[0x00006];     /* Log2 of the size in 4KB pages of the physical and virtual contiguous memory that starts at PA_L/H and VA_L/H */
    pseudo_bit_t	reserved1[0x00006];
    pseudo_bit_t	pa_l[0x00014];         /* Physical Address[31:12] */
/* -------------- */
};

/* MOD_STAT_CFG */

struct arbelprm_mod_stat_cfg_st {	/* Little Endian */
    pseudo_bit_t	log_max_srqs[0x00005]; /* Log (base 2) of the number of SRQs to allocate (0 if no SRQs are required), valid only if srq bit is set. */
    pseudo_bit_t	reserved0[0x00001];
    pseudo_bit_t	srq[0x00001];          /* When set SRQs are supported */
    pseudo_bit_t	srq_m[0x00001];        /* Modify SRQ parameters */
    pseudo_bit_t	reserved1[0x00018];
/* -------------- */
    pseudo_bit_t	reserved2[0x007e0];
/* -------------- */
};

/* SRQ Context */

struct arbelprm_srq_context_st {	/* Little Endian */
    pseudo_bit_t	srqn[0x00018];         /* SRQ number */
    pseudo_bit_t	log_srq_size[0x00004]; /* Log2 of the Number of WQEs in the Receive Queue.
                                                 Maximum value is 0x10, i.e. 16M WQEs. */
    pseudo_bit_t	state[0x00004];        /* SRQ State:
                                                 1111 - SW Ownership
                                                 0000 - HW Ownership
                                                 0001 - Error
                                                 Valid only on QUERY_SRQ and HW2SW_SRQ commands. */
/* -------------- */
    pseudo_bit_t	l_key[0x00020];        /* memory key (L-Key) to be used to access WQEs. */
/* -------------- */
    pseudo_bit_t	srq_db_record_index[0x00020];/* Index in the UAR Context Table Entry containing the doorbell record for the receive queue. 
                                                 HW uses this index as an offset from the UAR Context Table Entry in order to read this SRQ doorbell record.
                                                 The entry is obtained via the usr_page field. */
/* -------------- */
    pseudo_bit_t	usr_page[0x00018];     /* Index (offset) of user page allocated for this SRQ (see "non_privileged Access to the HCA Hardware"). Not valid (reserved) in EE context. */
    pseudo_bit_t	reserved0[0x00005];
    pseudo_bit_t	log_rq_stride[0x00003];/* Stride (max WQE size) on the receive queue. WQ entry is 16*(2^log_RQ_stride) bytes. */
/* -------------- */
    pseudo_bit_t	wqe_addr_h[0x00020];   /* Bits 63:32 of WQE address (WQE base address) */
/* -------------- */
    pseudo_bit_t	reserved1[0x00006];
    pseudo_bit_t	srq_wqe_base_adr_l[0x0001a];/* While opening (creating) the SRQ, this field should contain the address of first descriptor to be posted. */
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* SRQ protection domain. */
    pseudo_bit_t	reserved2[0x00008];
/* -------------- */
    pseudo_bit_t	wqe_cnt[0x00010];      /* WQE count on the SRQ.
                                                 Valid only on QUERY_SRQ and HW2SW_SRQ commands. */
    pseudo_bit_t	lwm[0x00010];          /* Limit Water Mark - if the LWM is not zero, and the wqe_cnt drops below LWM when a WQE is dequeued from the SRQ, then a SRQ limit event is fired and the LWM is set to zero. */
/* -------------- */
    pseudo_bit_t	srq_wqe_counter[0x00010];/* A 16bits counter that is incremented for each WQE posted to the SQ.
                                                 Must be 0x0 in SRQ initialization.
                                                 (QUERY_SRQ only). */
    pseudo_bit_t	reserved3[0x00010];
/* -------------- */
    pseudo_bit_t	reserved4[0x00060];
/* -------------- */
};

/* PBL */

struct arbelprm_pbl_st {	/* Little Endian */
    pseudo_bit_t	mtt_0_h[0x00020];      /* First MTT[63:32] */
/* -------------- */
    pseudo_bit_t	mtt_0_l[0x00020];      /* First MTT[31:0] */
/* -------------- */
    pseudo_bit_t	mtt_1_h[0x00020];      /* Second MTT[63:32] */
/* -------------- */
    pseudo_bit_t	mtt_1_l[0x00020];      /* Second MTT[31:0] */
/* -------------- */
    pseudo_bit_t	mtt_2_h[0x00020];      /* Third MTT[63:32] */
/* -------------- */
    pseudo_bit_t	mtt_2_l[0x00020];      /* Third MTT[31:0] */
/* -------------- */
    pseudo_bit_t	mtt_3_h[0x00020];      /* Fourth MTT[63:32] */
/* -------------- */
    pseudo_bit_t	mtt_3_l[0x00020];      /* Fourth MTT[31:0] */
/* -------------- */
};

/* Performance Counters */

struct arbelprm_performance_counters_st {	/* Little Endian */
    pseudo_bit_t	sqpc_access_cnt[0x00020];/* SQPC cache access count */
/* -------------- */
    pseudo_bit_t	sqpc_miss_cnt[0x00020];/* SQPC cache miss count */
/* -------------- */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
    pseudo_bit_t	rqpc_access_cnt[0x00020];/* RQPC cache access count */
/* -------------- */
    pseudo_bit_t	rqpc_miss_cnt[0x00020];/* RQPC cache miss count */
/* -------------- */
    pseudo_bit_t	reserved1[0x00040];
/* -------------- */
    pseudo_bit_t	cqc_access_cnt[0x00020];/* CQC cache access count */
/* -------------- */
    pseudo_bit_t	cqc_miss_cnt[0x00020]; /* CQC cache miss count */
/* -------------- */
    pseudo_bit_t	reserved2[0x00040];
/* -------------- */
    pseudo_bit_t	tpt_access_cnt[0x00020];/* TPT cache access count */
/* -------------- */
    pseudo_bit_t	mpt_miss_cnt[0x00020]; /* MPT cache miss count */
/* -------------- */
    pseudo_bit_t	mtt_miss_cnt[0x00020]; /* MTT cache miss count */
/* -------------- */
    pseudo_bit_t	reserved3[0x00620];
/* -------------- */
};

/* Transport and CI Error Counters */

struct arbelprm_transport_and_ci_error_counters_st {	/* Little Endian */
    pseudo_bit_t	rq_num_lle[0x00020];   /* Responder - number of local length errors */
/* -------------- */
    pseudo_bit_t	sq_num_lle[0x00020];   /* Requester - number of local length errors */
/* -------------- */
    pseudo_bit_t	rq_num_lqpoe[0x00020]; /* Responder - number local QP operation error */
/* -------------- */
    pseudo_bit_t	sq_num_lqpoe[0x00020]; /* Requester - number local QP operation error */
/* -------------- */
    pseudo_bit_t	rq_num_leeoe[0x00020]; /* Responder - number local EE operation error */
/* -------------- */
    pseudo_bit_t	sq_num_leeoe[0x00020]; /* Requester - number local EE operation error */
/* -------------- */
    pseudo_bit_t	rq_num_lpe[0x00020];   /* Responder - number of local protection errors */
/* -------------- */
    pseudo_bit_t	sq_num_lpe[0x00020];   /* Requester - number of local protection errors */
/* -------------- */
    pseudo_bit_t	rq_num_wrfe[0x00020];  /* Responder - number of CQEs with error. 
                                                 Incremented each time a CQE with error is generated */
/* -------------- */
    pseudo_bit_t	sq_num_wrfe[0x00020];  /* Requester - number of CQEs with error. 
                                                 Incremented each time a CQE with error is generated */
/* -------------- */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_mwbe[0x00020];  /* Requester - number of memory window bind errors */
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_bre[0x00020];   /* Requester - number of bad response errors */
/* -------------- */
    pseudo_bit_t	rq_num_lae[0x00020];   /* Responder - number of local access errors */
/* -------------- */
    pseudo_bit_t	reserved2[0x00040];
/* -------------- */
    pseudo_bit_t	sq_num_rire[0x00020];  /* Requester - number of remote invalid request errors
                                                 NAK-Invalid Request on:
                                                 1. Unsupported OpCode: Responder detected an unsupported OpCode.
                                                 2. Unexpected OpCode: Responder detected an error in the sequence of OpCodes, such
                                                 as a missing "Last" packet.
                                                 Note: there is no PSN error, thus this does not indicate a dropped packet. */
/* -------------- */
    pseudo_bit_t	rq_num_rire[0x00020];  /* Responder - number of remote invalid request errors.
                                                 NAK may or may not be sent.
                                                 1. QP Async Affiliated Error: Unsupported or Reserved OpCode (RC,RD only):
                                                 Inbound request OpCode was either reserved, or was for a function not supported by this
                                                 QP. (E.g. RDMA or ATOMIC on QP not set up for this).
                                                 2. Misaligned ATOMIC: VA does not point to an aligned address on an atomic opera-tion.
                                                 3. Too many RDMA READ or ATOMIC Requests: There were more requests received
                                                 and not ACKed than allowed for the connection.
                                                 4. Out of Sequence OpCode, current packet is "First" or "Only": The Responder
                                                 detected an error in the sequence of OpCodes; a missing "Last" packet
                                                 5. Out of Sequence OpCode, current packet is not "First" or "Only": The Responder
                                                 detected an error in the sequence of OpCodes; a missing "First" packet
                                                 6. Local Length Error: Inbound "Send" request message exceeded the responder.s avail-able
                                                 buffer space.
                                                 7. Length error: RDMA WRITE request message contained too much or too little pay-load
                                                 data compared to the DMA length advertised in the first or only packet.
                                                 8. Length error: Payload length was not consistent with the opcode:
                                                 a: 0 byte <= "only" <= PMTU bytes
                                                 b: ("first" or "middle") == PMTU bytes
                                                 c: 1byte <= "last" <= PMTU bytes
                                                 9. Length error: Inbound message exceeded the size supported by the CA port. */
/* -------------- */
    pseudo_bit_t	sq_num_rae[0x00020];   /* Requester - number of remote access errors.
                                                 NAK-Remote Access Error on:
                                                 R_Key Violation: Responder detected an invalid R_Key while executing an RDMA
                                                 Request. */
/* -------------- */
    pseudo_bit_t	rq_num_rae[0x00020];   /* Responder - number of remote access errors.
                                                 R_Key Violation Responder detected an R_Key violation while executing an RDMA
                                                 request.
                                                 NAK may or may not be sent. */
/* -------------- */
    pseudo_bit_t	sq_num_roe[0x00020];   /* Requester - number of remote operation errors.
                                                 NAK-Remote Operation Error on:
                                                 Remote Operation Error: Responder encountered an error, (local to the responder),
                                                 which prevented it from completing the request. */
/* -------------- */
    pseudo_bit_t	rq_num_roe[0x00020];   /* Responder - number of remote operation errors.
                                                 NAK-Remote Operation Error on:
                                                 1. Malformed WQE: Responder detected a malformed Receive Queue WQE while pro-cessing
                                                 the packet.
                                                 2. Remote Operation Error: Responder encountered an error, (local to the responder),
                                                 which prevented it from completing the request. */
/* -------------- */
    pseudo_bit_t	sq_num_tree[0x00020];  /* Requester - number of transport retries exceeded errors */
/* -------------- */
    pseudo_bit_t	reserved3[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_rree[0x00020];  /* Requester - number of RNR nak retries exceeded errors */
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_lrdve[0x00020]; /* Requester - number of local RDD violation errors */
/* -------------- */
    pseudo_bit_t	rq_num_rirdre[0x00020];/* Responder - number of remote invalid RD request errors */
/* -------------- */
    pseudo_bit_t	reserved5[0x00040];
/* -------------- */
    pseudo_bit_t	sq_num_rabrte[0x00020];/* Requester - number of remote aborted errors */
/* -------------- */
    pseudo_bit_t	reserved6[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_ieecne[0x00020];/* Requester - number of invalid EE context number errors */
/* -------------- */
    pseudo_bit_t	reserved7[0x00020];
/* -------------- */
    pseudo_bit_t	sq_num_ieecse[0x00020];/* Requester - invalid EE context state errors */
/* -------------- */
    pseudo_bit_t	reserved8[0x00380];
/* -------------- */
    pseudo_bit_t	rq_num_oos[0x00020];   /* Responder - number of out of sequence requests received */
/* -------------- */
    pseudo_bit_t	sq_num_oos[0x00020];   /* Requester - number of out of sequence Naks received */
/* -------------- */
    pseudo_bit_t	rq_num_mce[0x00020];   /* Responder - number of bad multicast packets received */
/* -------------- */
    pseudo_bit_t	reserved9[0x00020];
/* -------------- */
    pseudo_bit_t	rq_num_rsync[0x00020]; /* Responder - number of RESYNC operations */
/* -------------- */
    pseudo_bit_t	sq_num_rsync[0x00020]; /* Requester - number of RESYNC operations */
/* -------------- */
    pseudo_bit_t	rq_num_udsdprd[0x00020];/* The number of UD packets silently discarded on the receive queue due to lack of receive descriptor. */
/* -------------- */
    pseudo_bit_t	reserved10[0x00020];
/* -------------- */
    pseudo_bit_t	rq_num_ucsdprd[0x00020];/* The number of UC packets silently discarded on the receive queue due to lack of receive descriptor. */
/* -------------- */
    pseudo_bit_t	reserved11[0x003e0];
/* -------------- */
    pseudo_bit_t	num_cqovf[0x00020];    /* Number of CQ overflows */
/* -------------- */
    pseudo_bit_t	num_eqovf[0x00020];    /* Number of EQ overflows */
/* -------------- */
    pseudo_bit_t	num_baddb[0x00020];    /* Number of bad doorbells */
/* -------------- */
    pseudo_bit_t	reserved12[0x002a0];
/* -------------- */
};

/* Event_data Field - HCR Completion Event */

struct arbelprm_hcr_completion_event_st {	/* Little Endian */
    pseudo_bit_t	token[0x00010];        /* HCR Token */
    pseudo_bit_t	reserved0[0x00010];
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
    pseudo_bit_t	status[0x00008];       /* HCR Status */
    pseudo_bit_t	reserved2[0x00018];
/* -------------- */
    pseudo_bit_t	out_param_h[0x00020];  /* HCR Output Parameter [63:32] */
/* -------------- */
    pseudo_bit_t	out_param_l[0x00020];  /* HCR Output Parameter [31:0] */
/* -------------- */
    pseudo_bit_t	reserved3[0x00020];
/* -------------- */
};

/* Completion with Error CQE */

struct arbelprm_completion_with_error_st {	/* Little Endian */
    pseudo_bit_t	myqpn[0x00018];        /* Indicates the QP for which completion is being reported */
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	reserved1[0x00060];
/* -------------- */
    pseudo_bit_t	reserved2[0x00010];
    pseudo_bit_t	vendor_code[0x00008];
    pseudo_bit_t	syndrome[0x00008];     /* Completion with error syndrome:
                                                         0x01 - Local Length Error
                                                         0x02 - Local QP Operation Error
                                                         0x03 - Local EE Context Operation Error
                                                         0x04 - Local Protection Error
                                                         0x05 - Work Request Flushed Error 
                                                         0x06 - Memory Window Bind Error
                                                         0x10 - Bad Response Error
                                                         0x11 - Local Access Error
                                                         0x12 - Remote Invalid Request Error
                                                         0x13 - Remote Access Error
                                                         0x14 - Remote Operation Error
                                                         0x15 - Transport Retry Counter Exceeded
                                                         0x16 - RNR Retry Counter Exceeded
                                                         0x20 - Local RDD Violation Error
                                                         0x21 - Remote Invalid RD Request
                                                         0x22 - Remote Aborted Error
                                                         0x23 - Invalid EE Context Number
                                                         0x24 - Invalid EE Context State
                                                         other - Reserved
                                                 Syndrome is defined according to the IB specification volume 1. For detailed explanation of the syndromes, refer to chapters 10-11 of the IB specification rev 1.1. */
/* -------------- */
    pseudo_bit_t	reserved3[0x00020];
/* -------------- */
    pseudo_bit_t	reserved4[0x00006];
    pseudo_bit_t	wqe_addr[0x0001a];     /* Bits 31:6 of WQE virtual address completion is reported for. The 6 least significant bits are zero. */
/* -------------- */
    pseudo_bit_t	reserved5[0x00007];
    pseudo_bit_t	owner[0x00001];        /* Owner field. Zero value of this field means SW ownership of CQE. */
    pseudo_bit_t	reserved6[0x00010];
    pseudo_bit_t	opcode[0x00008];       /* The opcode of WQE completion is reported for.
                                                 
                                                 The following values are reported in case of completion with error:
                                                 0xFE - For completion with error on Receive Queues
                                                 0xFF - For completion with error on Send Queues */
/* -------------- */
};

/* Resize CQ Input Mailbox */

struct arbelprm_resize_cq_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
    pseudo_bit_t	start_addr_h[0x00020]; /* Start address of CQ[63:32]. 
                                                 Must be aligned on CQE size (32 bytes) */
/* -------------- */
    pseudo_bit_t	start_addr_l[0x00020]; /* Start address of CQ[31:0]. 
                                                 Must be aligned on CQE size (32 bytes) */
/* -------------- */
    pseudo_bit_t	reserved1[0x00018];
    pseudo_bit_t	log_cq_size[0x00005];  /* Log (base 2) of the CQ size (in entries) */
    pseudo_bit_t	reserved2[0x00003];
/* -------------- */
    pseudo_bit_t	reserved3[0x00060];
/* -------------- */
    pseudo_bit_t	l_key[0x00020];        /* Memory key (L_Key) to be used to access CQ */
/* -------------- */
    pseudo_bit_t	reserved4[0x00100];
/* -------------- */
};

/* MAD_IFC Input Modifier */

struct arbelprm_mad_ifc_input_modifier_st {	/* Little Endian */
    pseudo_bit_t	port_number[0x00008];  /* The packet reception port number (1 or 2). */
    pseudo_bit_t	mad_extended_info[0x00001];/* Mad_Extended_Info valid bit (MAD_IFC Input Mailbox data from offset 00100h and down). MAD_Extended_Info is read only if this bit is set.
                                                 Required for trap generation when BKey check is enabled and for global routed packets. */
    pseudo_bit_t	reserved0[0x00007];
    pseudo_bit_t	rlid[0x00010];         /* Remote (source) LID  from the received MAD.
                                                 This field is required for trap generation upon MKey/BKey validation. */
/* -------------- */
};

/* MAD_IFC Input Mailbox */

struct arbelprm_mad_ifc_st {	/* Little Endian */
    pseudo_bit_t	request_mad_packet[64][0x00020];/* Request MAD Packet (256bytes) */
/* -------------- */
    pseudo_bit_t	my_qpn[0x00018];       /* Destination QP number from the received MAD. 
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	rqpn[0x00018];         /* Remote (source) QP number  from the received MAD.
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	rlid[0x00010];         /* Remote (source) LID  from the received MAD.
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	ml_path[0x00007];      /* My (destination) LID path bits  from the received MAD.
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	g[0x00001];            /* If set, the GRH field in valid. 
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	reserved2[0x00004];
    pseudo_bit_t	sl[0x00004];           /* Service Level of the received MAD.
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
/* -------------- */
    pseudo_bit_t	pkey_indx[0x00010];    /* Index in PKey table that matches PKey of the received MAD. 
                                                 This field is reserved if Mad_extended_info indication in the input modifier is clear. */
    pseudo_bit_t	reserved3[0x00010];
/* -------------- */
    pseudo_bit_t	reserved4[0x00180];
/* -------------- */
    pseudo_bit_t	grh[10][0x00020];      /* The GRH field of the MAD packet that was scattered to the first 40 bytes pointed to by the scatter list. 
                                                 Valid if Mad_extended_info bit (in the input modifier) and g bit are set. 
                                                 Otherwise this field is reserved. */
/* -------------- */
    pseudo_bit_t	reserved5[0x004c0];
/* -------------- */
};

/* Query Debug Message */

struct arbelprm_query_debug_msg_st {	/* Little Endian */
    pseudo_bit_t	phy_addr_h[0x00020];   /* Translation of the address in firmware area. High 32 bits. */
/* -------------- */
    pseudo_bit_t	v[0x00001];            /* Physical translation is valid */
    pseudo_bit_t	reserved0[0x0000b];
    pseudo_bit_t	phy_addr_l[0x00014];   /* Translation of the address in firmware area. Low 32 bits. */
/* -------------- */
    pseudo_bit_t	fw_area_base[0x00020]; /* Firmware area base address. The format strings and the trace buffers may be located starting from this address. */
/* -------------- */
    pseudo_bit_t	fw_area_size[0x00020]; /* Firmware area size */
/* -------------- */
    pseudo_bit_t	trc_hdr_sz[0x00020];   /* Trace message header size in dwords. */
/* -------------- */
    pseudo_bit_t	trc_arg_num[0x00020];  /* The number of arguments per trace message. */
/* -------------- */
    pseudo_bit_t	reserved1[0x000c0];
/* -------------- */
    pseudo_bit_t	dbg_msk_h[0x00020];    /* Debug messages mask [63:32] */
/* -------------- */
    pseudo_bit_t	dbg_msk_l[0x00020];    /* Debug messages mask [31:0] */
/* -------------- */
    pseudo_bit_t	reserved2[0x00040];
/* -------------- */
    pseudo_bit_t	buff0_addr[0x00020];   /* Address in firmware area of Trace Buffer 0 */
/* -------------- */
    pseudo_bit_t	buff0_size[0x00020];   /* Size of Trace Buffer 0 */
/* -------------- */
    pseudo_bit_t	buff1_addr[0x00020];   /* Address in firmware area of Trace Buffer 1 */
/* -------------- */
    pseudo_bit_t	buff1_size[0x00020];   /* Size of Trace Buffer 1 */
/* -------------- */
    pseudo_bit_t	buff2_addr[0x00020];   /* Address in firmware area of Trace Buffer 2 */
/* -------------- */
    pseudo_bit_t	buff2_size[0x00020];   /* Size of Trace Buffer 2 */
/* -------------- */
    pseudo_bit_t	buff3_addr[0x00020];   /* Address in firmware area of Trace Buffer 3 */
/* -------------- */
    pseudo_bit_t	buff3_size[0x00020];   /* Size of Trace Buffer 3 */
/* -------------- */
    pseudo_bit_t	buff4_addr[0x00020];   /* Address in firmware area of Trace Buffer 4 */
/* -------------- */
    pseudo_bit_t	buff4_size[0x00020];   /* Size of Trace Buffer 4 */
/* -------------- */
    pseudo_bit_t	buff5_addr[0x00020];   /* Address in firmware area of Trace Buffer 5 */
/* -------------- */
    pseudo_bit_t	buff5_size[0x00020];   /* Size of Trace Buffer 5 */
/* -------------- */
    pseudo_bit_t	buff6_addr[0x00020];   /* Address in firmware area of Trace Buffer 6 */
/* -------------- */
    pseudo_bit_t	buff6_size[0x00020];   /* Size of Trace Buffer 6 */
/* -------------- */
    pseudo_bit_t	buff7_addr[0x00020];   /* Address in firmware area of Trace Buffer 7 */
/* -------------- */
    pseudo_bit_t	buff7_size[0x00020];   /* Size of Trace Buffer 7 */
/* -------------- */
    pseudo_bit_t	reserved3[0x00400];
/* -------------- */
};

/* User Access Region */

struct arbelprm_uar_st {	/* Little Endian */
    struct arbelprm_rd_send_doorbell_st	rd_send_doorbell;/* Reliable Datagram send doorbell */
/* -------------- */
    struct arbelprm_send_doorbell_st	send_doorbell;/* Send doorbell */
/* -------------- */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
    struct arbelprm_cq_cmd_doorbell_st	cq_command_doorbell;/* CQ Doorbell */
/* -------------- */
    pseudo_bit_t	reserved1[0x03ec0];
/* -------------- */
};

/* Receive doorbell */

struct arbelprm_receive_doorbell_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	wqe_counter[0x00010];  /* Modulo-64K counter of WQEs posted on this queue since its creation. Should be zero for the first doorbell on the QP */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	reserved2[0x00005];
    pseudo_bit_t	srq[0x00001];          /* If set, this is a Shared Receive Queue */
    pseudo_bit_t	reserved3[0x00002];
    pseudo_bit_t	qpn[0x00018];          /* QP number or SRQ number this doorbell is rung on */
/* -------------- */
};

/* SET_IB Parameters */

struct arbelprm_set_ib_st {	/* Little Endian */
    pseudo_bit_t	rqk[0x00001];          /* Reset QKey Violation Counter */
    pseudo_bit_t	reserved0[0x00011];
    pseudo_bit_t	sig[0x00001];          /* Set System Image GUID to system_image_guid specified.
                                                 system_image_guid and sig must be the same for all ports. */
    pseudo_bit_t	reserved1[0x0000d];
/* -------------- */
    pseudo_bit_t	capability_mask[0x00020];/* PortInfo Capability Mask */
/* -------------- */
    pseudo_bit_t	system_image_guid_h[0x00020];/* System Image GUID[63:32], takes effect only if the SIG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	system_image_guid_l[0x00020];/* System Image GUID[31:0], takes effect only if the SIG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	reserved2[0x00180];
/* -------------- */
};

/* Multicast Group Member */

struct arbelprm_mgm_entry_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00006];
    pseudo_bit_t	next_gid_index[0x0001a];/* Index of next Multicast Group Member whose GID maps to same MGID_HASH number.
                                                 The index is into the Multicast Group Table, which is the comprised the MGHT and AMGM tables.
                                                 next_gid_index=0 means end of the chain. */
/* -------------- */
    pseudo_bit_t	reserved1[0x00060];
/* -------------- */
    pseudo_bit_t	mgid_128_96[0x00020];  /* Multicast group GID[128:96] in big endian format.
                                                 Use the Reserved GID 0:0:0:0:0:0:0:0 for an invalid entry. */
/* -------------- */
    pseudo_bit_t	mgid_95_64[0x00020];   /* Multicast group GID[95:64] in big endian format.
                                                 Use the Reserved GID 0:0:0:0:0:0:0:0 for an invalid entry. */
/* -------------- */
    pseudo_bit_t	mgid_63_32[0x00020];   /* Multicast group GID[63:32] in big endian format.
                                                 Use the Reserved GID 0:0:0:0:0:0:0:0 for an invalid entry. */
/* -------------- */
    pseudo_bit_t	mgid_31_0[0x00020];    /* Multicast group GID[31:0] in big endian format.
                                                 Use the Reserved GID 0:0:0:0:0:0:0:0 for an invalid entry. */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_0;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_1;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_2;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_3;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_4;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_5;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_6;   /* Multicast Group Member QP */
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp_7;   /* Multicast Group Member QP */
/* -------------- */
};

/* INIT_IB Parameters */

struct arbelprm_init_ib_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00004];
    pseudo_bit_t	vl_cap[0x00004];       /* Maximum VLs supported on the port, excluding VL15.
                                                 Legal values are 1,2,4 and 8. */
    pseudo_bit_t	port_width_cap[0x00004];/* IB Port Width
                                                 1   - 1x
                                                 3   - 1x, 4x
                                                 11 - 1x, 4x or 12x (must not be used in InfiniHost-III-EX MT25208)
                                                 else - Reserved */
    pseudo_bit_t	mtu_cap[0x00004];      /* Maximum MTU Supported
                                                 0x0 - Reserved
                                                 0x1 - 256
                                                 0x2 - 512
                                                 0x3 - 1024
                                                 0x4 - 2048
                                                 0x5 - 0xF Reserved */
    pseudo_bit_t	g0[0x00001];           /* Set port GUID0 to GUID0 specified */
    pseudo_bit_t	ng[0x00001];           /* Set node GUID to node_guid specified.
                                                 node_guid and ng must be the same for all ports. */
    pseudo_bit_t	sig[0x00001];          /* Set System Image GUID to system_image_guid specified.
                                                 system_image_guid and sig must be the same for all ports. */
    pseudo_bit_t	reserved1[0x0000d];
/* -------------- */
    pseudo_bit_t	max_gid[0x00010];      /* Maximum number of GIDs for the port */
    pseudo_bit_t	reserved2[0x00010];
/* -------------- */
    pseudo_bit_t	max_pkey[0x00010];     /* Maximum pkeys for the port.
                                                 Must be the same for both ports. */
    pseudo_bit_t	reserved3[0x00010];
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
    pseudo_bit_t	guid0_h[0x00020];      /* EUI-64 GUID assigned by the manufacturer, takes effect only if the G0 bit is set (bits 63:32) */
/* -------------- */
    pseudo_bit_t	guid0_l[0x00020];      /* EUI-64 GUID assigned by the manufacturer, takes effect only if the G0 bit is set (bits 31:0) */
/* -------------- */
    pseudo_bit_t	node_guid_h[0x00020];  /* Node GUID[63:32], takes effect only if the NG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	node_guid_l[0x00020];  /* Node GUID[31:0], takes effect only if the NG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	system_image_guid_h[0x00020];/* System Image GUID[63:32], takes effect only if the SIG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	system_image_guid_l[0x00020];/* System Image GUID[31:0], takes effect only if the SIG bit is set
                                                 Must be the same for both ports. */
/* -------------- */
    pseudo_bit_t	reserved5[0x006c0];
/* -------------- */
};

/* Query Device Limitations */

struct arbelprm_query_dev_lim_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
    pseudo_bit_t	log_max_qp[0x00005];   /* Log2 of the Maximum number of QPs supported */
    pseudo_bit_t	reserved1[0x00003];
    pseudo_bit_t	log2_rsvd_qps[0x00004];/* Log (base 2) of the number of QPs reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_qps-1 */
    pseudo_bit_t	reserved2[0x00004];
    pseudo_bit_t	log_max_qp_sz[0x00008];/* The maximum number of WQEs allowed on the RQ or the SQ is 2^log_max_qp_sz-1 */
    pseudo_bit_t	log_max_srq_sz[0x00008];/* The maximum number of WQEs allowed on the SRQ is 2^log_max_srq_sz-1 */
/* -------------- */
    pseudo_bit_t	log_max_ee[0x00005];   /* Log2 of the Maximum number of EE contexts supported */
    pseudo_bit_t	reserved3[0x00003];
    pseudo_bit_t	log2_rsvd_ees[0x00004];/* Log (base 2) of the number of EECs reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_ees-1 */
    pseudo_bit_t	reserved4[0x00004];
    pseudo_bit_t	log_max_srqs[0x00005]; /* Log base 2 of the maximum number of SRQs supported, valid only if SRQ bit is set.
                                                  */
    pseudo_bit_t	reserved5[0x00007];
    pseudo_bit_t	log2_rsvd_srqs[0x00004];/* Log (base 2) of the number of reserved SRQs for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_srqs-1
                                                 This parameter is valid only if the SRQ bit is set. */
/* -------------- */
    pseudo_bit_t	log_max_cq[0x00005];   /* Log2 of the Maximum number of CQs supported */
    pseudo_bit_t	reserved6[0x00003];
    pseudo_bit_t	log2_rsvd_cqs[0x00004];/* Log (base 2) of the number of CQs reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsrvd_cqs-1 */
    pseudo_bit_t	reserved7[0x00004];
    pseudo_bit_t	log_max_cq_sz[0x00008];/* Log2 of the Maximum CQEs allowed in a CQ */
    pseudo_bit_t	reserved8[0x00008];
/* -------------- */
    pseudo_bit_t	log_max_eq[0x00003];   /* Log2 of the Maximum number of EQs */
    pseudo_bit_t	reserved9[0x00005];
    pseudo_bit_t	num_rsvd_eqs[0x00004]; /* The number of EQs reserved for firmware use
                                                 The reserved resources are numbered from 0 to num_rsvd_eqs-1
                                                 If 0 - no resources are reserved. */
    pseudo_bit_t	reserved10[0x00004];
    pseudo_bit_t	log_max_mpts[0x00006]; /* Log (base 2) of the maximum number of MPT entries (the number of Regions/Windows) */
    pseudo_bit_t	reserved11[0x00002];
    pseudo_bit_t	log_max_eq_sz[0x00008];/* Log2 of the Maximum EQEs allowed in a EQ */
/* -------------- */
    pseudo_bit_t	log_max_mtts[0x00006]; /* Log2 of the Maximum number of MTT entries */
    pseudo_bit_t	reserved12[0x00002];
    pseudo_bit_t	log2_rsvd_mrws[0x00004];/* Log (base 2) of the number of MPTs reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_mrws-1 */
    pseudo_bit_t	reserved13[0x00004];
    pseudo_bit_t	log_max_mrw_sz[0x00008];/* Log2 of the Maximum Size of Memory Region/Window */
    pseudo_bit_t	reserved14[0x00004];
    pseudo_bit_t	log2_rsvd_mtts[0x00004];/* Log (base 2) of the number of MTT entries reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_mtts-1
                                                  */
/* -------------- */
    pseudo_bit_t	reserved15[0x00020];
/* -------------- */
    pseudo_bit_t	log_max_ra_res_qp[0x00006];/* Log2 of the Maximum number of outstanding RDMA read/Atomic per QP as a responder */
    pseudo_bit_t	reserved16[0x0000a];
    pseudo_bit_t	log_max_ra_req_qp[0x00006];/* Log2 of the maximum number of outstanding RDMA read/Atomic per QP as a requester */
    pseudo_bit_t	reserved17[0x0000a];
/* -------------- */
    pseudo_bit_t	log_max_ra_res_global[0x00006];/* Log2 of the maximum number of RDMA read/atomic operations the HCA responder can support globally. That implies the RDB table size. */
    pseudo_bit_t	reserved18[0x00016];
    pseudo_bit_t	log2_rsvd_rdbs[0x00004];/* Log (base 2) of the number of RDB entries reserved for firmware use
                                                 The reserved resources are numbered from 0 to 2^log2_rsvd_rdbs-1 */
/* -------------- */
    pseudo_bit_t	rsz_srq[0x00001];      /* Ability to modify the maximum number of WRs per SRQ. */
    pseudo_bit_t	reserved19[0x0001f];
/* -------------- */
    pseudo_bit_t	num_ports[0x00004];    /* Number of IB ports. */
    pseudo_bit_t	max_vl[0x00004];       /* Maximum VLs supported on each port, excluding VL15 */
    pseudo_bit_t	max_port_width[0x00004];/* IB Port Width
                                                 1   - 1x
                                                 3   - 1x, 4x
                                                 11 - 1x, 4x or 12x
                                                 else - Reserved */
    pseudo_bit_t	max_mtu[0x00004];      /* Maximum MTU Supported
                                                 0x0 - Reserved
                                                 0x1 - 256
                                                 0x2 - 512
                                                 0x3 - 1024
                                                 0x4 - 2048
                                                 0x5 - 0xF Reserved */
    pseudo_bit_t	local_ca_ack_delay[0x00005];/* The Local CA ACK Delay. This is the value recommended to be returned in Query HCA verb.
                                                 The delay value in microseconds is computed using 4.096us * 2^(local_ca_ack_delay). */
    pseudo_bit_t	reserved20[0x0000b];
/* -------------- */
    pseudo_bit_t	log_max_gid[0x00004];  /* Log2 of the maximum number of GIDs per port */
    pseudo_bit_t	reserved21[0x0001c];
/* -------------- */
    pseudo_bit_t	log_max_pkey[0x00004]; /* Log2 of the max PKey Table Size (per IB port) */
    pseudo_bit_t	reserved22[0x0000c];
    pseudo_bit_t	stat_rate_support[0x00010];/* bit mask of stat rate supported
                                                 bit 0 - full bw
                                                 bit 1 - 1/4 bw
                                                 bit 2 - 1/8 bw
                                                 bit 3 - 1/2 bw; */
/* -------------- */
    pseudo_bit_t	reserved23[0x00020];
/* -------------- */
    pseudo_bit_t	rc[0x00001];           /* RC Transport supported */
    pseudo_bit_t	uc[0x00001];           /* UC Transport Supported */
    pseudo_bit_t	ud[0x00001];           /* UD Transport Supported */
    pseudo_bit_t	rd[0x00001];           /* RD Transport Supported */
    pseudo_bit_t	raw_ipv6[0x00001];     /* Raw IPv6 Transport Supported */
    pseudo_bit_t	raw_ether[0x00001];    /* Raw Ethertype Transport Supported */
    pseudo_bit_t	srq[0x00001];          /* SRQ is supported
                                                  */
    pseudo_bit_t	ipo_ib_checksum[0x00001];/* IP over IB checksum is supported */
    pseudo_bit_t	pkv[0x00001];          /* PKey Violation Counter Supported */
    pseudo_bit_t	qkv[0x00001];          /* QKey Violation Coutner Supported */
    pseudo_bit_t	reserved24[0x00006];
    pseudo_bit_t	mw[0x00001];           /* Memory windows supported */
    pseudo_bit_t	apm[0x00001];          /* Automatic Path Migration Supported */
    pseudo_bit_t	atm[0x00001];          /* Atomic operations supported (atomicity is guaranteed between QPs on this HCA) */
    pseudo_bit_t	rm[0x00001];           /* Raw Multicast Supported */
    pseudo_bit_t	avp[0x00001];          /* Address Vector Port checking supported */
    pseudo_bit_t	udm[0x00001];          /* UD Multicast Supported */
    pseudo_bit_t	reserved25[0x00002];
    pseudo_bit_t	pg[0x00001];           /* Paging on demand supported */
    pseudo_bit_t	r[0x00001];            /* Router mode supported */
    pseudo_bit_t	reserved26[0x00006];
/* -------------- */
    pseudo_bit_t	log_pg_sz[0x00008];    /* Minimum system page size supported (log2).
                                                 For proper operation it must be less than or equal the hosting platform (CPU) minimum page size. */
    pseudo_bit_t	reserved27[0x00008];
    pseudo_bit_t	uar_sz[0x00006];       /* UAR Area Size = 1MB * 2^uar_sz */
    pseudo_bit_t	reserved28[0x00006];
    pseudo_bit_t	num_rsvd_uars[0x00004];/* The number of UARs reserved for firmware use
                                                 The reserved resources are numbered from 0 to num_reserved_uars-1
                                                 Note that UAR number num_reserved_uars is always for the kernel. */
/* -------------- */
    pseudo_bit_t	reserved29[0x00020];
/* -------------- */
    pseudo_bit_t	max_desc_sz_sq[0x00010];/* Max descriptor size in bytes for the send queue */
    pseudo_bit_t	max_sg_sq[0x00008];    /* The maximum S/G list elements in a SQ WQE (max_desc_sz/16 - 3) */
    pseudo_bit_t	reserved30[0x00008];
/* -------------- */
    pseudo_bit_t	max_desc_sz_rq[0x00010];/* Max descriptor size in bytes for the receive queue */
    pseudo_bit_t	max_sg_rq[0x00008];    /* The maximum S/G list elements in a RQ WQE (max_desc_sz/16 - 3) */
    pseudo_bit_t	reserved31[0x00008];
/* -------------- */
    pseudo_bit_t	reserved32[0x00040];
/* -------------- */
    pseudo_bit_t	log_max_mcg[0x00008];  /* Log2 of the maximum number of multicast groups */
    pseudo_bit_t	num_rsvd_mcgs[0x00004];/* The number of MGMs reserved for firmware use in the MGHT.
                                                 The reserved resources are numbered from 0 to num_reserved_mcgs-1
                                                 If 0 - no resources are reserved. */
    pseudo_bit_t	reserved33[0x00004];
    pseudo_bit_t	log_max_qp_mcg[0x00008];/* Log2 of the maximum number of QPs per multicast group */
    pseudo_bit_t	reserved34[0x00008];
/* -------------- */
    pseudo_bit_t	log_max_rdds[0x00006]; /* Log2 of the maximum number of RDDs */
    pseudo_bit_t	reserved35[0x00006];
    pseudo_bit_t	num_rsvd_rdds[0x00004];/* The number of RDDs reserved for firmware use
                                                 The reserved resources are numbered from 0 to num_reserved_rdds-1.
                                                 If 0 - no resources are reserved. */
    pseudo_bit_t	log_max_pd[0x00006];   /* Log2 of the maximum number of PDs */
    pseudo_bit_t	reserved36[0x00006];
    pseudo_bit_t	num_rsvd_pds[0x00004]; /* The number of PDs reserved for firmware use
                                                 The reserved resources are numbered from 0 to num_reserved_pds-1
                                                 If 0 - no resources are reserved. */
/* -------------- */
    pseudo_bit_t	reserved37[0x000c0];
/* -------------- */
    pseudo_bit_t	qpc_entry_sz[0x00010]; /* QPC Entry Size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 256 bytes */
    pseudo_bit_t	eec_entry_sz[0x00010]; /* EEC Entry Size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 256 bytes */
/* -------------- */
    pseudo_bit_t	eqpc_entry_sz[0x00010];/* Extended QPC entry size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 32 bytes */
    pseudo_bit_t	eeec_entry_sz[0x00010];/* Extended EEC entry size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 32 bytes */
/* -------------- */
    pseudo_bit_t	cqc_entry_sz[0x00010]; /* CQC entry size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 64 bytes */
    pseudo_bit_t	eqc_entry_sz[0x00010]; /* EQ context entry size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 64 bytes */
/* -------------- */
    pseudo_bit_t	uar_scratch_entry_sz[0x00010];/* UAR Scratchpad Entry Size
                                                 For the InfiniHost-III-EX MT25208 entry size is 32 bytes */
    pseudo_bit_t	srq_entry_sz[0x00010]; /* SRQ context entry size for the device
                                                 For the InfiniHost-III-EX MT25208 entry size is 32 bytes */
/* -------------- */
    pseudo_bit_t	mpt_entry_sz[0x00010]; /* MPT entry size in Bytes for the device.
                                                 For the InfiniHost-III-EX MT25208 entry size is 64 bytes */
    pseudo_bit_t	mtt_entry_sz[0x00010]; /* MTT entry size in Bytes for the device.
                                                 For the InfiniHost-III-EX MT25208 entry size is 8 bytes */
/* -------------- */
    pseudo_bit_t	bmme[0x00001];         /* Base Memory Management Extension Support */
    pseudo_bit_t	win_type[0x00001];     /* Bound Type 2 Memory Window Association mechanism:
                                                 0 - Type 2A - QP Number Association; or
                                                 1 - Type 2B - QP Number and PD Association. */
    pseudo_bit_t	mps[0x00001];          /* Ability of this HCA to support multiple page sizes per Memory Region. */
    pseudo_bit_t	bl[0x00001];           /* Ability of this HCA to support Block List Physical Buffer Lists. (The device does not supports Block List) */
    pseudo_bit_t	zb[0x00001];           /* Zero Based region/windows supported */
    pseudo_bit_t	lif[0x00001];          /* Ability of this HCA to support Local Invalidate Fencing. */
    pseudo_bit_t	reserved38[0x00002];
    pseudo_bit_t	log_pbl_sz[0x00006];   /* Log2 of the Maximum Physical Buffer List size in Bytes supported by this HCA when invoking the Allocate L_Key verb.
                                                  */
    pseudo_bit_t	reserved39[0x00012];
/* -------------- */
    pseudo_bit_t	resd_lkey[0x00020];    /* The value of the reserved Lkey for Base Memory Management Extension */
/* -------------- */
    pseudo_bit_t	lamr[0x00001];         /* When set the device requires local attached memory in order to operate.
                                                 When set,  ICM pages, Firmware Area and ICM auxiliary pages must be allocated in the local attached memory. */
    pseudo_bit_t	reserved40[0x0001f];
/* -------------- */
    pseudo_bit_t	max_icm_size_h[0x00020];/* Bits [63:32] of maximum ICM size InfiniHost III Ex support in bytes. */
/* -------------- */
    pseudo_bit_t	max_icm_size_l[0x00020];/* Bits [31:0] of maximum ICM size InfiniHost III Ex support in bytes. */
/* -------------- */
    pseudo_bit_t	reserved41[0x002c0];
/* -------------- */
};

/* QUERY_ADAPTER Parameters Block */

struct arbelprm_query_adapter_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
    pseudo_bit_t	reserved1[0x00018];
    pseudo_bit_t	intapin[0x00008];      /* Driver should set this field to INTR value in the event queue in order to get Express interrupt messages. */
/* -------------- */
    pseudo_bit_t	reserved2[0x00060];
/* -------------- */
    struct arbelprm_vsd_st	vsd;
/* -------------- */
};

/* QUERY_FW Parameters Block */

struct arbelprm_query_fw_st {	/* Little Endian */
    pseudo_bit_t	fw_rev_major[0x00010]; /* Firmware Revision - Major */
    pseudo_bit_t	fw_pages[0x00010];     /* Amount of physical memory to be allocated for FW usage is in 4KByte pages. */
/* -------------- */
    pseudo_bit_t	fw_rev_minor[0x00010]; /* Firmware Revision - Minor */
    pseudo_bit_t	fw_rev_subminor[0x00010];/* Firmware Sub-minor version (Patch level). */
/* -------------- */
    pseudo_bit_t	cmd_interface_rev[0x00010];/* Command Interface Interpreter Revision ID */
    pseudo_bit_t	reserved0[0x0000e];
    pseudo_bit_t	wqe_h_mode[0x00001];   /* Hermon mode. If '1', then WQE and AV format is the advanced format */
    pseudo_bit_t	zb_wq_cq[0x00001];     /* If '1', then ZB mode of WQ and CQ are enabled (i.e. real Memfree PRM is supported) */
/* -------------- */
    pseudo_bit_t	log_max_outstanding_cmd[0x00008];/* Log2 of the maximum number of commands the HCR can support simultaneously */
    pseudo_bit_t	reserved1[0x00017];
    pseudo_bit_t	dt[0x00001];           /* Debug Trace Support
                                                 0 - Debug trace is not supported 
                                                 1 - Debug trace is supported */
/* -------------- */
    pseudo_bit_t	cmd_interface_db[0x00001];/* Set if the device accepts commands by means of special doorbells */
    pseudo_bit_t	reserved2[0x0001f];
/* -------------- */
    pseudo_bit_t	reserved3[0x00060];
/* -------------- */
    pseudo_bit_t	clr_int_base_addr_h[0x00020];/* Bits [63:32] of Clear interrupt register physical address. 
                                                 Points to 64 bit register. */
/* -------------- */
    pseudo_bit_t	clr_int_base_addr_l[0x00020];/* Bits [31:0] of Clear interrupt register physical address. 
                                                 Points to 64 bit register. */
/* -------------- */
    pseudo_bit_t	reserved4[0x00040];
/* -------------- */
    pseudo_bit_t	error_buf_start_h[0x00020];/* Read Only buffer for catastrophic error reports (physical address) */
/* -------------- */
    pseudo_bit_t	error_buf_start_l[0x00020];/* Read Only buffer for catastrophic error reports (physical address) */
/* -------------- */
    pseudo_bit_t	error_buf_size[0x00020];/* Size in words */
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
    pseudo_bit_t	eq_arm_base_addr_h[0x00020];/* Bits [63:32] of EQ Arm DBs physical address. 
                                                 Points to 64 bit register.
                                                 Setting bit x in the offset, arms EQ number x.
                                                  */
/* -------------- */
    pseudo_bit_t	eq_arm_base_addr_l[0x00020];/* Bits [31:0] of EQ Arm DBs physical address. 
                                                 Points to 64 bit register.
                                                 Setting bit x in the offset, arms EQ number x. */
/* -------------- */
    pseudo_bit_t	eq_set_ci_base_addr_h[0x00020];/* Bits [63:32] of EQ Set CI DBs Table physical address.
                                                 Points to a the EQ Set CI DBs Table base address. */
/* -------------- */
    pseudo_bit_t	eq_set_ci_base_addr_l[0x00020];/* Bits [31:0] of EQ Set CI DBs Table physical address.
                                                 Points to a the EQ Set CI DBs Table base address. */
/* -------------- */
    pseudo_bit_t	cmd_db_dw1[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 1 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
    pseudo_bit_t	cmd_db_dw0[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 0 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	cmd_db_dw3[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 3 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
    pseudo_bit_t	cmd_db_dw2[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 2 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	cmd_db_dw5[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 5 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
    pseudo_bit_t	cmd_db_dw4[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 4 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	cmd_db_dw7[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 7 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
    pseudo_bit_t	cmd_db_dw6[0x00010];   /* offset in bytes from cmd_db_addr_base where DWord 6 of a Command Interface Doorbell should be written. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	cmd_db_addr_base_h[0x00020];/* High bits of cmd_db_addr_base, which cmd_db_dw offsets refer to. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	cmd_db_addr_base_l[0x00020];/* Low  bits of cmd_db_addr_base, which cmd_db_dw offsets refer to. Valid only if CmdInterfaceDb bit is '1' */
/* -------------- */
    pseudo_bit_t	reserved6[0x004c0];
/* -------------- */
};

/* ACCESS_LAM */

struct arbelprm_access_lam_st {	/* Little Endian */
    struct arbelprm_access_lam_inject_errors_st	access_lam_inject_errors;
/* -------------- */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
};

/* ENABLE_LAM Parameters Block */

struct arbelprm_enable_lam_st {	/* Little Endian */
    pseudo_bit_t	lam_start_adr_h[0x00020];/* LAM start address [63:32] */
/* -------------- */
    pseudo_bit_t	lam_start_adr_l[0x00020];/* LAM start address [31:0] */
/* -------------- */
    pseudo_bit_t	lam_end_adr_h[0x00020];/* LAM end address [63:32] */
/* -------------- */
    pseudo_bit_t	lam_end_adr_l[0x00020];/* LAM end address [31:0] */
/* -------------- */
    pseudo_bit_t	di[0x00002];           /* Data Integrity Configuration:
                                                 00 - none
                                                 01 - Parity
                                                 10 - ECC Detection Only
                                                 11 - ECC With Correction */
    pseudo_bit_t	ap[0x00002];           /* Auto Precharge Mode
                                                 00 - No auto precharge
                                                 01 - Auto precharge per transaction
                                                 10 - Auto precharge per 64 bytes
                                                 11 - reserved */
    pseudo_bit_t	dh[0x00001];           /* When set, LAM is Hidden and can not be accessed directly from the PCI bus. */
    pseudo_bit_t	reserved0[0x0001b];
/* -------------- */
    pseudo_bit_t	reserved1[0x00160];
/* -------------- */
    struct arbelprm_dimminfo_st	dimm0;  /* Logical DIMM 0 Parameters */
/* -------------- */
    struct arbelprm_dimminfo_st	dimm1;  /* Logical DIMM 1 Parameters */
/* -------------- */
    pseudo_bit_t	reserved2[0x00400];
/* -------------- */
};

/* Memory Access Parameters for UD Address Vector Table */

struct arbelprm_udavtable_memory_parameters_st {	/* Little Endian */
    pseudo_bit_t	l_key[0x00020];        /* L_Key used to access TPT */
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* PD used by TPT for matching against PD of region entry being accessed. */
    pseudo_bit_t	reserved0[0x00005];
    pseudo_bit_t	xlation_en[0x00001];   /* When cleared, address is physical address and no translation will be done. When set, address is virtual. */
    pseudo_bit_t	reserved1[0x00002];
/* -------------- */
};

/* INIT_HCA & QUERY_HCA Parameters Block */

struct arbelprm_init_hca_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00060];
/* -------------- */
    pseudo_bit_t	reserved1[0x00010];
    pseudo_bit_t	time_stamp_granularity[0x00008];/* This field controls the granularity in which CQE Timestamp counter is incremented.
                                                 The TimeStampGranularity units is 1/4 of a microseconds. (e.g is TimeStampGranularity is configured to 0x2, CQE Timestamp will be incremented every one microsecond)
                                                 When sets to Zero, timestamp reporting in the CQE is disabled.
                                                 This feature is currently not supported.
                                                  */
    pseudo_bit_t	hca_core_clock[0x00008];/* Internal Clock Period (in units of 1/16 ns) (QUERY_HCA only) */
/* -------------- */
    pseudo_bit_t	reserved2[0x00008];
    pseudo_bit_t	router_qp[0x00010];    /* Upper 16 bit to be used as a QP number for router mode. Low order 8 bits are taken from the TClass field of the incoming packet.
                                                 Valid only if RE bit is set */
    pseudo_bit_t	reserved3[0x00007];
    pseudo_bit_t	re[0x00001];           /* Router Mode Enable
                                                 If this bit is set, entire packet (including all headers and ICRC) will be considered as a data payload and will be scattered to memory as specified in the descriptor that is posted on the QP matching the TClass field of packet. */
/* -------------- */
    pseudo_bit_t	udp[0x00001];          /* UD Port Check Enable
                                                 0 - Port field in Address Vector is ignored
                                                 1 - HCA will check the port field in AV entry (fetched for UD descriptor) against the Port of the UD QP executing the descriptor. */
    pseudo_bit_t	he[0x00001];           /* Host Endianess - Used for Atomic Operations
                                                 0 - Host is Little Endian
                                                 1 - Host is Big endian
                                                  */
    pseudo_bit_t	reserved4[0x00001];
    pseudo_bit_t	ce[0x00001];           /* Checksum Enabled - when Set IPoverIB checksum generation & checking is enabled */
    pseudo_bit_t	sph[0x00001];          /* 0 - SW calculates TCP/UDP Pseudo-Header checksum and inserts it into the TCP/UDP checksum field when sending a packet
                                                 1 - HW calculates TCP/UDP Pseudo-Header checksum when sending a packet
                                                  */
    pseudo_bit_t	rph[0x00001];          /* 0 - Not HW calculation of TCP/UDP Pseudo-Header checksum are done when receiving a packet
                                                 1 - HW calculates TCP/UDP Pseudo-Header checksum when receiving a packet
                                                  */
    pseudo_bit_t	reserved5[0x00002];
    pseudo_bit_t	responder_exu[0x00004];/* Indicate the relation between the execution enegines allocation dedicated for responder versus the engines dedicated for reqvester .
                                                 responder_exu/16 = (number of responder exu engines)/(total number of engines)
                                                 Legal values are 0x0-0xF. 0 is "auto".
                                                 
                                                  */
    pseudo_bit_t	reserved6[0x00004];
    pseudo_bit_t	wqe_quota[0x0000f];    /* Maximum number of WQEs that are executed prior to preemption of execution unit. 0 - reserved. */
    pseudo_bit_t	wqe_quota_en[0x00001]; /* If set - wqe_quota field is used. If cleared - WQE quota is set to "auto" value */
/* -------------- */
    pseudo_bit_t	reserved7[0x00040];
/* -------------- */
    struct arbelprm_qpcbaseaddr_st	qpc_eec_cqc_eqc_rdb_parameters;
/* -------------- */
    pseudo_bit_t	reserved8[0x00100];
/* -------------- */
    struct arbelprm_multicastparam_st	multicast_parameters;
/* -------------- */
    pseudo_bit_t	reserved9[0x00080];
/* -------------- */
    struct arbelprm_tptparams_st	tpt_parameters;
/* -------------- */
    pseudo_bit_t	reserved10[0x00080];
/* -------------- */
    struct arbelprm_uar_params_st	uar_parameters;/* UAR Parameters */
/* -------------- */
    pseudo_bit_t	reserved11[0x00600];
/* -------------- */
};

/* Event Queue Context Table Entry */

struct arbelprm_eqc_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	st[0x00004];           /* Event delivery state machine
                                                 0x9 - Armed
                                                 0xA - Fired
                                                 0xB - Always_Armed (auto-rearm)
                                                 other - reserved */
    pseudo_bit_t	reserved1[0x00005];
    pseudo_bit_t	oi[0x00001];           /* Oerrun ignore.
                                                 If set, HW will not check EQ full condition when writing new EQEs. */
    pseudo_bit_t	tr[0x00001];           /* Translation Required. If set - EQ access undergo address translation. */
    pseudo_bit_t	reserved2[0x00005];
    pseudo_bit_t	owner[0x00004];        /* 0 - SW ownership
                                                 1 - HW ownership
                                                 Valid for the QUERY_EQ and HW2SW_EQ commands only */
    pseudo_bit_t	status[0x00004];       /* EQ status:
                                                 0000 - OK
                                                 1010 - EQ write failure
                                                 Valid for the QUERY_EQ and HW2SW_EQ commands only */
/* -------------- */
    pseudo_bit_t	start_address_h[0x00020];/* Start Address of Event Queue[63:32]. */
/* -------------- */
    pseudo_bit_t	start_address_l[0x00020];/* Start Address of Event Queue[31:0]. 
                                                 Must be aligned on 32-byte boundary */
/* -------------- */
    pseudo_bit_t	reserved3[0x00018];
    pseudo_bit_t	log_eq_size[0x00005];  /* Amount of entries in this EQ is 2^log_eq_size.
                                                 Log_eq_size must be bigger than 1.
                                                 Maximum EQ size is 2^17 EQEs (max Log_eq_size is 17). */
    pseudo_bit_t	reserved4[0x00003];
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
    pseudo_bit_t	intr[0x00008];         /* Interrupt (message) to be generated to report event to INT layer.
                                                 00iiiiii - set to INTA given in QUERY_ADAPTER in order to generate INTA messages on Express.
                                                 10jjjjjj - specificies type of interrupt message to be generated (total 64 different messages supported).
                                                 All other values are reserved and should not be used.
                                                 
                                                 If interrupt generation is not required, ST field must be set upon creation to Fired state. No EQ arming doorbell should be performed. In this case hardware will not generate any interrupt. */
    pseudo_bit_t	reserved6[0x00018];
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* PD to be used to access EQ */
    pseudo_bit_t	reserved7[0x00008];
/* -------------- */
    pseudo_bit_t	lkey[0x00020];         /* Memory key (L-Key) to be used to access EQ */
/* -------------- */
    pseudo_bit_t	reserved8[0x00040];
/* -------------- */
    pseudo_bit_t	consumer_indx[0x00020];/* Contains next entry to be read upon polling the event queue.
                                                 Must be initalized to zero while opening EQ */
/* -------------- */
    pseudo_bit_t	producer_indx[0x00020];/* Contains next entry in EQ to be written by the HCA.
                                                 Must be initalized to zero while opening EQ. */
/* -------------- */
    pseudo_bit_t	reserved9[0x00080];
/* -------------- */
};

/* Memory Translation Table (MTT) Entry */

struct arbelprm_mtt_st {	/* Little Endian */
    pseudo_bit_t	ptag_h[0x00020];       /* High-order bits of physical tag. The size of the field depends on the page size of the region. Maximum PTAG size is 52 bits. */
/* -------------- */
    pseudo_bit_t	p[0x00001];            /* Present bit. If set, page entry is valid. If cleared, access to this page will generate non-present page access fault. */
    pseudo_bit_t	reserved0[0x0000b];
    pseudo_bit_t	ptag_l[0x00014];       /* Low-order bits of Physical tag. The size of the field depends on the page size of the region. Maximum PTAG size is 52 bits. */
/* -------------- */
};

/* Memory Protection Table (MPT) Entry */

struct arbelprm_mpt_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	r_w[0x00001];          /* Defines whether this entry is Region (1) or Window (0) */
    pseudo_bit_t	pa[0x00001];           /* Physical address. If set, no virtual-to-physical address translation will be performed for this region */
    pseudo_bit_t	lr[0x00001];           /* If set - local read access enabled */
    pseudo_bit_t	lw[0x00001];           /* If set - local write access enabled */
    pseudo_bit_t	rr[0x00001];           /* If set - remote read access enabled. */
    pseudo_bit_t	rw[0x00001];           /* If set - remote write access enabled */
    pseudo_bit_t	a[0x00001];            /* If set - remote Atomic access is enabled */
    pseudo_bit_t	eb[0x00001];           /* If set - Bind is enabled. Valid for region entry only. */
    pseudo_bit_t	reserved1[0x0000c];
    pseudo_bit_t	status[0x00004];       /* Region/Window Status
                                                 0xF - not valid (SW ownership)
                                                 0x3 - FREE state
                                                 else - HW ownership
                                                 Unbound Type I windows are doneted reg_wnd_len field equals zero.
                                                 Unbound Type II windows are donated by Status=FREE. */
/* -------------- */
    pseudo_bit_t	page_size[0x00005];    /* Page size used for the region. Actual size is [4K]*2^Page_size bytes.
                                                 page_size should be less than 20. */
    pseudo_bit_t	reserved2[0x00002];
    pseudo_bit_t	type[0x00001];         /* Applicable for windows only, must be zero for regions
                                                 0 - Type one window
                                                 1 - Type two window */
    pseudo_bit_t	qpn[0x00018];          /* QP number this MW is attached to. Valid for type2 memory windows and on QUERY_MPT only */
/* -------------- */
    pseudo_bit_t	mem_key[0x00020];      /* The memory Key. The field holds the mem_key field in the following semantics: {key[7:0],key[31:8]}.
                                                  */
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* Protection Domain */
    pseudo_bit_t	reserved3[0x00001];
    pseudo_bit_t	ei[0x00001];           /* Enable Invalidation - When set, Local/Remote invalidation can be executed on this window/region. 
                                                 Must be set for type2 windows and non-shared physical memory regions.
                                                 Must be clear for regions that are used to access Work Queues, Completion Queues and Event Queues */
    pseudo_bit_t	zb[0x00001];           /* When set, this region is Zero Based Region */
    pseudo_bit_t	fre[0x00001];          /* When set, Fast Registration Operations can be executed on this region */
    pseudo_bit_t	rae[0x00001];          /* When set, remote access can be enabled on this region.
                                                 Used when executing Fast Registration Work Request to validate that remote access rights can be granted to this MPT. 
                                                 If the bit is cleared, Fast Registration Work Request requesting remote access rights will fail.
                                                  */
    pseudo_bit_t	reserved4[0x00003];
/* -------------- */
    pseudo_bit_t	start_address_h[0x00020];/* Start Address[63:32] - Virtual Address where this region/window starts */
/* -------------- */
    pseudo_bit_t	start_address_l[0x00020];/* Start Address[31:0] - Virtual Address where this region/window starts */
/* -------------- */
    pseudo_bit_t	reg_wnd_len_h[0x00020];/* Region/Window Length[63:32] */
/* -------------- */
    pseudo_bit_t	reg_wnd_len_l[0x00020];/* Region/Window Length[31:0] */
/* -------------- */
    pseudo_bit_t	lkey[0x00020];         /* Must be 0 for SW2HW_MPT.
                                                 On QUERY_MPT and HW2SW_MPT commands for Memory Window it reflects the LKey of the Region that the Window is bound to.
                                                 The field holds the lkey field in the following semantics: {key[7:0],key[31:8]}. */
/* -------------- */
    pseudo_bit_t	win_cnt[0x00020];      /* Number of windows bound to this region. Valid for regions only.
                                                 The field is valid only for the QUERY_MPT and HW2SW_MPT commands. */
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
    pseudo_bit_t	mtt_adr_h[0x00006];    /* Base (first) address of the MTT relative to MTT base in the ICM */
    pseudo_bit_t	reserved6[0x0001a];
/* -------------- */
    pseudo_bit_t	reserved7[0x00003];
    pseudo_bit_t	mtt_adr_l[0x0001d];    /* Base (first) address of the MTT relative to MTT base address in the ICM. Must be aligned on 8 bytes. */
/* -------------- */
    pseudo_bit_t	mtt_sz[0x00020];       /* Number of MTT entries allocated for this MR.
                                                 When Fast Registration Operations can not be executed on this region (FRE bit is zero) this field is reserved.
                                                 When Fast Registration Operation is enabled (FRE bit is set) this field indicates the number of MTTs allocated for this MR. If mtt_sz value  is zero, there is no limit for the numbers of MTTs and the HCA does not check this field when executing fast register WQE. */
/* -------------- */
    pseudo_bit_t	reserved8[0x00040];
/* -------------- */
};

/* Completion Queue Context Table Entry */

struct arbelprm_completion_queue_context_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	st[0x00004];           /* Event delivery state machine
                                                 0x0 - reserved
                                                 0x9 - ARMED (Request for Notification)
                                                 0x6 - ARMED SOLICITED (Request Solicited Notification)
                                                 0xA - FIRED
                                                 other - reserved
                                                 
                                                 Must be 0x0 in CQ initialization.
                                                 Valid for the QUERY_CQ and HW2SW_CQ commands only. */
    pseudo_bit_t	reserved1[0x00005];
    pseudo_bit_t	oi[0x00001];           /* When set, overrun ignore is enabled.
                                                 When set, Updates of CQ consumer counter (poll for completion) or Request completion notifications (Arm CQ) doorbells should not be rang on that CQ. */
    pseudo_bit_t	reserved2[0x0000a];
    pseudo_bit_t	status[0x00004];       /* CQ status
                                                 0000 - OK
                                                 1001 - CQ overflow
                                                 1010 - CQ write failure
                                                 Valid for the QUERY_CQ and HW2SW_CQ commands only */
/* -------------- */
    pseudo_bit_t	start_address_h[0x00020];/* Start address of CQ[63:32]. 
                                                 Must be aligned on CQE size (32 bytes) */
/* -------------- */
    pseudo_bit_t	start_address_l[0x00020];/* Start address of CQ[31:0]. 
                                                 Must be aligned on CQE size (32 bytes) */
/* -------------- */
    pseudo_bit_t	usr_page[0x00018];     /* UAR page this CQ can be accessed through (ringinig CQ doorbells) */
    pseudo_bit_t	log_cq_size[0x00005];  /* Log (base 2) of the CQ size (in entries).
                                                 Maximum CQ size is 2^17 CQEs (max log_cq_size is 17) */
    pseudo_bit_t	reserved3[0x00003];
/* -------------- */
    pseudo_bit_t	reserved4[0x00020];
/* -------------- */
    pseudo_bit_t	c_eqn[0x00008];        /* Event Queue this CQ reports completion events to.
                                                 Valid values are 0 to 63
                                                 If configured to value other than 0-63, completion events will not be reported on the CQ. */
    pseudo_bit_t	reserved5[0x00018];
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* Protection Domain to be used to access CQ.
                                                 Must be the same PD of the CQ L_Key. */
    pseudo_bit_t	reserved6[0x00008];
/* -------------- */
    pseudo_bit_t	l_key[0x00020];        /* Memory key (L_Key) to be used to access CQ */
/* -------------- */
    pseudo_bit_t	last_notified_indx[0x00020];/* Maintained by HW.
                                                 Valid for QUERY_CQ and HW2SW_CQ commands only. */
/* -------------- */
    pseudo_bit_t	solicit_producer_indx[0x00020];/* Maintained by HW.
                                                 Valid for QUERY_CQ and HW2SW_CQ commands only. 
                                                  */
/* -------------- */
    pseudo_bit_t	consumer_counter[0x00020];/* Consumer counter is a 32bits counter that is incremented for each CQE pooled from the CQ.
                                                 Must be 0x0 in CQ initialization.
                                                 Valid for the QUERY_CQ and HW2SW_CQ commands only. */
/* -------------- */
    pseudo_bit_t	producer_counter[0x00020];/* Producer counter is a 32bits counter that is incremented for each CQE that is written by the HW to the CQ.
                                                 CQ overrun is reported if Producer_counter + 1 equals to Consumer_counter and a CQE needs to be added..
                                                 Maintained by HW (valid for the QUERY_CQ and HW2SW_CQ commands only) */
/* -------------- */
    pseudo_bit_t	cqn[0x00018];          /* CQ number. Least significant bits are constrained by the position of this CQ in CQC table
                                                 Valid for the QUERY_CQ and HW2SW_CQ commands only */
    pseudo_bit_t	reserved7[0x00008];
/* -------------- */
    pseudo_bit_t	cq_ci_db_record[0x00020];/* Index in the UAR Context Table Entry.
                                                 HW uses this index as an offset from the UAR Context Table Entry in order to read this CQ Consumer Counter doorbell record.
                                                 This value can be retrieved from the HW in the QUERY_CQ command. */
/* -------------- */
    pseudo_bit_t	cq_state_db_record[0x00020];/* Index in the UAR Context Table Entry.
                                                 HW uses this index as an offset from the UAR Context Table Entry in order to read this CQ state doorbell record.
                                                 This value can be retrieved from the HW in the QUERY_CQ command. */
/* -------------- */
    pseudo_bit_t	reserved8[0x00020];
/* -------------- */
};

/* GPIO_event_data */

struct arbelprm_gpio_event_data_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00060];
/* -------------- */
    pseudo_bit_t	gpio_event_hi[0x00020];/* If any bit is set to 1, then a rising/falling event has occurred on the corrsponding GPIO pin. */
/* -------------- */
    pseudo_bit_t	gpio_event_lo[0x00020];/* If any bit is set to 1, then a rising/falling event has occurred on the corrsponding GPIO pin. */
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
};

/* Event_data Field - QP/EE Events */

struct arbelprm_qp_ee_event_st {	/* Little Endian */
    pseudo_bit_t	qpn_een[0x00018];      /* QP/EE/SRQ number event is reported for */
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
    pseudo_bit_t	reserved2[0x0001c];
    pseudo_bit_t	e_q[0x00001];          /* If set - EEN if cleared - QP in the QPN/EEN field
                                                 Not valid on SRQ events */
    pseudo_bit_t	reserved3[0x00003];
/* -------------- */
    pseudo_bit_t	reserved4[0x00060];
/* -------------- */
};

/* InfiniHost-III-EX Type0 Configuration Header */

struct arbelprm_mt25208_type0_st {	/* Little Endian */
    pseudo_bit_t	vendor_id[0x00010];    /* Hardwired to 0x15B3 */
    pseudo_bit_t	device_id[0x00010];    /* 25208 (decimal) - InfiniHost-III compatible mode
                                                 25218 (decimal) - InfiniHost-III EX mode (the mode described in this manual)
                                                 25209 (decimal) - Flash burner mode - see Flash burning application note for further details on this mode
                                                  */
/* -------------- */
    pseudo_bit_t	command[0x00010];      /* PCI Command Register */
    pseudo_bit_t	status[0x00010];       /* PCI Status Register */
/* -------------- */
    pseudo_bit_t	revision_id[0x00008];
    pseudo_bit_t	class_code_hca_class_code[0x00018];
/* -------------- */
    pseudo_bit_t	cache_line_size[0x00008];/* Cache Line Size */
    pseudo_bit_t	latency_timer[0x00008];
    pseudo_bit_t	header_type[0x00008];  /* hardwired to zero */
    pseudo_bit_t	bist[0x00008];
/* -------------- */
    pseudo_bit_t	bar0_ctrl[0x00004];    /* hard-wired to 0100 */
    pseudo_bit_t	reserved0[0x00010];
    pseudo_bit_t	bar0_l[0x0000c];       /* Lower bits of BAR0 (Device Configuration Space) */
/* -------------- */
    pseudo_bit_t	bar0_h[0x00020];       /* Upper 32 bits of BAR0 (Device Configuration Space) */
/* -------------- */
    pseudo_bit_t	bar1_ctrl[0x00004];    /* Hardwired to 1100 */
    pseudo_bit_t	reserved1[0x00010];
    pseudo_bit_t	bar1_l[0x0000c];       /* Lower bits of BAR1 (User Access Region - UAR - space) */
/* -------------- */
    pseudo_bit_t	bar1_h[0x00020];       /* upper 32 bits of BAR1 (User Access Region - UAR - space) */
/* -------------- */
    pseudo_bit_t	bar2_ctrl[0x00004];    /* Hardwired to 1100 */
    pseudo_bit_t	reserved2[0x00010];
    pseudo_bit_t	bar2_l[0x0000c];       /* Lower bits of BAR2 - Local Attached Memory if present and enabled. Else zeroed. */
/* -------------- */
    pseudo_bit_t	bar2_h[0x00020];       /* Upper 32 bits of BAR2 - Local Attached Memory if present and enabled. Else zeroed. */
/* -------------- */
    pseudo_bit_t	cardbus_cis_pointer[0x00020];
/* -------------- */
    pseudo_bit_t	subsystem_vendor_id[0x00010];/* Specified by the device NVMEM configuration */
    pseudo_bit_t	subsystem_id[0x00010]; /* Specified by the device NVMEM configuration */
/* -------------- */
    pseudo_bit_t	expansion_rom_enable[0x00001];/* Expansion ROM Enable. Hardwired to 0 if expansion ROM is disabled in the device NVMEM configuration. */
    pseudo_bit_t	reserved3[0x0000a];
    pseudo_bit_t	expansion_rom_base_address[0x00015];/* Expansion ROM Base Address (upper 21 bit). Hardwired to 0 if expansion ROM is disabled in the device NVMEM configuration. */
/* -------------- */
    pseudo_bit_t	capabilities_pointer[0x00008];/* Specified by the device NVMEM configuration */
    pseudo_bit_t	reserved4[0x00018];
/* -------------- */
    pseudo_bit_t	reserved5[0x00020];
/* -------------- */
    pseudo_bit_t	interrupt_line[0x00008];
    pseudo_bit_t	interrupt_pin[0x00008];
    pseudo_bit_t	min_gnt[0x00008];
    pseudo_bit_t	max_latency[0x00008];
/* -------------- */
    pseudo_bit_t	reserved6[0x00100];
/* -------------- */
    pseudo_bit_t	msi_cap_id[0x00008];
    pseudo_bit_t	msi_next_cap_ptr[0x00008];
    pseudo_bit_t	msi_en[0x00001];
    pseudo_bit_t	multiple_msg_cap[0x00003];
    pseudo_bit_t	multiple_msg_en[0x00003];
    pseudo_bit_t	cap_64_bit_addr[0x00001];
    pseudo_bit_t	reserved7[0x00008];
/* -------------- */
    pseudo_bit_t	msg_addr_l[0x00020];
/* -------------- */
    pseudo_bit_t	msg_addr_h[0x00020];
/* -------------- */
    pseudo_bit_t	msg_data[0x00010];
    pseudo_bit_t	reserved8[0x00010];
/* -------------- */
    pseudo_bit_t	reserved9[0x00080];
/* -------------- */
    pseudo_bit_t	pm_cap_id[0x00008];    /* Power management capability ID - 01h */
    pseudo_bit_t	pm_next_cap_ptr[0x00008];
    pseudo_bit_t	pm_cap[0x00010];       /* [2:0] Version - 02h
                                                 [3] PME clock - 0h
                                                 [4] RsvP
                                                 [5] Device specific initialization - 0h
                                                 [8:6] AUX current - 0h
                                                 [9] D1 support - 0h
                                                 [10] D2 support - 0h
                                                 [15:11] PME support - 0h */
/* -------------- */
    pseudo_bit_t	pm_status_control[0x00010];/* [14:13] - Data scale - 0h */
    pseudo_bit_t	pm_control_status_brdg_ext[0x00008];
    pseudo_bit_t	data[0x00008];
/* -------------- */
    pseudo_bit_t	reserved10[0x00040];
/* -------------- */
    pseudo_bit_t	vpd_cap_id[0x00008];   /* 03h */
    pseudo_bit_t	vpd_next_cap_id[0x00008];
    pseudo_bit_t	vpd_address[0x0000f];
    pseudo_bit_t	f[0x00001];
/* -------------- */
    pseudo_bit_t	vpd_data[0x00020];
/* -------------- */
    pseudo_bit_t	reserved11[0x00040];
/* -------------- */
    pseudo_bit_t	pciex_cap_id[0x00008]; /* PCI-Express capability ID - 10h */
    pseudo_bit_t	pciex_next_cap_ptr[0x00008];
    pseudo_bit_t	pciex_cap[0x00010];    /* [3:0] Capability version - 1h
                                                 [7:4] Device/Port Type - 0h
                                                 [8] Slot implemented - 0h
                                                 [13:9] Interrupt message number
                                                  */
/* -------------- */
    pseudo_bit_t	device_cap[0x00020];   /* [2:0] Max_Payload_Size supported - 2h
                                                 [4:3] Phantom Function supported - 0h
                                                 [5] Extended Tag Filed supported - 0h
                                                 [8:6] Endpoint L0s Acceptable Latency - TBD
                                                 [11:9] Endpoint L1 Acceptable Latency - TBD
                                                 [12] Attention Button Present - configured through InfiniBurn
                                                 [13] Attention Indicator Present - configured through InfiniBurn
                                                 [14] Power Indicator Present - configured through InfiniBurn
                                                 [25:18] Captured Slot Power Limit Value
                                                 [27:26] Captured Slot Power Limit Scale */
/* -------------- */
    pseudo_bit_t	device_control[0x00010];
    pseudo_bit_t	device_status[0x00010];
/* -------------- */
    pseudo_bit_t	link_cap[0x00020];     /* [3:0] Maximum Link Speed - 1h
                                                 [9:4] Maximum Link Width - 8h
                                                 [11:10] Active State Power Management Support - 3h
                                                 [14:12] L0s Exit Latency - TBD
                                                 [17:15] L1 Exit Latency - TBD
                                                 [31:24] Port Number - 0h */
/* -------------- */
    pseudo_bit_t	link_control[0x00010];
    pseudo_bit_t	link_status[0x00010];  /* [3:0] Link Speed - 1h
                                                 [9:4] Negotiated Link Width
                                                 [12] Slot clock configuration - 1h */
/* -------------- */
    pseudo_bit_t	reserved12[0x00260];
/* -------------- */
    pseudo_bit_t	advanced_error_reporting_cap_id[0x00010];/* 0001h. */
    pseudo_bit_t	capability_version[0x00004];/* 1h */
    pseudo_bit_t	next_capability_offset[0x0000c];/* 0h */
/* -------------- */
    pseudo_bit_t	uncorrectable_error_status_register[0x00020];/* 0 Training Error Status
                                                 4 Data Link Protocol Error Status
                                                 12 Poisoned TLP Status 
                                                 13 Flow Control Protocol Error Status 
                                                 14 Completion Timeout Status 
                                                 15 Completer Abort Status 
                                                 16 Unexpected Completion Status 
                                                 17 Receiver Overflow Status 
                                                 18 Malformed TLP Status 
                                                 19 ECRC Error Status 
                                                 20 Unsupported Request Error Status */
/* -------------- */
    pseudo_bit_t	uncorrectable_error_mask_register[0x00020];/* 0 Training Error Mask
                                                 4 Data Link Protocol Error Mask
                                                 12 Poisoned TLP Mask 
                                                 13 Flow Control Protocol Error Mask
                                                 14 Completion Timeout Mask
                                                 15 Completer Abort Mask
                                                 16 Unexpected Completion Mask
                                                 17 Receiver Overflow Mask
                                                 18 Malformed TLP Mask
                                                 19 ECRC Error Mask
                                                 20 Unsupported Request Error Mask */
/* -------------- */
    pseudo_bit_t	uncorrectable_severity_mask_register[0x00020];/* 0 Training Error Severity
                                                 4 Data Link Protocol Error Severity
                                                 12 Poisoned TLP Severity
                                                 13 Flow Control Protocol Error Severity
                                                 14 Completion Timeout Severity
                                                 15 Completer Abort Severity
                                                 16 Unexpected Completion Severity
                                                 17 Receiver Overflow Severity
                                                 18 Malformed TLP Severity
                                                 19 ECRC Error Severity
                                                 20 Unsupported Request Error Severity */
/* -------------- */
    pseudo_bit_t	correctable_error_status_register[0x00020];/* 0 Receiver Error Status
                                                 6 Bad TLP Status
                                                 7 Bad DLLP Status
                                                 8 REPLAY_NUM Rollover Status
                                                 12 Replay Timer Timeout Status */
/* -------------- */
    pseudo_bit_t	correctable_error_mask_register[0x00020];/* 0 Receiver Error Mask
                                                 6 Bad TLP Mask
                                                 7 Bad DLLP Mask
                                                 8 REPLAY_NUM Rollover Mask
                                                 12 Replay Timer Timeout Mask */
/* -------------- */
    pseudo_bit_t	advance_error_capabilities_and_control_register[0x00020];
/* -------------- */
    struct arbelprm_header_log_register_st	header_log_register;
/* -------------- */
    pseudo_bit_t	reserved13[0x006a0];
/* -------------- */
};

/* Event Data Field - Performance Monitor */

struct arbelprm_performance_monitor_event_st {	/* Little Endian */
    struct arbelprm_performance_monitors_st	performance_monitor_snapshot;/* Performance monitor snapshot */
/* -------------- */
    pseudo_bit_t	monitor_number[0x00008];/* 0x01 - SQPC
                                                 0x02 - RQPC
                                                 0x03 - CQC
                                                 0x04 - Rkey
                                                 0x05 - TLB
                                                 0x06 - port0
                                                 0x07 - port1 */
    pseudo_bit_t	reserved0[0x00018];
/* -------------- */
    pseudo_bit_t	reserved1[0x00040];
/* -------------- */
};

/* Event_data Field - Page Faults */

struct arbelprm_page_fault_event_data_st {	/* Little Endian */
    pseudo_bit_t	va_h[0x00020];         /* Virtual Address[63:32] this page fault is reported on */
/* -------------- */
    pseudo_bit_t	va_l[0x00020];         /* Virtual Address[63:32] this page fault is reported on */
/* -------------- */
    pseudo_bit_t	mem_key[0x00020];      /* Memory Key this page fault is reported on */
/* -------------- */
    pseudo_bit_t	qp[0x00018];           /* QP this page fault is reported on */
    pseudo_bit_t	reserved0[0x00003];
    pseudo_bit_t	a[0x00001];            /* If set the memory access that caused the page fault was atomic */
    pseudo_bit_t	lw[0x00001];           /* If set the memory access that caused the page fault was local write */
    pseudo_bit_t	lr[0x00001];           /* If set the memory access that caused the page fault was local read */
    pseudo_bit_t	rw[0x00001];           /* If set the memory access that caused the page fault was remote write */
    pseudo_bit_t	rr[0x00001];           /* If set the memory access that caused the page fault was remote read */
/* -------------- */
    pseudo_bit_t	pd[0x00018];           /* PD this page fault is reported on */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	prefetch_len[0x00020]; /* Indicates how many subsequent pages in the same memory region/window will be accessed by the following transaction after this page fault is resolved. measured in bytes. SW can use this information in order to page-in the subsequent pages if they are not present. */
/* -------------- */
};

/* WQE segments format */

struct arbelprm_wqe_segment_st {	/* Little Endian */
    struct arbelprm_send_wqe_segment_st	send_wqe_segment;/* Send WQE segment format */
/* -------------- */
    pseudo_bit_t	reserved0[0x00280];
/* -------------- */
    struct arbelprm_wqe_segment_ctrl_mlx_st	mlx_wqe_segment_ctrl;/* MLX WQE segment format */
/* -------------- */
    pseudo_bit_t	reserved1[0x00100];
/* -------------- */
    struct arbelprm_wqe_segment_ctrl_recv_st	recv_wqe_segment_ctrl;/* Receive segment format */
/* -------------- */
    pseudo_bit_t	reserved2[0x00080];
/* -------------- */
};

/* Event_data Field - Port State Change */

struct arbelprm_port_state_change_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
    pseudo_bit_t	reserved1[0x0001c];
    pseudo_bit_t	p[0x00002];            /* Port number (1 or 2) */
    pseudo_bit_t	reserved2[0x00002];
/* -------------- */
    pseudo_bit_t	reserved3[0x00060];
/* -------------- */
};

/* Event_data Field - Completion Queue Error */

struct arbelprm_completion_queue_error_st {	/* Little Endian */
    pseudo_bit_t	cqn[0x00018];          /* CQ number event is reported for */
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	reserved1[0x00020];
/* -------------- */
    pseudo_bit_t	syndrome[0x00008];     /* Error syndrome
                                                 0x01 - CQ overrun
                                                 0x02 - CQ access violation error */
    pseudo_bit_t	reserved2[0x00018];
/* -------------- */
    pseudo_bit_t	reserved3[0x00060];
/* -------------- */
};

/* Event_data Field - Completion Event */

struct arbelprm_completion_event_st {	/* Little Endian */
    pseudo_bit_t	cqn[0x00018];          /* CQ number event is reported for */
    pseudo_bit_t	reserved0[0x00008];
/* -------------- */
    pseudo_bit_t	reserved1[0x000a0];
/* -------------- */
};

/* Event Queue Entry */

struct arbelprm_event_queue_entry_st {	/* Little Endian */
    pseudo_bit_t	event_sub_type[0x00008];/* Event Sub Type. 
                                                 Defined for events which have sub types, zero elsewhere. */
    pseudo_bit_t	reserved0[0x00008];
    pseudo_bit_t	event_type[0x00008];   /* Event Type */
    pseudo_bit_t	reserved1[0x00008];
/* -------------- */
    pseudo_bit_t	event_data[6][0x00020];/* Delivers auxilary data to handle event. */
/* -------------- */
    pseudo_bit_t	reserved2[0x00007];
    pseudo_bit_t	owner[0x00001];        /* Owner of the entry 
                                                 0 SW 
                                                 1 HW */
    pseudo_bit_t	reserved3[0x00018];
/* -------------- */
};

/* QP/EE State Transitions Command Parameters */

struct arbelprm_qp_ee_state_transitions_st {	/* Little Endian */
    pseudo_bit_t	opt_param_mask[0x00020];/* This field defines which optional parameters are passed. Each bit specifies whether optional parameter is passed (set) or not (cleared). The optparammask is defined for each QP/EE command. */
/* -------------- */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
    struct arbelprm_queue_pair_ee_context_entry_st	qpc_eec_data;/* QPC/EEC data */
/* -------------- */
    pseudo_bit_t	reserved1[0x009c0];
/* -------------- */
};

/* Completion Queue Entry Format */

struct arbelprm_completion_queue_entry_st {	/* Little Endian */
    pseudo_bit_t	my_qpn[0x00018];       /* Indicates the QP for which completion is being reported */
    pseudo_bit_t	reserved0[0x00004];
    pseudo_bit_t	ver[0x00004];          /* CQE version. 
                                                 0 for InfiniHost-III-EX */
/* -------------- */
    pseudo_bit_t	my_ee[0x00018];        /* EE context (for RD only).
                                                 Invalid for Bind and Nop operation on RD.
                                                 For non RD services this filed reports the CQE timestamp. The Timestamp is a free running counter that is incremented every TimeStampGranularity tick. The counter rolls-over when it reaches saturation. TimeStampGranularity is configured in the INIT_HCA command. This feature is currently not supported.
                                                  */
    pseudo_bit_t	checksum_15_8[0x00008];/* Checksum[15:8] - See IPoverIB checksum offloading chapter */
/* -------------- */
    pseudo_bit_t	rqpn[0x00018];         /* Remote (source) QP number. Valid in Responder CQE only for Datagram QP. */
    pseudo_bit_t	checksum_7_0[0x00008]; /* Checksum[7:0] - See IPoverIB checksum offloading chapter */
/* -------------- */
    pseudo_bit_t	rlid[0x00010];         /* Remote (source) LID of the message. Valid in Responder of UD QP CQE only. */
    pseudo_bit_t	ml_path[0x00007];      /* My (destination) LID path bits - these are the lowemost LMC bits of the DLID in an incoming UD packet, higher bits of this field, that are not part of the LMC bits are zeroed by HW.
                                                 Valid in responder of UD QP CQE only.
                                                 Invalid if incoming message DLID is the permissive LID or incoming message is multicast. */
    pseudo_bit_t	g[0x00001];            /* GRH present indicator. Valid in Responder of UD QP CQE only. */
    pseudo_bit_t	ipok[0x00001];         /* IP OK - See IPoverIB checksum offloading chapter */
    pseudo_bit_t	reserved1[0x00003];
    pseudo_bit_t	sl[0x00004];           /* Service Level of the message. Valid in Responder of UD QP CQE only. */
/* -------------- */
    pseudo_bit_t	immediate_ethertype_pkey_indx_eecredits[0x00020];/* Valid for receive queue completion only. 
                                                 If Opcode field indicates that this was send/write with immediate, this field contains immediate field of the packet. 
                                                 If completion corresponds to RAW receive queue, bits 15:0 contain Ethertype field of the packet. 
                                                 If completion corresponds to GSI receive queue, bits 31:16 contain index in PKey table that matches PKey of the message arrived. 
                                                 If Opcode field indicates that this was send and invalidate, this field contains the key that was invalidated.
                                                 For CQE of send queue of the reliable connection service (but send and invalide), bits [4:0] of this field contain the encoded EEcredits received in last ACK of the message. */
/* -------------- */
    pseudo_bit_t	byte_cnt[0x00020];     /* Byte count of data actually transferred (valid for receive queue completions only) */
/* -------------- */
    pseudo_bit_t	reserved2[0x00006];
    pseudo_bit_t	wqe_adr[0x0001a];      /* Bits 31:6 of WQE virtual address completion is reported for. The 6 least significant bits are zero. */
/* -------------- */
    pseudo_bit_t	reserved3[0x00007];
    pseudo_bit_t	owner[0x00001];        /* Owner field. Zero value of this field means SW ownership of CQE. */
    pseudo_bit_t	reserved4[0x0000f];
    pseudo_bit_t	s[0x00001];            /* If set, completion is reported for Send queue, if cleared - receive queue. */
    pseudo_bit_t	opcode[0x00008];       /* The opcode of WQE completion is reported for.
                                                 For CQEs corresponding to send completion, NOPCODE field of the WQE is copied to this field.
                                                 For CQEs corresponding to receive completions, opcode field of last packet in the message copied to this field.
                                                 For CQEs corresponding to the receive queue of QPs mapped to QP1, the opcode will be SEND with Immediate (messages are guaranteed to be SEND only)
                                                 
                                                 The following values are reported in case of completion with error:
                                                 0xFE - For completion with error on Receive Queues
                                                 0xFF - For completion with error on Send Queues */
/* -------------- */
};

/*  */

struct arbelprm_ecc_detect_event_data_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
    pseudo_bit_t	cause_lsb[0x00001];
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	cause_msb[0x00001];
    pseudo_bit_t	reserved2[0x00002];
    pseudo_bit_t	err_rmw[0x00001];
    pseudo_bit_t	err_src_id[0x00003];
    pseudo_bit_t	err_da[0x00002];
    pseudo_bit_t	err_ba[0x00002];
    pseudo_bit_t	reserved3[0x00011];
    pseudo_bit_t	overflow[0x00001];
/* -------------- */
    pseudo_bit_t	err_ra[0x00010];
    pseudo_bit_t	err_ca[0x00010];
/* -------------- */
};

/* Event_data Field - ECC Detection Event */

struct arbelprm_scrubbing_event_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00080];
/* -------------- */
    pseudo_bit_t	cause_lsb[0x00001];    /* data integrity error cause:
                                                 single ECC error in the 64bit lsb data, on the rise edge of the clock */
    pseudo_bit_t	reserved1[0x00002];
    pseudo_bit_t	cause_msb[0x00001];    /* data integrity error cause:
                                                 single ECC error in the 64bit msb data, on the fall edge of the clock */
    pseudo_bit_t	reserved2[0x00002];
    pseudo_bit_t	err_rmw[0x00001];      /* transaction type:
                                                 0 - read
                                                 1 - read/modify/write */
    pseudo_bit_t	err_src_id[0x00003];   /* source of the transaction: 0x4 - PCI, other - internal or IB */
    pseudo_bit_t	err_da[0x00002];       /* Error DIMM address */
    pseudo_bit_t	err_ba[0x00002];       /* Error bank address */
    pseudo_bit_t	reserved3[0x00011];
    pseudo_bit_t	overflow[0x00001];     /* Fatal: ECC error FIFO overflow - ECC errors were detected, which may or may not have been corrected by InfiniHost-III-EX */
/* -------------- */
    pseudo_bit_t	err_ra[0x00010];       /* Error row address */
    pseudo_bit_t	err_ca[0x00010];       /* Error column address */
/* -------------- */
};

/* Miscellaneous Counters */

struct arbelprm_misc_counters_st {	/* Little Endian */
    pseudo_bit_t	ddr_scan_cnt[0x00020]; /* Number of times whole of LAM was scanned */
/* -------------- */
    pseudo_bit_t	reserved0[0x007e0];
/* -------------- */
};

/* LAM_EN Output Parameter */

struct arbelprm_lam_en_out_param_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00040];
/* -------------- */
};

/* Extended_Completion_Queue_Entry */

struct arbelprm_extended_completion_queue_entry_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
};

/*  */

struct arbelprm_eq_cmd_doorbell_st {	/* Little Endian */
    pseudo_bit_t	reserved0[0x00020];
/* -------------- */
};

/* 0 */

struct arbelprm_arbel_prm_st {	/* Little Endian */
    struct arbelprm_completion_queue_entry_st	completion_queue_entry;/* Completion Queue Entry Format */
/* -------------- */
    pseudo_bit_t	reserved0[0x7ff00];
/* -------------- */
    struct arbelprm_qp_ee_state_transitions_st	qp_ee_state_transitions;/* QP/EE State Transitions Command Parameters */
/* -------------- */
    pseudo_bit_t	reserved1[0x7f000];
/* -------------- */
    struct arbelprm_event_queue_entry_st	event_queue_entry;/* Event Queue Entry */
/* -------------- */
    pseudo_bit_t	reserved2[0x7ff00];
/* -------------- */
    struct arbelprm_completion_event_st	completion_event;/* Event_data Field - Completion Event */
/* -------------- */
    pseudo_bit_t	reserved3[0x7ff40];
/* -------------- */
    struct arbelprm_completion_queue_error_st	completion_queue_error;/* Event_data Field - Completion Queue Error */
/* -------------- */
    pseudo_bit_t	reserved4[0x7ff40];
/* -------------- */
    struct arbelprm_port_state_change_st	port_state_change;/* Event_data Field - Port State Change */
/* -------------- */
    pseudo_bit_t	reserved5[0x7ff40];
/* -------------- */
    struct arbelprm_wqe_segment_st	wqe_segment;/* WQE segments format */
/* -------------- */
    pseudo_bit_t	reserved6[0x7f000];
/* -------------- */
    struct arbelprm_page_fault_event_data_st	page_fault_event_data;/* Event_data Field - Page Faults */
/* -------------- */
    pseudo_bit_t	reserved7[0x7ff40];
/* -------------- */
    struct arbelprm_performance_monitor_event_st	performance_monitor_event;/* Event Data Field - Performance Monitor */
/* -------------- */
    pseudo_bit_t	reserved8[0xfff20];
/* -------------- */
    struct arbelprm_mt25208_type0_st	mt25208_type0;/* InfiniHost-III-EX Type0 Configuration Header */
/* -------------- */
    pseudo_bit_t	reserved9[0x7f000];
/* -------------- */
    struct arbelprm_qp_ee_event_st	qp_ee_event;/* Event_data Field - QP/EE Events */
/* -------------- */
    pseudo_bit_t	reserved10[0x00040];
/* -------------- */
    struct arbelprm_gpio_event_data_st	gpio_event_data;
/* -------------- */
    pseudo_bit_t	reserved11[0x7fe40];
/* -------------- */
    struct arbelprm_ud_address_vector_st	ud_address_vector;/* UD Address Vector */
/* -------------- */
    pseudo_bit_t	reserved12[0x7ff00];
/* -------------- */
    struct arbelprm_queue_pair_ee_context_entry_st	queue_pair_ee_context_entry;/* QP and EE Context Entry */
/* -------------- */
    pseudo_bit_t	reserved13[0x7fa00];
/* -------------- */
    struct arbelprm_address_path_st	address_path;/* Address Path */
/* -------------- */
    pseudo_bit_t	reserved14[0x7ff00];
/* -------------- */
    struct arbelprm_completion_queue_context_st	completion_queue_context;/* Completion Queue Context Table Entry */
/* -------------- */
    pseudo_bit_t	reserved15[0x7fe00];
/* -------------- */
    struct arbelprm_mpt_st	mpt;         /* Memory Protection Table (MPT) Entry */
/* -------------- */
    pseudo_bit_t	reserved16[0x7fe00];
/* -------------- */
    struct arbelprm_mtt_st	mtt;         /* Memory Translation Table (MTT) Entry */
/* -------------- */
    pseudo_bit_t	reserved17[0x7ffc0];
/* -------------- */
    struct arbelprm_eqc_st	eqc;         /* Event Queue Context Table Entry */
/* -------------- */
    pseudo_bit_t	reserved18[0x7fe00];
/* -------------- */
    struct arbelprm_performance_monitors_st	performance_monitors;/* Performance Monitors */
/* -------------- */
    pseudo_bit_t	reserved19[0x7ff80];
/* -------------- */
    struct arbelprm_hca_command_register_st	hca_command_register;/* HCA Command Register (HCR) */
/* -------------- */
    pseudo_bit_t	reserved20[0xfff20];
/* -------------- */
    struct arbelprm_init_hca_st	init_hca;/* INIT_HCA & QUERY_HCA Parameters Block */
/* -------------- */
    pseudo_bit_t	reserved21[0x7f000];
/* -------------- */
    struct arbelprm_qpcbaseaddr_st	qpcbaseaddr;/* QPC/EEC/CQC/EQC/RDB Parameters */
/* -------------- */
    pseudo_bit_t	reserved22[0x7fc00];
/* -------------- */
    struct arbelprm_udavtable_memory_parameters_st	udavtable_memory_parameters;/* Memory Access Parameters for UD Address Vector Table */
/* -------------- */
    pseudo_bit_t	reserved23[0x7ffc0];
/* -------------- */
    struct arbelprm_multicastparam_st	multicastparam;/* Multicast Support Parameters */
/* -------------- */
    pseudo_bit_t	reserved24[0x7ff00];
/* -------------- */
    struct arbelprm_tptparams_st	tptparams;/* Translation and Protection Tables Parameters */
/* -------------- */
    pseudo_bit_t	reserved25[0x7ff00];
/* -------------- */
    struct arbelprm_enable_lam_st	enable_lam;/* ENABLE_LAM Parameters Block */
/* -------------- */
    struct arbelprm_access_lam_st	access_lam;
/* -------------- */
    pseudo_bit_t	reserved26[0x7f700];
/* -------------- */
    struct arbelprm_dimminfo_st	dimminfo;/* Logical DIMM Information */
/* -------------- */
    pseudo_bit_t	reserved27[0x7ff00];
/* -------------- */
    struct arbelprm_query_fw_st	query_fw;/* QUERY_FW Parameters Block */
/* -------------- */
    pseudo_bit_t	reserved28[0x7f800];
/* -------------- */
    struct arbelprm_query_adapter_st	query_adapter;/* QUERY_ADAPTER Parameters Block */
/* -------------- */
    pseudo_bit_t	reserved29[0x7f800];
/* -------------- */
    struct arbelprm_query_dev_lim_st	query_dev_lim;/* Query Device Limitations */
/* -------------- */
    pseudo_bit_t	reserved30[0x7f800];
/* -------------- */
    struct arbelprm_uar_params_st	uar_params;/* UAR Parameters */
/* -------------- */
    pseudo_bit_t	reserved31[0x7ff00];
/* -------------- */
    struct arbelprm_init_ib_st	init_ib; /* INIT_IB Parameters */
/* -------------- */
    pseudo_bit_t	reserved32[0x7f800];
/* -------------- */
    struct arbelprm_mgm_entry_st	mgm_entry;/* Multicast Group Member */
/* -------------- */
    pseudo_bit_t	reserved33[0x7fe00];
/* -------------- */
    struct arbelprm_set_ib_st	set_ib;   /* SET_IB Parameters */
/* -------------- */
    pseudo_bit_t	reserved34[0x7fe00];
/* -------------- */
    struct arbelprm_rd_send_doorbell_st	rd_send_doorbell;/* RD-send doorbell */
/* -------------- */
    pseudo_bit_t	reserved35[0x7ff80];
/* -------------- */
    struct arbelprm_send_doorbell_st	send_doorbell;/* Send doorbell */
/* -------------- */
    pseudo_bit_t	reserved36[0x7ffc0];
/* -------------- */
    struct arbelprm_receive_doorbell_st	receive_doorbell;/* Receive doorbell */
/* -------------- */
    pseudo_bit_t	reserved37[0x7ffc0];
/* -------------- */
    struct arbelprm_cq_cmd_doorbell_st	cq_cmd_doorbell;/* CQ Doorbell */
/* -------------- */
    pseudo_bit_t	reserved38[0xfffc0];
/* -------------- */
    struct arbelprm_uar_st	uar;         /* User Access Region */
/* -------------- */
    pseudo_bit_t	reserved39[0x7c000];
/* -------------- */
    struct arbelprm_mgmqp_st	mgmqp;     /* Multicast Group Member QP */
/* -------------- */
    pseudo_bit_t	reserved40[0x7ffe0];
/* -------------- */
    struct arbelprm_query_debug_msg_st	query_debug_msg;/* Query Debug Message */
/* -------------- */
    pseudo_bit_t	reserved41[0x7f800];
/* -------------- */
    struct arbelprm_mad_ifc_st	mad_ifc; /* MAD_IFC Input Mailbox */
/* -------------- */
    pseudo_bit_t	reserved42[0x00900];
/* -------------- */
    struct arbelprm_mad_ifc_input_modifier_st	mad_ifc_input_modifier;/* MAD_IFC Input Modifier */
/* -------------- */
    pseudo_bit_t	reserved43[0x7e6e0];
/* -------------- */
    struct arbelprm_resize_cq_st	resize_cq;/* Resize CQ Input Mailbox */
/* -------------- */
    pseudo_bit_t	reserved44[0x7fe00];
/* -------------- */
    struct arbelprm_completion_with_error_st	completion_with_error;/* Completion with Error CQE */
/* -------------- */
    pseudo_bit_t	reserved45[0x7ff00];
/* -------------- */
    struct arbelprm_hcr_completion_event_st	hcr_completion_event;/* Event_data Field - HCR Completion Event */
/* -------------- */
    pseudo_bit_t	reserved46[0x7ff40];
/* -------------- */
    struct arbelprm_transport_and_ci_error_counters_st	transport_and_ci_error_counters;/* Transport and CI Error Counters */
/* -------------- */
    pseudo_bit_t	reserved47[0x7f000];
/* -------------- */
    struct arbelprm_performance_counters_st	performance_counters;/* Performance Counters */
/* -------------- */
    pseudo_bit_t	reserved48[0x9ff800];
/* -------------- */
    struct arbelprm_fast_registration_segment_st	fast_registration_segment;/* Fast Registration Segment */
/* -------------- */
    pseudo_bit_t	reserved49[0x7ff00];
/* -------------- */
    struct arbelprm_pbl_st	pbl;         /* Physical Buffer List */
/* -------------- */
    pseudo_bit_t	reserved50[0x7ff00];
/* -------------- */
    struct arbelprm_srq_context_st	srq_context;/* SRQ Context */
/* -------------- */
    pseudo_bit_t	reserved51[0x7fe80];
/* -------------- */
    struct arbelprm_mod_stat_cfg_st	mod_stat_cfg;/* MOD_STAT_CFG */
/* -------------- */
    pseudo_bit_t	reserved52[0x7f800];
/* -------------- */
    struct arbelprm_virtual_physical_mapping_st	virtual_physical_mapping;/* Virtual and Physical Mapping */
/* -------------- */
    pseudo_bit_t	reserved53[0x7ff80];
/* -------------- */
    struct arbelprm_cq_ci_db_record_st	cq_ci_db_record;/* CQ_CI_DB_Record */
/* -------------- */
    pseudo_bit_t	reserved54[0x7ffc0];
/* -------------- */
    struct arbelprm_cq_arm_db_record_st	cq_arm_db_record;/* CQ_ARM_DB_Record */
/* -------------- */
    pseudo_bit_t	reserved55[0x7ffc0];
/* -------------- */
    struct arbelprm_qp_db_record_st	qp_db_record;/* QP_DB_Record */
/* -------------- */
    pseudo_bit_t	reserved56[0x1fffc0];
/* -------------- */
    struct arbelprm_configuration_registers_st	configuration_registers;/* InfiniHost III EX Configuration Registers */
/* -------------- */
    struct arbelprm_eq_set_ci_table_st	eq_set_ci_table;/* EQ Set CI DBs Table */
/* -------------- */
    pseudo_bit_t	reserved57[0x01000];
/* -------------- */
    struct arbelprm_eq_arm_db_region_st	eq_arm_db_region;/* EQ Arm Doorbell Region */
/* -------------- */
    pseudo_bit_t	reserved58[0x00fc0];
/* -------------- */
    struct arbelprm_clr_int_st	clr_int; /* Clear Interrupt Register */
/* -------------- */
    pseudo_bit_t	reserved59[0xffcfc0];
/* -------------- */
};
#endif /* H_prefix_arbelprm_bits_fixnames_MT25218_PRM_csp_H */
