| # SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) |
| # Copyright (c) 2018, Mellanox Technologies. All rights reserved. See COPYING file |
| |
| include 'libibverbs_enums.pxd' |
| from libc.stdint cimport uint8_t, uint16_t, uint32_t, uint64_t |
| |
| cdef extern from 'infiniband/verbs.h': |
| |
| cdef struct anon: |
| unsigned long subnet_prefix |
| unsigned long interface_id |
| |
| cdef union ibv_gid: |
| anon _global "global" |
| uint8_t raw[16] |
| |
| cdef struct ibv_device: |
| char *name |
| int node_type |
| int transport_type |
| |
| cdef struct ibv_context: |
| ibv_device *device |
| int num_comp_vectors |
| int cmd_fd |
| |
| cdef struct ibv_device_attr: |
| char *fw_ver |
| unsigned long node_guid |
| unsigned long sys_image_guid |
| unsigned long max_mr_size |
| unsigned long page_size_cap |
| unsigned int vendor_id |
| unsigned int vendor_part_id |
| unsigned int hw_ver |
| unsigned int max_qp |
| unsigned int max_qp_wr |
| unsigned int device_cap_flags |
| unsigned int max_sge |
| unsigned int max_sge_rd |
| unsigned int max_cq |
| unsigned int max_cqe |
| unsigned int max_mr |
| unsigned int max_pd |
| unsigned int max_qp_rd_atom |
| unsigned int max_ee_rd_atom |
| unsigned int max_res_rd_atom |
| unsigned int max_qp_init_rd_atom |
| unsigned int max_ee_init_rd_atom |
| ibv_atomic_cap atomic_cap |
| unsigned int max_ee |
| unsigned int max_rdd |
| unsigned int max_mw |
| unsigned int max_raw_ipv6_qp |
| unsigned int max_raw_ethy_qp |
| unsigned int max_mcast_grp |
| unsigned int max_mcast_qp_attach |
| unsigned int max_total_mcast_qp_attach |
| unsigned int max_ah |
| unsigned int max_fmr |
| unsigned int max_map_per_fmr |
| unsigned int max_srq |
| unsigned int max_srq_wr |
| unsigned int max_srq_sge |
| unsigned int max_pkeys |
| unsigned int local_ca_ack_delay |
| unsigned int phys_port_cnt |
| |
| struct ibv_pd: |
| ibv_context *context |
| unsigned int handle |
| |
| cdef struct ibv_mr: |
| ibv_context *context |
| ibv_pd *pd |
| void *addr |
| size_t length |
| unsigned int handle |
| unsigned int lkey |
| unsigned int rkey |
| |
| cdef struct ibv_query_device_ex_input: |
| unsigned int comp_mask |
| |
| cdef struct per_transport_caps: |
| uint32_t rc_odp_caps |
| uint32_t uc_odp_caps |
| uint32_t ud_odp_caps |
| |
| cdef struct ibv_odp_caps: |
| uint64_t general_caps |
| per_transport_caps per_transport_caps |
| |
| cdef struct ibv_tso_caps: |
| unsigned int max_tso |
| unsigned int supported_qpts |
| |
| cdef struct ibv_rss_caps: |
| unsigned int supported_qpts |
| unsigned int max_rwq_indirection_tables |
| unsigned int max_rwq_indirection_table_size |
| unsigned long rx_hash_fields_mask |
| unsigned int rx_hash_function |
| |
| cdef struct ibv_packet_pacing_caps: |
| unsigned int qp_rate_limit_min |
| unsigned int qp_rate_limit_max |
| unsigned int supported_qpts |
| |
| cdef struct ibv_tm_caps: |
| unsigned int max_rndv_hdr_size |
| unsigned int max_num_tags |
| unsigned int flags |
| unsigned int max_ops |
| unsigned int max_sge |
| |
| cdef struct ibv_cq_moderation_caps: |
| unsigned int max_cq_count |
| unsigned int max_cq_period |
| |
| cdef struct ibv_pci_atomic_caps: |
| uint16_t fetch_add |
| uint16_t swap |
| uint16_t compare_swap |
| |
| cdef struct ibv_device_attr_ex: |
| ibv_device_attr orig_attr |
| unsigned int comp_mask |
| ibv_odp_caps odp_caps |
| unsigned long completion_timestamp_mask |
| unsigned long hca_core_clock |
| unsigned long device_cap_flags_ex |
| ibv_tso_caps tso_caps |
| ibv_rss_caps rss_caps |
| unsigned int max_wq_type_rq |
| ibv_packet_pacing_caps packet_pacing_caps |
| unsigned int raw_packet_caps |
| ibv_tm_caps tm_caps |
| ibv_cq_moderation_caps cq_mod_caps |
| unsigned long max_dm_size |
| ibv_pci_atomic_caps pci_atomic_caps |
| uint32_t xrc_odp_caps |
| |
| cdef struct ibv_mw: |
| ibv_context *context |
| ibv_pd *pd |
| unsigned int rkey |
| unsigned int handle |
| ibv_mw_type mw_type |
| |
| cdef struct ibv_alloc_dm_attr: |
| size_t length |
| unsigned int log_align_req |
| unsigned int comp_mask |
| |
| cdef struct ibv_dm: |
| ibv_context *context |
| unsigned int comp_mask |
| |
| cdef struct ibv_port_attr: |
| ibv_port_state state |
| ibv_mtu max_mtu |
| ibv_mtu active_mtu |
| int gid_tbl_len |
| unsigned int port_cap_flags |
| unsigned int max_msg_sz |
| unsigned int bad_pkey_cntr |
| unsigned int qkey_viol_cntr |
| unsigned short pkey_tbl_len |
| unsigned short lid |
| unsigned short sm_lid |
| unsigned char lmc |
| unsigned char max_vl_num |
| unsigned char sm_sl |
| unsigned char subnet_timeout |
| unsigned char init_type_reply |
| unsigned char active_width |
| unsigned char active_speed |
| unsigned char phys_state |
| unsigned char link_layer |
| unsigned char flags |
| unsigned short port_cap_flags2 |
| |
| cdef struct ibv_comp_channel: |
| ibv_context *context |
| unsigned int fd |
| unsigned int refcnt |
| |
| cdef struct ibv_cq: |
| ibv_context *context |
| ibv_comp_channel *channel |
| void *cq_context |
| int handle |
| int cqe |
| |
| cdef struct ibv_wc: |
| unsigned long wr_id |
| ibv_wc_status status |
| ibv_wc_opcode opcode |
| unsigned int vendor_err |
| unsigned int byte_len |
| unsigned int qp_num |
| unsigned int imm_data |
| unsigned int src_qp |
| int wc_flags |
| unsigned int pkey_index |
| unsigned int slid |
| unsigned int sl |
| unsigned int dlid_path_bits |
| |
| cdef struct ibv_cq_init_attr_ex: |
| unsigned int cqe |
| void *cq_context |
| ibv_comp_channel *channel |
| unsigned int comp_vector |
| unsigned long wc_flags |
| unsigned int comp_mask |
| unsigned int flags |
| ibv_pd *parent_domain |
| |
| cdef struct ibv_cq_ex: |
| ibv_context *context |
| ibv_comp_channel *channel |
| void *cq_context |
| unsigned int handle |
| int cqe |
| unsigned int comp_events_completed |
| unsigned int async_events_completed |
| unsigned int comp_mask |
| ibv_wc_status status |
| unsigned long wr_id |
| |
| cdef struct ibv_poll_cq_attr: |
| unsigned int comp_mask |
| |
| cdef struct ibv_wc_tm_info: |
| unsigned long tag |
| unsigned int priv |
| |
| cdef struct ibv_grh: |
| unsigned int version_tclass_flow |
| unsigned short paylen |
| unsigned char next_hdr |
| unsigned char hop_limit |
| ibv_gid sgid |
| ibv_gid dgid |
| |
| cdef struct ibv_global_route: |
| ibv_gid dgid |
| unsigned int flow_label |
| unsigned char sgid_index |
| unsigned char hop_limit |
| unsigned char traffic_class |
| |
| cdef struct ibv_ah_attr: |
| ibv_global_route grh |
| unsigned short dlid |
| unsigned char sl |
| unsigned char src_path_bits |
| unsigned char static_rate |
| unsigned char is_global |
| unsigned char port_num |
| |
| cdef struct ibv_ah: |
| ibv_context *context |
| ibv_pd *pd |
| unsigned int handle |
| |
| cdef struct ibv_sge: |
| unsigned long addr |
| unsigned int length |
| unsigned int lkey |
| |
| cdef struct ibv_recv_wr: |
| unsigned long wr_id |
| ibv_recv_wr *next |
| ibv_sge *sg_list |
| int num_sge |
| |
| cdef struct rdma: |
| unsigned long remote_addr |
| unsigned int rkey |
| |
| cdef struct atomic: |
| unsigned long remote_addr |
| unsigned long compare_add |
| unsigned long swap |
| unsigned int rkey |
| |
| cdef struct ud: |
| ibv_ah *ah |
| unsigned int remote_qpn |
| unsigned int remote_qkey |
| |
| cdef union wr: |
| rdma rdma |
| atomic atomic |
| ud ud |
| |
| cdef struct ibv_mw_bind_info: |
| ibv_mr *mr |
| unsigned long addr |
| unsigned long length |
| unsigned int mw_access_flags |
| |
| cdef struct bind_mw: |
| ibv_mw *mw |
| unsigned int rkey |
| ibv_mw_bind_info bind_info |
| |
| cdef struct tso: |
| void *hdr |
| unsigned short hdr_sz |
| unsigned short mss |
| |
| cdef union unnamed: |
| bind_mw bind_mw |
| tso tso |
| |
| cdef struct xrc: |
| unsigned int remote_srqn |
| |
| cdef union qp_type: |
| xrc xrc |
| |
| cdef struct ibv_send_wr: |
| unsigned long wr_id |
| ibv_send_wr *next |
| ibv_sge *sg_list |
| int num_sge |
| ibv_wr_opcode opcode |
| unsigned int send_flags |
| wr wr |
| qp_type qp_type |
| unnamed unnamed |
| |
| cdef struct ibv_qp_cap: |
| unsigned int max_send_wr |
| unsigned int max_recv_wr |
| unsigned int max_send_sge |
| unsigned int max_recv_sge |
| unsigned int max_inline_data |
| |
| cdef struct ibv_qp_init_attr: |
| void *qp_context |
| ibv_cq *send_cq |
| ibv_cq *recv_cq |
| ibv_srq *srq |
| ibv_qp_cap cap |
| ibv_qp_type qp_type |
| int sq_sig_all |
| |
| cdef struct ibv_xrcd_init_attr: |
| uint32_t comp_mask |
| int fd |
| int oflags |
| |
| cdef struct ibv_xrcd: |
| pass |
| |
| cdef struct ibv_srq_attr: |
| unsigned int max_wr |
| unsigned int max_sge |
| unsigned int srq_limit |
| |
| cdef struct ibv_srq_init_attr: |
| void *srq_context |
| ibv_srq_attr attr |
| |
| cdef struct ibv_srq_init_attr_ex: |
| void *srq_context |
| ibv_srq_attr attr |
| unsigned int comp_mask |
| ibv_srq_type srq_type |
| ibv_pd *pd |
| ibv_xrcd *xrcd |
| ibv_cq *cq |
| ibv_tm_caps tm_cap |
| |
| cdef struct ibv_srq: |
| ibv_context *context |
| void *srq_context |
| ibv_pd *pd |
| unsigned int handle |
| unsigned int events_completed |
| |
| cdef struct ibv_rwq_ind_table: |
| pass |
| |
| cdef struct ibv_rx_hash_conf: |
| pass |
| |
| cdef struct ibv_qp_init_attr_ex: |
| void *qp_context |
| ibv_cq *send_cq |
| ibv_cq *recv_cq |
| ibv_srq *srq |
| ibv_qp_cap cap |
| ibv_qp_type qp_type |
| int sq_sig_all |
| unsigned int comp_mask |
| ibv_pd *pd |
| ibv_xrcd *xrcd |
| unsigned int create_flags |
| unsigned short max_tso_header |
| ibv_rwq_ind_table *rwq_ind_tbl |
| ibv_rx_hash_conf rx_hash_conf |
| unsigned int source_qpn |
| unsigned long send_ops_flags |
| |
| cdef struct ibv_qp_attr: |
| ibv_qp_state qp_state |
| ibv_qp_state cur_qp_state |
| ibv_mtu path_mtu |
| ibv_mig_state path_mig_state |
| unsigned int qkey |
| unsigned int rq_psn |
| unsigned int sq_psn |
| unsigned int dest_qp_num |
| unsigned int qp_access_flags |
| ibv_qp_cap cap |
| ibv_ah_attr ah_attr |
| ibv_ah_attr alt_ah_attr |
| unsigned short pkey_index |
| unsigned short alt_pkey_index |
| unsigned char en_sqd_async_notify |
| unsigned char sq_draining |
| unsigned char max_rd_atomic |
| unsigned char max_dest_rd_atomic |
| unsigned char min_rnr_timer |
| unsigned char port_num |
| unsigned char timeout |
| unsigned char retry_cnt |
| unsigned char rnr_retry |
| unsigned char alt_port_num |
| unsigned char alt_timeout |
| unsigned int rate_limit |
| |
| cdef struct ibv_srq: |
| ibv_context *context |
| void *srq_context |
| ibv_pd *pd |
| unsigned int handle |
| unsigned int events_completed |
| |
| cdef struct ibv_data_buf: |
| void *addr |
| size_t length |
| |
| cdef struct ibv_qp: |
| ibv_context *context; |
| void *qp_context; |
| ibv_pd *pd; |
| ibv_cq *send_cq; |
| ibv_cq *recv_cq; |
| ibv_srq *srq; |
| unsigned int handle; |
| unsigned int qp_num; |
| ibv_qp_state state; |
| ibv_qp_type qp_type; |
| unsigned int events_completed; |
| |
| cdef struct ibv_parent_domain_init_attr: |
| ibv_pd *pd; |
| uint32_t comp_mask; |
| void *(*alloc)(ibv_pd *pd, void *pd_context, size_t size, |
| size_t alignment, uint64_t resource_type); |
| void (*free)(ibv_pd *pd, void *pd_context, void *ptr, |
| uint64_t resource_type); |
| void *pd_context; |
| |
| cdef struct ibv_qp_ex: |
| ibv_qp qp_base |
| uint64_t comp_mask |
| uint64_t wr_id |
| unsigned int wr_flags |
| |
| ibv_device **ibv_get_device_list(int *n) |
| void ibv_free_device_list(ibv_device **list) |
| ibv_context *ibv_open_device(ibv_device *device) |
| int ibv_close_device(ibv_context *context) |
| int ibv_query_device(ibv_context *context, ibv_device_attr *device_attr) |
| int ibv_query_device_ex(ibv_context *context, |
| ibv_query_device_ex_input *input, |
| ibv_device_attr_ex *attr) |
| unsigned long ibv_get_device_guid(ibv_device *device) |
| int ibv_query_gid(ibv_context *context, unsigned int port_num, |
| int index, ibv_gid *gid) |
| ibv_pd *ibv_alloc_pd(ibv_context *context) |
| int ibv_dealloc_pd(ibv_pd *pd) |
| ibv_mr *ibv_reg_mr(ibv_pd *pd, void *addr, size_t length, int access) |
| int ibv_dereg_mr(ibv_mr *mr) |
| ibv_mw *ibv_alloc_mw(ibv_pd *pd, ibv_mw_type type) |
| int ibv_dealloc_mw(ibv_mw *mw) |
| ibv_dm *ibv_alloc_dm(ibv_context *context, ibv_alloc_dm_attr *attr) |
| int ibv_free_dm(ibv_dm *dm) |
| ibv_mr *ibv_reg_dm_mr(ibv_pd *pd, ibv_dm *dm, unsigned long dm_offset, |
| size_t length, unsigned int access) |
| int ibv_memcpy_to_dm(ibv_dm *dm, unsigned long dm_offset, void *host_addr, |
| size_t length) |
| int ibv_memcpy_from_dm(void *host_addr, ibv_dm *dm, unsigned long dm_offset, |
| size_t length) |
| int ibv_query_port(ibv_context *context, uint8_t port_num, |
| ibv_port_attr *port_attr) |
| ibv_comp_channel *ibv_create_comp_channel(ibv_context *context) |
| int ibv_destroy_comp_channel(ibv_comp_channel *channel) |
| int ibv_get_cq_event(ibv_comp_channel *channel, ibv_cq **cq, |
| void **cq_context) |
| int ibv_req_notify_cq(ibv_cq *cq, int solicited_only) |
| void ibv_ack_cq_events(ibv_cq *cq, int nevents) |
| ibv_cq *ibv_create_cq(ibv_context *context, int cqe, void *cq_context, |
| ibv_comp_channel *channel, int comp_vector) |
| int ibv_destroy_cq(ibv_cq *cq) |
| int ibv_poll_cq(ibv_cq *cq, int num_entries, ibv_wc *wc) |
| ibv_cq_ex *ibv_create_cq_ex(ibv_context *context, |
| ibv_cq_init_attr_ex *cq_attr) |
| ibv_cq *ibv_cq_ex_to_cq(ibv_cq_ex *cq) |
| int ibv_start_poll(ibv_cq_ex *cq, ibv_poll_cq_attr *attr) |
| int ibv_next_poll(ibv_cq_ex *cq) |
| void ibv_end_poll(ibv_cq_ex *cq) |
| ibv_wc_opcode ibv_wc_read_opcode(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_vendor_err(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_byte_len(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_imm_data(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_invalidated_rkey(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_qp_num(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_src_qp(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_wc_flags(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_slid(ibv_cq_ex *cq) |
| unsigned char ibv_wc_read_sl(ibv_cq_ex *cq) |
| unsigned char ibv_wc_read_dlid_path_bits(ibv_cq_ex *cq) |
| unsigned long ibv_wc_read_completion_ts(ibv_cq_ex *cq) |
| unsigned short ibv_wc_read_cvlan(ibv_cq_ex *cq) |
| unsigned int ibv_wc_read_flow_tag(ibv_cq_ex *cq) |
| void ibv_wc_read_tm_info(ibv_cq_ex *cq, ibv_wc_tm_info *tm_info) |
| unsigned long ibv_wc_read_completion_wallclock_ns(ibv_cq_ex *cq) |
| ibv_ah *ibv_create_ah(ibv_pd *pd, ibv_ah_attr *attr) |
| int ibv_init_ah_from_wc(ibv_context *context, uint8_t port_num, |
| ibv_wc *wc, ibv_grh *grh, ibv_ah_attr *ah_attr) |
| ibv_ah *ibv_create_ah_from_wc(ibv_pd *pd, ibv_wc *wc, ibv_grh *grh, |
| uint8_t port_num) |
| int ibv_destroy_ah(ibv_ah *ah) |
| ibv_qp *ibv_create_qp(ibv_pd *pd, ibv_qp_init_attr *qp_init_attr) |
| ibv_qp *ibv_create_qp_ex(ibv_context *context, |
| ibv_qp_init_attr_ex *qp_init_attr_ex) |
| int ibv_modify_qp(ibv_qp *qp, ibv_qp_attr *qp_attr, int comp_mask) |
| int ibv_query_qp(ibv_qp *qp, ibv_qp_attr *attr, int attr_mask, |
| ibv_qp_init_attr *init_attr) |
| int ibv_destroy_qp(ibv_qp *qp) |
| int ibv_post_recv(ibv_qp *qp, ibv_recv_wr *wr, ibv_recv_wr **bad_wr) |
| int ibv_post_send(ibv_qp *qp, ibv_send_wr *wr, ibv_send_wr **bad_wr) |
| ibv_xrcd *ibv_open_xrcd(ibv_context *context, |
| ibv_xrcd_init_attr *xrcd_init_attr) |
| int ibv_close_xrcd(ibv_xrcd *xrcd) |
| ibv_srq *ibv_create_srq(ibv_pd *pd, ibv_srq_init_attr *srq_init_attr) |
| ibv_srq *ibv_create_srq_ex(ibv_context *context, |
| ibv_srq_init_attr_ex *srq_init_attr) |
| int ibv_modify_srq(ibv_srq *srq, ibv_srq_attr *srq_attr, int srq_attr_mask) |
| int ibv_query_srq(ibv_srq *srq, ibv_srq_attr *srq_attr) |
| int ibv_get_srq_num(ibv_srq *srq, unsigned int *srq_num) |
| int ibv_destroy_srq(ibv_srq *srq) |
| int ibv_post_srq_recv(ibv_srq *srq, ibv_recv_wr *recv_wr, |
| ibv_recv_wr **bad_recv_wr) |
| ibv_pd *ibv_alloc_parent_domain(ibv_context *context, |
| ibv_parent_domain_init_attr *attr) |
| uint32_t ibv_inc_rkey(uint32_t rkey) |
| ibv_qp_ex *ibv_qp_to_qp_ex(ibv_qp *qp) |
| void ibv_wr_atomic_cmp_swp(ibv_qp_ex *qp, uint32_t rkey, |
| uint64_t remote_addr, uint64_t compare, |
| uint64_t swap) |
| void ibv_wr_atomic_fetch_add(ibv_qp_ex *qp, uint32_t rkey, |
| uint64_t remote_addr, uint64_t add) |
| void ibv_wr_bind_mw(ibv_qp_ex *qp, ibv_mw *mw, uint32_t rkey, |
| ibv_mw_bind_info *bind_info) |
| void ibv_wr_local_inv(ibv_qp_ex *qp, uint32_t invalidate_rkey) |
| void ibv_wr_rdma_read(ibv_qp_ex *qp, uint32_t rkey, uint64_t remote_addr) |
| void ibv_wr_rdma_write(ibv_qp_ex *qp, uint32_t rkey, uint64_t remote_addr) |
| void ibv_wr_rdma_write_imm(ibv_qp_ex *qp, uint32_t rkey, |
| uint64_t remote_addr, uint32_t imm_data) |
| void ibv_wr_send(ibv_qp_ex *qp) |
| void ibv_wr_send_imm(ibv_qp_ex *qp, uint32_t imm_data) |
| void ibv_wr_send_inv(ibv_qp_ex *qp, uint32_t invalidate_rkey) |
| void ibv_wr_send_tso(ibv_qp_ex *qp, void *hdr, uint16_t hdr_sz, |
| uint16_t mss) |
| void ibv_wr_set_ud_addr(ibv_qp_ex *qp, ibv_ah *ah, uint32_t remote_qpn, |
| uint32_t remote_qkey) |
| void ibv_wr_set_xrc_srqn(ibv_qp_ex *qp, uint32_t remote_srqn) |
| void ibv_wr_set_inline_data(ibv_qp_ex *qp, void *addr, size_t length) |
| void ibv_wr_set_inline_data_list(ibv_qp_ex *qp, size_t num_buf, |
| ibv_data_buf *buf_list) |
| void ibv_wr_set_sge(ibv_qp_ex *qp, uint32_t lkey, uint64_t addr, |
| uint32_t length) |
| void ibv_wr_set_sge_list(ibv_qp_ex *qp, size_t num_sge, ibv_sge *sg_list) |
| void ibv_wr_start(ibv_qp_ex *qp) |
| int ibv_wr_complete(ibv_qp_ex *qp) |
| void ibv_wr_abort(ibv_qp_ex *qp) |
| |
| |
| cdef extern from 'infiniband/driver.h': |
| int ibv_query_gid_type(ibv_context *context, uint8_t port_num, |
| unsigned int index, ibv_gid_type *type) |
| |