#ifndef _SYS_IB_IBTL_IBTL_CI_TYPES_H
#define _SYS_IB_IBTL_IBTL_CI_TYPES_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct ibc_cq_s *ibt_opaque1_t;
typedef struct ibc_srq_s *ibt_opaque2_t;
typedef struct ibc_rdd_s *ibt_rdd_hdl_t;
#define IBT_CEP_SET_RESET_INIT IBT_CEP_SET_OPAQUE1
#define IBT_CEP_SET_INIT_RTR IBT_CEP_SET_OPAQUE2
#define IBT_CEP_SET_RTR_RTS IBT_CEP_SET_OPAQUE3
#define IBT_CEP_SET_STATE IBT_CEP_SET_OPAQUE4
#define IBT_CEP_SET_MTU IBT_CEP_SET_OPAQUE5
#define IBT_CEP_SET_TIMEOUT IBT_CEP_SET_OPAQUE6
#define IBT_CEP_SET_PKEY_IX IBT_CEP_SET_OPAQUE7
#define IBT_CEP_SET_MIG IBT_CEP_SET_OPAQUE8
#define IBT_EVENT_PATH_MIGRATED_QP IBT_EVENT_PATH_MIGRATED
#define IBT_EVENT_COM_EST_QP IBT_EVENT_COM_EST
#define IBT_EVENT_COM_EST_EEC IBT_ASYNC_OPAQUE2
#define IBT_ERROR_CATASTROPHIC_QP IBT_ERROR_CATASTROPHIC_CHAN
#define IBT_ERROR_INVALID_REQUEST_QP IBT_ERROR_INVALID_REQUEST_CHAN
#define IBT_ERROR_ACCESS_VIOLATION_QP IBT_ERROR_ACCESS_VIOLATION_CHAN
#define IBT_ERROR_PATH_MIGRATE_REQ_QP IBT_ERROR_PATH_MIGRATE_REQ
#define IBT_EVENT_EMPTY_QP IBT_EVENT_EMPTY_CHAN
#define av_send_grh av_opaque1
#define av_dlid av_opaque2
#define av_src_path av_opaque3
#define av_sgid_ix av_opaque4
#define wc_slid wc_opaque1
#define wc_pkey_ix wc_opaque2
#define wc_path_bits wc_opaque4
#define mc_mlid mc_opaque1
#define mc_pkt_lt mc_opaque2
#define IBT_HCA_RESIZE_QP IBT_HCA_RESIZE_CHAN
#define IBT_HDL_QP IBT_HDL_CHANNEL
#define IBT_HDL_AH IBT_HDL_UD_DEST
#define hca_max_ah hca_max_ud_dest
#define hca_ah_max_ci_priv_sz hca_ud_dest_max_ci_priv_sz
#define hca_qp_max_ci_priv_sz hca_chan_max_ci_priv_sz
#define hca_max_qp hca_max_chans
#define hca_max_qp_sz hca_max_chan_sz
#define hca_max_rdma_out_qp hca_max_rdma_out_chan
#define hca_max_rdma_in_qp hca_max_rdma_in_chan
#define hca_max_mcg_qps hca_max_mcg_chans
#define hca_max_qp_per_mcg hca_max_chan_per_mcg
#define p_base_lid p_opaque1
#define IBT_QP_FULL IBT_CHAN_FULL
#define IBT_QP_HDL_INVALID IBT_CHAN_HDL_INVALID
#define IBT_QP_ATTR_RO IBT_CHAN_ATTR_RO
#define IBT_QP_STATE_INVALID IBT_CHAN_STATE_INVALID
#define IBT_QP_SRV_TYPE_INVALID IBT_CHAN_SRV_TYPE_INVALID
#define IBT_QP_IN_USE IBT_CHAN_IN_USE
#define IBT_QP_ATOMICS_NOT_SUPPORTED IBT_CHAN_ATOMICS_NOT_SUPPORTED
#define IBT_QP_OP_TYPE_INVALID IBT_CHAN_OP_TYPE_INVALID
#define IBT_QP_SGL_FORMAT_INVALID IBT_CHAN_SGL_FORMAT_INVALID
#define IBT_QP_SGL_LEN_INVALID IBT_CHAN_SGL_LEN_INVALID
#define IBT_QP_APM_STATE_INVALID IBT_CHAN_APM_STATE_INVALID
#define IBT_QP_SZ_INSUFFICIENT IBT_CHAN_SZ_INSUFFICIENT
#define IBT_QP_SPECIAL_TYPE_INVALID IBT_CHAN_SPECIAL_TYPE_INVALID
#define IBT_WC_LOCAL_QP_OP_ERR IBT_WC_LOCAL_CHAN_OP_ERR
#define IBT_AH_HDL_INVALID IBT_UD_DEST_HDL_INVALID
#define IBT_HCA_MCG_QP_EXCEEDED IBT_HCA_MCG_CHAN_EXCEEDED
#define IBT_MC_MLID_INVALID IBT_MC_OPAQUE
#define IBT_QP_SRQ IBT_CHAN_SRQ
#define IBT_QP_TYPE_2A_MW_BOUND IBT_CHAN_TYPE_2A_MW_BOUND
#define IBT_QP_WQE_SZ_INSUFF IBT_CHAN_WQE_SZ_INSUFF
#define cep_timeout cep_cm_opaque1
typedef struct ibt_ud_dest_s {
ibt_ah_hdl_t ud_ah;
ib_qpn_t ud_dst_qpn;
ib_qkey_t ud_qkey;
struct ibtl_hca_s *ud_dest_opaque1;
} ibt_ud_dest_t;
typedef struct ibt_rd_dest_s {
ibt_ah_hdl_t rd_ah;
ib_eecn_t rd_eecn;
ib_qpn_t rd_dst_qpn;
ib_qkey_t rd_dst_qkey;
} ibt_rd_dest_t;
typedef enum ibt_qp_type_e {
IBT_RC_RQP = 0,
IBT_RD_RQP = 1,
IBT_UC_RQP = 2,
IBT_UD_RQP = 3
} ibt_qp_type_t;
typedef enum ibt_sqp_type_e {
IBT_SMI_SQP = 0,
IBT_GSI_SQP = 1,
IBT_RAWIP_SQP = 2,
IBT_RAWETHER_SQP = 3
} ibt_sqp_type_t;
typedef enum ibt_qp_alloc_flags_e {
IBT_QP_NO_FLAGS = 0,
IBT_QP_USER_MAP = (1 << 0),
IBT_QP_DEFER_ALLOC = (1 << 1),
IBT_QP_USES_SRQ = (1 << 2),
IBT_QP_USES_RSS = (1 << 3),
IBT_QP_USES_RFCI = (1 << 4),
IBT_QP_USES_FCMD = (1 << 5),
IBT_QP_USES_FEXCH = (1 << 6)
} ibt_qp_alloc_flags_t;
typedef struct ibt_qp_alloc_attr_s {
ibt_qp_alloc_flags_t qp_alloc_flags;
ibt_cq_hdl_t qp_scq_hdl;
ibt_cq_hdl_t qp_rcq_hdl;
ibt_rdd_hdl_t qp_rdd_hdl;
ibt_pd_hdl_t qp_pd_hdl;
ibt_chan_sizes_t qp_sizes;
ibt_attr_flags_t qp_flags;
ibt_opaque1_t qp_opaque1;
ibt_opaque1_t qp_opaque2;
ibt_srq_hdl_t qp_srq_hdl;
ibt_opaque2_t qp_opaque3;
ibt_fc_attr_t qp_fc;
} ibt_qp_alloc_attr_t;
typedef struct ibt_qp_rc_attr_s {
uint32_t rc_sq_psn:24;
uint32_t rc_rq_psn:24;
ib_qpn_t rc_dst_qpn;
ibt_cep_cmstate_t rc_mig_state;
ibt_rnr_retry_cnt_t rc_rnr_retry_cnt;
uint8_t rc_retry_cnt:3;
uint8_t rc_rdma_ra_out;
uint8_t rc_rdma_ra_in;
ibt_rnr_nak_time_t rc_min_rnr_nak;
ib_mtu_t rc_path_mtu;
ibt_cep_path_t rc_path;
ibt_cep_path_t rc_alt_path;
} ibt_qp_rc_attr_t;
typedef struct ibt_qp_uc_attr_s {
uint32_t uc_sq_psn:24;
uint32_t uc_rq_psn:24;
ib_qpn_t uc_dst_qpn;
ibt_cep_cmstate_t uc_mig_state;
ib_mtu_t uc_path_mtu;
ibt_cep_path_t uc_path;
ibt_cep_path_t uc_alt_path;
} ibt_qp_uc_attr_t;
typedef struct ibt_qp_rd_attr_s {
ib_qkey_t rd_qkey;
ibt_rnr_nak_time_t rd_min_rnr_nak;
} ibt_qp_rd_attr_t;
typedef struct ibt_qp_ud_attr_s {
ib_qkey_t ud_qkey;
uint32_t ud_sq_psn:24;
uint16_t ud_pkey_ix;
uint8_t ud_port;
ibt_rss_attr_t ud_rss;
ibt_fc_attr_t ud_fc;
} ibt_qp_ud_attr_t;
typedef struct ibt_qp_info_s {
uint_t qp_sq_sz;
uint_t qp_rq_sz;
ibt_cep_state_t qp_state;
ibt_cep_state_t qp_current_state;
ibt_cep_flags_t qp_flags;
ibt_tran_srv_t qp_trans;
union {
ibt_qp_rc_attr_t rc;
ibt_qp_rd_attr_t rd;
ibt_qp_uc_attr_t uc;
ibt_qp_ud_attr_t ud;
} qp_transport;
} ibt_qp_info_t;
typedef struct ibt_qp_query_attr_s {
ibt_cq_hdl_t qp_sq_cq;
ibt_cq_hdl_t qp_rq_cq;
ibt_rdd_hdl_t qp_rdd_hdl;
ib_qpn_t qp_qpn;
uint_t qp_sq_sgl;
uint_t qp_rq_sgl;
ibt_qp_info_t qp_info;
ibt_srq_hdl_t qp_srq;
ibt_attr_flags_t qp_flags;
ibt_fexch_query_attr_t qp_query_fexch;
} ibt_qp_query_attr_t;
typedef struct ibt_eec_info_s {
uint32_t eec_sq_psn:24;
uint32_t eec_rq_psn:24;
ib_eecn_t eec_dst_eecn;
ibt_cep_state_t eec_state;
ibt_cep_cmstate_t eec_mig;
uint8_t eec_rdma_ra_out;
uint8_t eec_rdma_ra_in;
uint8_t eec_retry_cnt:3;
ibt_rnr_retry_cnt_t eec_rnr_retry_cnt;
ib_mtu_t eec_path_mtu;
ibt_cep_path_t eec_prim_path;
ibt_cep_path_t eec_alt_path;
} ibt_eec_info_t;
typedef struct ibt_eec_query_attr_s {
ib_eecn_t eec_eecn;
ibt_rdd_hdl_t eec_rdd_hdl;
ibt_eec_info_t eec_info;
} ibt_eec_query_attr_t;
#define ibt_ah_flags_t ibt_ud_dest_flags_t
#define IBT_AH_NO_FLAGS IBT_UD_DEST_NO_FLAGS
#define IBT_AH_USER_MAP IBT_UD_DEST_USER_MAP
#define IBT_AH_DEFER_ALLOC IBT_UD_DEST_DEFER_ALLOC
#define hca_max_rdd hca_opaque2
#define hca_max_eec hca_opaque3
#define hca_max_rd_sgl hca_opaque4
#define hca_max_rdma_in_ee hca_opaque5
#define hca_max_rdma_out_ee hca_opaque6
#define hca_max_ipv6_qp hca_max_ipv6_chan
#define hca_max_ether_qp hca_max_ether_chan
#define hca_eec_max_ci_priv_sz hca_opaque7
#define hca_rdd_max_ci_priv_sz hca_opaque8
#define hca_max_map_per_fmr hca_opaque9
#ifdef __cplusplus
}
#endif
#endif