]>
git.proxmox.com Git - ceph.git/blob - ceph/src/pmdk/src/rpmem_common/rpmem_fip_common.h
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright 2016-2020, Intel Corporation */
5 * rpmem_fip_common.h -- common definitions for librpmem and rpmemd
8 #ifndef RPMEM_FIP_COMMON_H
9 #define RPMEM_FIP_COMMON_H 1
12 #include <netinet/in.h>
14 #include <rdma/fabric.h>
15 #include <rdma/fi_cm.h>
16 #include <rdma/fi_rma.h>
22 #define RPMEM_FIVERSION FI_VERSION(1, 4)
23 #define RPMEM_FIP_CQ_WAIT_MS 100
25 #define min(a, b) ((a) < (b) ? (a) : (b))
26 #define max(a, b) ((a) > (b) ? (a) : (b))
29 * rpmem_fip_node -- client or server node type
32 RPMEM_FIP_NODE_CLIENT
,
33 RPMEM_FIP_NODE_SERVER
,
39 * rpmem_fip_probe -- list of providers
41 struct rpmem_fip_probe
{
43 size_t max_wq_size
[MAX_RPMEM_PROV
];
47 * rpmem_fip_probe -- returns true if specified provider is available
50 rpmem_fip_probe(struct rpmem_fip_probe probe
, enum rpmem_provider provider
)
52 return (probe
.providers
& (1U << provider
)) != 0;
56 * rpmem_fip_probe_any -- returns true if any provider is available
59 rpmem_fip_probe_any(struct rpmem_fip_probe probe
)
61 return probe
.providers
!= 0;
64 int rpmem_fip_probe_get(const char *target
, struct rpmem_fip_probe
*probe
);
66 struct fi_info
*rpmem_fip_get_hints(enum rpmem_provider provider
);
68 int rpmem_fip_read_eq_check(struct fid_eq
*eq
, struct fi_eq_cm_entry
*entry
,
69 uint32_t exp_event
, fid_t exp_fid
, int timeout
);
71 int rpmem_fip_read_eq(struct fid_eq
*eq
, struct fi_eq_cm_entry
*entry
,
72 uint32_t *event
, int timeout
);
74 size_t rpmem_fip_cq_size(enum rpmem_persist_method pm
,
75 enum rpmem_fip_node node
);
76 size_t rpmem_fip_wq_size(enum rpmem_persist_method pm
,
77 enum rpmem_fip_node node
);
78 size_t rpmem_fip_rx_size(enum rpmem_persist_method pm
,
79 enum rpmem_fip_node node
);
81 size_t rpmem_fip_max_nlanes(struct fi_info
*fi
);
83 void rpmem_fip_print_info(struct fi_info
*fi
);