# SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB)
# Copyright (c) 2018, Mellanox Technologies. All rights reserved.

#cython: language_level=3


cdef extern from '<infiniband/verbs.h>':

    cpdef enum ibv_transport_type:
        IBV_TRANSPORT_UNKNOWN
        IBV_TRANSPORT_IB
        IBV_TRANSPORT_IWARP
        IBV_TRANSPORT_USNIC
        IBV_TRANSPORT_USNIC_UDP

    cpdef enum ibv_node_type:
        IBV_NODE_UNKNOWN
        IBV_NODE_CA
        IBV_NODE_SWITCH
        IBV_NODE_ROUTER
        IBV_NODE_RNIC
        IBV_NODE_USNIC
        IBV_NODE_USNIC_UDP
        IBV_NODE_UNSPECIFIED

    cpdef enum:
        IBV_LINK_LAYER_UNSPECIFIED
        IBV_LINK_LAYER_INFINIBAND
        IBV_LINK_LAYER_ETHERNET

    cpdef enum ibv_atomic_cap:
        IBV_ATOMIC_NONE
        IBV_ATOMIC_HCA
        IBV_ATOMIC_GLOB

    cpdef enum ibv_port_state:
        IBV_PORT_NOP
        IBV_PORT_DOWN
        IBV_PORT_INIT
        IBV_PORT_ARMED
        IBV_PORT_ACTIVE
        IBV_PORT_ACTIVE_DEFER

    cpdef enum ibv_port_cap_flags:
        IBV_PORT_SM
        IBV_PORT_NOTICE_SUP
        IBV_PORT_TRAP_SUP
        IBV_PORT_OPT_IPD_SUP
        IBV_PORT_AUTO_MIGR_SUP
        IBV_PORT_SL_MAP_SUP
        IBV_PORT_MKEY_NVRAM
        IBV_PORT_PKEY_NVRAM
        IBV_PORT_LED_INFO_SUP
        IBV_PORT_SYS_IMAGE_GUID_SUP
        IBV_PORT_PKEY_SW_EXT_PORT_TRAP_SUP
        IBV_PORT_EXTENDED_SPEEDS_SUP
        IBV_PORT_CAP_MASK2_SUP
        IBV_PORT_CM_SUP
        IBV_PORT_SNMP_TUNNEL_SUP
        IBV_PORT_REINIT_SUP
        IBV_PORT_DEVICE_MGMT_SUP
        IBV_PORT_VENDOR_CLASS_SUP
        IBV_PORT_DR_NOTICE_SUP
        IBV_PORT_CAP_MASK_NOTICE_SUP
        IBV_PORT_BOOT_MGMT_SUP
        IBV_PORT_LINK_LATENCY_SUP
        IBV_PORT_CLIENT_REG_SUP
        IBV_PORT_IP_BASED_GIDS

    cpdef enum ibv_port_cap_flags2:
        IBV_PORT_SET_NODE_DESC_SUP
        IBV_PORT_INFO_EXT_SUP
        IBV_PORT_VIRT_SUP
        IBV_PORT_SWITCH_PORT_STATE_TABLE_SUP
        IBV_PORT_LINK_WIDTH_2X_SUP
        IBV_PORT_LINK_SPEED_HDR_SUP
        IBV_PORT_LINK_SPEED_NDR_SUP

    cpdef enum ibv_mtu:
        IBV_MTU_256
        IBV_MTU_512
        IBV_MTU_1024
        IBV_MTU_2048
        IBV_MTU_4096

    cpdef enum ibv_event_type:
        IBV_EVENT_CQ_ERR
        IBV_EVENT_QP_FATAL
        IBV_EVENT_QP_REQ_ERR
        IBV_EVENT_QP_ACCESS_ERR
        IBV_EVENT_COMM_EST
        IBV_EVENT_SQ_DRAINED
        IBV_EVENT_PATH_MIG
        IBV_EVENT_PATH_MIG_ERR
        IBV_EVENT_DEVICE_FATAL
        IBV_EVENT_PORT_ACTIVE
        IBV_EVENT_PORT_ERR
        IBV_EVENT_LID_CHANGE
        IBV_EVENT_PKEY_CHANGE
        IBV_EVENT_SM_CHANGE
        IBV_EVENT_SRQ_ERR
        IBV_EVENT_SRQ_LIMIT_REACHED
        IBV_EVENT_QP_LAST_WQE_REACHED
        IBV_EVENT_CLIENT_REREGISTER
        IBV_EVENT_GID_CHANGE
        IBV_EVENT_WQ_FATAL
        IBV_EVENT_DEVICE_SPEED_CHANGE

    cpdef enum ibv_access_flags:
        IBV_ACCESS_LOCAL_WRITE
        IBV_ACCESS_REMOTE_WRITE
        IBV_ACCESS_REMOTE_READ
        IBV_ACCESS_REMOTE_ATOMIC
        IBV_ACCESS_MW_BIND
        IBV_ACCESS_ZERO_BASED
        IBV_ACCESS_ON_DEMAND
        IBV_ACCESS_HUGETLB
        IBV_ACCESS_FLUSH_GLOBAL
        IBV_ACCESS_FLUSH_PERSISTENT
        IBV_ACCESS_RELAXED_ORDERING

    cpdef enum ibv_rereg_mr_flags:
        IBV_REREG_MR_CHANGE_TRANSLATION
        IBV_REREG_MR_CHANGE_PD
        IBV_REREG_MR_CHANGE_ACCESS

    cpdef enum ibv_rereg_mr_err_code:
        IBV_REREG_MR_ERR_INPUT
        IBV_REREG_MR_ERR_DONT_FORK_NEW
        IBV_REREG_MR_ERR_DO_FORK_OLD
        IBV_REREG_MR_ERR_CMD
        IBV_REREG_MR_ERR_CMD_AND_DO_FORK_NEW

    cpdef enum ibv_wr_opcode:
        IBV_WR_RDMA_WRITE
        IBV_WR_RDMA_WRITE_WITH_IMM
        IBV_WR_SEND
        IBV_WR_SEND_WITH_IMM
        IBV_WR_RDMA_READ
        IBV_WR_ATOMIC_CMP_AND_SWP
        IBV_WR_ATOMIC_FETCH_AND_ADD
        IBV_WR_LOCAL_INV
        IBV_WR_BIND_MW
        IBV_WR_SEND_WITH_INV
        IBV_WR_TSO
        IBV_WR_FLUSH
        IBV_WR_ATOMIC_WRITE

    cpdef enum ibv_ops_wr_opcode:
        IBV_WR_TAG_ADD
        IBV_WR_TAG_DEL
        IBV_WR_TAG_SYNC

    cpdef enum ibv_ops_flags:
        IBV_OPS_SIGNALED
        IBV_OPS_TM_SYNC

    cpdef enum ibv_send_flags:
        IBV_SEND_FENCE
        IBV_SEND_SIGNALED
        IBV_SEND_SOLICITED
        IBV_SEND_INLINE
        IBV_SEND_IP_CSUM

    cpdef enum ibv_tm_cap_flags:
        IBV_TM_CAP_RC

    cpdef enum ibv_qp_type:
        IBV_QPT_RC
        IBV_QPT_UC
        IBV_QPT_UD
        IBV_QPT_RAW_PACKET
        IBV_QPT_XRC_SEND
        IBV_QPT_XRC_RECV
        IBV_QPT_DRIVER

    cpdef enum ibv_qp_state:
        IBV_QPS_RESET
        IBV_QPS_INIT
        IBV_QPS_RTR
        IBV_QPS_RTS
        IBV_QPS_SQD
        IBV_QPS_SQE
        IBV_QPS_ERR
        IBV_QPS_UNKNOWN

    cpdef enum ibv_mw_type:
        IBV_MW_TYPE_1
        IBV_MW_TYPE_2

    cpdef enum ibv_wc_status:
        IBV_WC_SUCCESS
        IBV_WC_LOC_LEN_ERR
        IBV_WC_LOC_QP_OP_ERR
        IBV_WC_LOC_EEC_OP_ERR
        IBV_WC_LOC_PROT_ERR
        IBV_WC_WR_FLUSH_ERR
        IBV_WC_MW_BIND_ERR
        IBV_WC_BAD_RESP_ERR
        IBV_WC_LOC_ACCESS_ERR
        IBV_WC_REM_INV_REQ_ERR
        IBV_WC_REM_ACCESS_ERR
        IBV_WC_REM_OP_ERR
        IBV_WC_RETRY_EXC_ERR
        IBV_WC_RNR_RETRY_EXC_ERR
        IBV_WC_LOC_RDD_VIOL_ERR
        IBV_WC_REM_INV_RD_REQ_ERR
        IBV_WC_REM_ABORT_ERR
        IBV_WC_INV_EECN_ERR
        IBV_WC_INV_EEC_STATE_ERR
        IBV_WC_FATAL_ERR
        IBV_WC_RESP_TIMEOUT_ERR
        IBV_WC_GENERAL_ERR
        IBV_WC_TM_ERR
        IBV_WC_TM_RNDV_INCOMPLETE

    cpdef enum ibv_wc_opcode:
        IBV_WC_SEND
        IBV_WC_RDMA_WRITE
        IBV_WC_RDMA_READ
        IBV_WC_COMP_SWAP
        IBV_WC_FETCH_ADD
        IBV_WC_BIND_MW
        IBV_WC_LOCAL_INV
        IBV_WC_TSO
        IBV_WC_FLUSH
        IBV_WC_ATOMIC_WRITE
        IBV_WC_RECV
        IBV_WC_RECV_RDMA_WITH_IMM
        IBV_WC_TM_ADD
        IBV_WC_TM_DEL
        IBV_WC_TM_SYNC
        IBV_WC_TM_RECV
        IBV_WC_TM_NO_TAG
        IBV_WC_DRIVER2
        IBV_WC_DRIVER3

    cpdef enum ibv_create_cq_wc_flags:
        IBV_WC_EX_WITH_BYTE_LEN
        IBV_WC_EX_WITH_IMM
        IBV_WC_EX_WITH_QP_NUM
        IBV_WC_EX_WITH_SRC_QP
        IBV_WC_EX_WITH_SLID
        IBV_WC_EX_WITH_SL
        IBV_WC_EX_WITH_DLID_PATH_BITS
        IBV_WC_EX_WITH_COMPLETION_TIMESTAMP
        IBV_WC_EX_WITH_CVLAN
        IBV_WC_EX_WITH_FLOW_TAG
        IBV_WC_EX_WITH_TM_INFO
        IBV_WC_EX_WITH_COMPLETION_TIMESTAMP_WALLCLOCK

    cpdef enum ibv_wc_flags:
        IBV_WC_GRH
        IBV_WC_WITH_IMM
        IBV_WC_IP_CSUM_OK
        IBV_WC_WITH_INV
        IBV_WC_TM_SYNC_REQ
        IBV_WC_TM_MATCH
        IBV_WC_TM_DATA_VALID

    cpdef enum ibv_srq_attr_mask:
        IBV_SRQ_MAX_WR
        IBV_SRQ_LIMIT

    cpdef enum ibv_srq_type:
        IBV_SRQT_BASIC
        IBV_SRQT_XRC
        IBV_SRQT_TM

    cpdef enum ibv_srq_init_attr_mask:
        IBV_SRQ_INIT_ATTR_TYPE
        IBV_SRQ_INIT_ATTR_PD
        IBV_SRQ_INIT_ATTR_XRCD
        IBV_SRQ_INIT_ATTR_CQ
        IBV_SRQ_INIT_ATTR_TM

    cpdef enum ibv_mig_state:
        IBV_MIG_MIGRATED
        IBV_MIG_REARM
        IBV_MIG_ARMED

    cpdef enum ibv_qp_init_attr_mask:
        IBV_QP_INIT_ATTR_PD
        IBV_QP_INIT_ATTR_XRCD
        IBV_QP_INIT_ATTR_CREATE_FLAGS
        IBV_QP_INIT_ATTR_MAX_TSO_HEADER
        IBV_QP_INIT_ATTR_IND_TABLE
        IBV_QP_INIT_ATTR_RX_HASH
        IBV_QP_INIT_ATTR_SEND_OPS_FLAGS

    cpdef enum ibv_qp_create_flags:
        IBV_QP_CREATE_BLOCK_SELF_MCAST_LB
        IBV_QP_CREATE_SCATTER_FCS
        IBV_QP_CREATE_CVLAN_STRIPPING
        IBV_QP_CREATE_SOURCE_QPN
        IBV_QP_CREATE_PCI_WRITE_END_PADDING

    cpdef enum ibv_qp_attr_mask:
        IBV_QP_STATE
        IBV_QP_CUR_STATE
        IBV_QP_EN_SQD_ASYNC_NOTIFY
        IBV_QP_ACCESS_FLAGS
        IBV_QP_PKEY_INDEX
        IBV_QP_PORT
        IBV_QP_QKEY
        IBV_QP_AV
        IBV_QP_PATH_MTU
        IBV_QP_TIMEOUT
        IBV_QP_RETRY_CNT
        IBV_QP_RNR_RETRY
        IBV_QP_RQ_PSN
        IBV_QP_MAX_QP_RD_ATOMIC
        IBV_QP_ALT_PATH
        IBV_QP_MIN_RNR_TIMER
        IBV_QP_SQ_PSN
        IBV_QP_MAX_DEST_RD_ATOMIC
        IBV_QP_PATH_MIG_STATE
        IBV_QP_CAP
        IBV_QP_DEST_QPN
        IBV_QP_RATE_LIMIT

    cpdef enum ibv_query_qp_data_in_order_flags:
        IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS

    cpdef enum ibv_query_qp_data_in_order_caps:
        IBV_QUERY_QP_DATA_IN_ORDER_WHOLE_MSG
        IBV_QUERY_QP_DATA_IN_ORDER_ALIGNED_128_BYTES

    cpdef enum ibv_wq_type:
        IBV_WQT_RQ

    cpdef enum ibv_wq_init_attr_mask:
        IBV_WQ_INIT_ATTR_FLAGS

    cpdef enum ibv_wq_flags:
        IBV_WQ_FLAGS_CVLAN_STRIPPING
        IBV_WQ_FLAGS_SCATTER_FCS
        IBV_WQ_FLAGS_DELAY_DROP
        IBV_WQ_FLAGS_PCI_WRITE_END_PADDING

    cpdef enum ibv_wq_state:
        IBV_WQS_RESET
        IBV_WQS_RDY
        IBV_WQS_ERR
        IBV_WQS_UNKNOWN

    cpdef enum ibv_wq_attr_mask:
        IBV_WQ_ATTR_STATE
        IBV_WQ_ATTR_CURR_STATE
        IBV_WQ_ATTR_FLAGS

    cpdef enum ibv_rx_hash_function_flags:
        IBV_RX_HASH_FUNC_TOEPLITZ

    cpdef enum ibv_rx_hash_fields:
        IBV_RX_HASH_SRC_IPV4
        IBV_RX_HASH_DST_IPV4
        IBV_RX_HASH_SRC_IPV6
        IBV_RX_HASH_DST_IPV6
        IBV_RX_HASH_SRC_PORT_TCP
        IBV_RX_HASH_DST_PORT_TCP
        IBV_RX_HASH_SRC_PORT_UDP
        IBV_RX_HASH_DST_PORT_UDP

    cpdef enum ibv_flow_flags:
        IBV_FLOW_ATTR_FLAGS_DONT_TRAP
        IBV_FLOW_ATTR_FLAGS_EGRESS

    cpdef enum ibv_flow_attr_type:
        IBV_FLOW_ATTR_NORMAL
        IBV_FLOW_ATTR_ALL_DEFAULT
        IBV_FLOW_ATTR_MC_DEFAULT
        IBV_FLOW_ATTR_SNIFFER

    cpdef enum ibv_flow_spec_type:
        IBV_FLOW_SPEC_ETH
        IBV_FLOW_SPEC_IPV4
        IBV_FLOW_SPEC_IPV6
        IBV_FLOW_SPEC_IPV4_EXT
        IBV_FLOW_SPEC_ESP
        IBV_FLOW_SPEC_TCP
        IBV_FLOW_SPEC_UDP
        IBV_FLOW_SPEC_VXLAN_TUNNEL
        IBV_FLOW_SPEC_GRE
        IBV_FLOW_SPEC_MPLS
        IBV_FLOW_SPEC_INNER
        IBV_FLOW_SPEC_ACTION_TAG
        IBV_FLOW_SPEC_ACTION_DROP
        IBV_FLOW_SPEC_ACTION_HANDLE
        IBV_FLOW_SPEC_ACTION_COUNT

    cpdef enum:
        IBV_QPF_GRH_REQUIRED

    cpdef enum ibv_counter_description:
        IBV_COUNTER_PACKETS
        IBV_COUNTER_BYTES

    cpdef enum ibv_read_counters_flags:
        IBV_READ_COUNTERS_ATTR_PREFER_CACHED

    cpdef enum ibv_cq_init_attr_mask:
        IBV_CQ_INIT_ATTR_MASK_FLAGS
        IBV_CQ_INIT_ATTR_MASK_PD

    cpdef enum ibv_create_cq_attr_flags:
        IBV_CREATE_CQ_ATTR_SINGLE_THREADED
        IBV_CREATE_CQ_ATTR_IGNORE_OVERRUN

    cpdef enum ibv_odp_general_caps:
        IBV_ODP_SUPPORT
        IBV_ODP_SUPPORT_IMPLICIT

    cpdef enum ibv_odp_transport_cap_bits:
        IBV_ODP_SUPPORT_SEND
        IBV_ODP_SUPPORT_RECV
        IBV_ODP_SUPPORT_WRITE
        IBV_ODP_SUPPORT_READ
        IBV_ODP_SUPPORT_ATOMIC
        IBV_ODP_SUPPORT_SRQ_RECV
        IBV_ODP_SUPPORT_FLUSH
        IBV_ODP_SUPPORT_ATOMIC_WRITE

    cpdef enum ibv_device_cap_flags:
        IBV_DEVICE_RESIZE_MAX_WR
        IBV_DEVICE_BAD_PKEY_CNTR
        IBV_DEVICE_BAD_QKEY_CNTR
        IBV_DEVICE_RAW_MULTI
        IBV_DEVICE_AUTO_PATH_MIG
        IBV_DEVICE_CHANGE_PHY_PORT
        IBV_DEVICE_UD_AV_PORT_ENFORCE
        IBV_DEVICE_CURR_QP_STATE_MOD
        IBV_DEVICE_SHUTDOWN_PORT
        IBV_DEVICE_INIT_TYPE
        IBV_DEVICE_PORT_ACTIVE_EVENT
        IBV_DEVICE_SYS_IMAGE_GUID
        IBV_DEVICE_RC_RNR_NAK_GEN
        IBV_DEVICE_SRQ_RESIZE
        IBV_DEVICE_N_NOTIFY_CQ
        IBV_DEVICE_MEM_WINDOW
        IBV_DEVICE_UD_IP_CSUM
        IBV_DEVICE_XRC
        IBV_DEVICE_MEM_MGT_EXTENSIONS
        IBV_DEVICE_MEM_WINDOW_TYPE_2A
        IBV_DEVICE_MEM_WINDOW_TYPE_2B
        IBV_DEVICE_RC_IP_CSUM
        IBV_DEVICE_RAW_IP_CSUM
        IBV_DEVICE_MANAGED_FLOW_STEERING

    cpdef enum ibv_raw_packet_caps:
        IBV_RAW_PACKET_CAP_CVLAN_STRIPPING
        IBV_RAW_PACKET_CAP_SCATTER_FCS
        IBV_RAW_PACKET_CAP_IP_CSUM
        IBV_RAW_PACKET_CAP_DELAY_DROP

    cpdef enum ibv_xrcd_init_attr_mask:
        IBV_XRCD_INIT_ATTR_FD
        IBV_XRCD_INIT_ATTR_OFLAGS
        IBV_XRCD_INIT_ATTR_RESERVED

    cpdef enum:
        IBV_WC_STANDARD_FLAGS

    cpdef enum ibv_values_mask:
        IBV_VALUES_MASK_RAW_CLOCK

    cpdef enum ibv_qp_create_send_ops_flags:
        IBV_QP_EX_WITH_RDMA_WRITE
        IBV_QP_EX_WITH_RDMA_WRITE_WITH_IMM
        IBV_QP_EX_WITH_SEND
        IBV_QP_EX_WITH_SEND_WITH_IMM
        IBV_QP_EX_WITH_RDMA_READ
        IBV_QP_EX_WITH_ATOMIC_CMP_AND_SWP
        IBV_QP_EX_WITH_ATOMIC_FETCH_AND_ADD
        IBV_QP_EX_WITH_LOCAL_INV
        IBV_QP_EX_WITH_BIND_MW
        IBV_QP_EX_WITH_SEND_WITH_INV
        IBV_QP_EX_WITH_TSO
        IBV_QP_EX_WITH_FLUSH
        IBV_QP_EX_WITH_ATOMIC_WRITE

    cdef unsigned long long IBV_DEVICE_RAW_SCATTER_FCS
    cdef unsigned long long IBV_DEVICE_PCI_WRITE_END_PADDING
    cdef unsigned long long IBV_DEVICE_CC_DMA_BOUNCE

    cpdef enum ibv_parent_domain_init_attr_mask:
        IBV_PARENT_DOMAIN_INIT_ATTR_ALLOCATORS
        IBV_PARENT_DOMAIN_INIT_ATTR_PD_CONTEXT
        IBV_PARENT_DOMAIN_INIT_ATTR_ALLOW_CC_UNPROTECTED_ALLOC

    cdef void *IBV_ALLOCATOR_USE_DEFAULT

    cpdef enum ibv_gid_type:
        IBV_GID_TYPE_IB
        IBV_GID_TYPE_ROCE_V1
        IBV_GID_TYPE_ROCE_V2

    cpdef enum ibv_fork_status:
        IBV_FORK_DISABLED
        IBV_FORK_ENABLED
        IBV_FORK_UNNEEDED

    cpdef enum ibv_placement_type:
        IBV_FLUSH_GLOBAL
        IBV_FLUSH_PERSISTENT
    cpdef enum ibv_selectivity_level:
        IBV_FLUSH_MR
        IBV_FLUSH_RANGE

    cpdef enum ibv_tph_mem_type:
        IBV_TPH_MEM_TYPE_VM
        IBV_TPH_MEM_TYPE_PM

    cpdef enum ibv_dmah_init_attr_mask:
        IBV_DMAH_INIT_ATTR_MASK_CPU_ID
        IBV_DMAH_INIT_ATTR_MASK_PH
        IBV_DMAH_INIT_ATTR_MASK_TPH_MEM_TYPE

    cpdef enum ibv_mr_init_attr_mask:
        IBV_REG_MR_MASK_IOVA
        IBV_REG_MR_MASK_ADDR
        IBV_REG_MR_MASK_FD
        IBV_REG_MR_MASK_FD_OFFSET
        IBV_REG_MR_MASK_DMAH
        IBV_REG_MR_MASK_BUF

    cpdef enum ibv_qp_attach_comp_cntr_op:
        IBV_QP_ATTACH_COMP_CNTR_OP_SEND
        IBV_QP_ATTACH_COMP_CNTR_OP_RECV
        IBV_QP_ATTACH_COMP_CNTR_OP_RDMA_READ
        IBV_QP_ATTACH_COMP_CNTR_OP_REMOTE_RDMA_READ
        IBV_QP_ATTACH_COMP_CNTR_OP_RDMA_WRITE
        IBV_QP_ATTACH_COMP_CNTR_OP_REMOTE_RDMA_WRITE


cdef extern from "<infiniband/verbs_api.h>":
    cdef unsigned long long IBV_ADVISE_MR_ADVICE_PREFETCH
    cdef unsigned long long IBV_ADVISE_MR_ADVICE_PREFETCH_WRITE
    cdef unsigned long long IBV_ADVISE_MR_FLAG_FLUSH
    cdef unsigned long long IBV_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT

cdef extern from '<infiniband/driver.h>':
    cpdef enum ibv_gid_type_sysfs:
        IBV_GID_TYPE_SYSFS_IB_ROCE_V1
        IBV_GID_TYPE_SYSFS_ROCE_V2

cdef extern from "<infiniband/tm_types.h>":
    cpdef enum ibv_tmh_op:
        IBV_TMH_NO_TAG
        IBV_TMH_RNDV
        IBV_TMH_FIN
        IBV_TMH_EAGER
