60 connection_user_data.ptr = ctx_user_data.
ptr;
79 (void)connection_user_data;
81 static int is_first_connection_established = 0;
83 if (is_first_connection_established == 0) {
91 is_first_connection_established = 1;
106 (void)connection_user_data;
108 static int is_first_connection_failure = 0;
110 if (is_first_connection_failure == 0) {
118 is_first_connection_failure = 1;
132 (void)connection_user_data;
155 struct sockaddr_in server_addr = {0}, client_addr = {0};
156 unsigned int client_size = 0;
158 int oob_sock_fd_ = 0;
159 int oob_client_sock_ = 0;
162 oob_sock_fd_ = socket(AF_INET, SOCK_STREAM, 0);
163 if (oob_sock_fd_ < 0) {
164 DOCA_LOG_ERR(
"Error while creating socket %d", oob_sock_fd_);
169 if (setsockopt(oob_sock_fd_, SOL_SOCKET, SO_REUSEPORT, &enable,
sizeof(enable))) {
176 server_addr.sin_family = AF_INET;
177 server_addr.sin_port = htons(2000);
178 server_addr.sin_addr.s_addr = INADDR_ANY;
181 if (bind(oob_sock_fd_, (
struct sockaddr *)&server_addr,
sizeof(server_addr)) < 0) {
189 if (listen(oob_sock_fd_, 1) < 0) {
197 client_size =
sizeof(client_addr);
198 oob_client_sock_ = accept(oob_sock_fd_, (
struct sockaddr *)&client_addr, &client_size);
199 if (oob_client_sock_ < 0) {
200 DOCA_LOG_ERR(
"Can't accept socket connection %d", oob_client_sock_);
209 inet_ntoa(client_addr.sin_addr),
210 ntohs(client_addr.sin_port));
240 struct sockaddr_in server_addr = {0};
244 oob_sock_fd_ = socket(AF_INET, SOCK_STREAM, 0);
245 if (oob_sock_fd_ < 0) {
252 server_addr.sin_family = AF_INET;
253 server_addr.sin_port = htons(2000);
254 server_addr.sin_addr.s_addr = inet_addr(server_ip);
257 if (connect(oob_sock_fd_, (
struct sockaddr *)&server_addr,
sizeof(server_addr)) < 0) {
259 DOCA_LOG_ERR(
"Unable to connect to server at %s", server_ip);
300 const uint32_t rdma_permissions,
310 strlen(
cfg->device_name),
329 goto destroy_doca_gpu;
337 goto destroy_doca_rdma;
344 goto destroy_doca_rdma;
348 if (
cfg->is_gid_index_set) {
353 goto destroy_doca_rdma;
361 goto destroy_doca_rdma;
368 goto destroy_doca_rdma;
375 goto destroy_doca_rdma;
382 goto destroy_doca_rdma;
385 if (
cfg->use_rdma_cm) {
390 goto destroy_doca_rdma;
396 goto destroy_doca_rdma;
402 goto destroy_doca_rdma;
413 goto destroy_doca_rdma;
422 goto destroy_doca_rdma;
429 goto destroy_doca_rdma;
479 DOCA_LOG_ERR(
"Failed to disconnect RDMA connection: %s",
488 DOCA_LOG_ERR(
"Failed to disconnect RDMA connection: %s",
doca_error_t open_doca_device_with_ibdev_name(const uint8_t *value, size_t val_size, tasks_check func, struct doca_dev **retval)
doca_error_t wrapper_doca_rdma_cap_task_write_is_supported(struct doca_devinfo *devinfo)
doca_error_t create_buf_arr_on_gpu(struct buf_arr_obj *buf_arr_obj)
doca_error_t destroy_rdma_resources(struct rdma_resources *resources)
void rdma_cm_connect_established_cb(struct doca_rdma_connection *connection, union doca_data connection_user_data, union doca_data ctx_user_data)
void rdma_cm_disconnect_cb(struct doca_rdma_connection *connection, union doca_data connection_user_data, union doca_data ctx_user_data)
int oob_connection_client_setup(const char *server_ip, int *oob_sock_fd)
doca_error_t create_mmap(struct rdma_mmap_obj *mmap_obj)
void oob_connection_server_close(int oob_sock_fd, int oob_client_sock)
int oob_connection_server_setup(int *oob_sock_fd, int *oob_client_sock)
doca_error_t create_rdma_resources(struct rdma_config *cfg, const uint32_t rdma_permissions, struct rdma_resources *resources)
void rdma_cm_connect_failure_cb(struct doca_rdma_connection *connection, union doca_data connection_user_data, union doca_data ctx_user_data)
void rdma_cm_connect_request_cb(struct doca_rdma_connection *connection, union doca_data ctx_user_data)
void oob_connection_client_close(int oob_sock_fd)
DOCA_LOG_REGISTER(GPURDMA::COMMON)
#define RDMA_RECV_QUEUE_SIZE
#define RDMA_SEND_QUEUE_SIZE
if(bitoffset % 64+bitlength > 64) result|
struct rdma_resources resources
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_destroy(struct doca_buf_arr *buf_arr)
Destroys a doca buf array instance.
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_params(struct doca_buf_arr *buf_arr, struct doca_mmap *mmap, size_t elem_size, uint64_t start_offset)
Sets the buf array params.
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_gpu(struct doca_buf_arr *buf_arr, struct doca_gpu *gpu_handler)
Configures the buf array to be created on the gpu device.
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_gpu_handle(const struct doca_buf_arr *buf_arr, struct doca_gpu_buf_arr **gpu_buf_arr)
Retrieves the handle in the gpu memory space of a doca_buf_arr.
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_create(size_t num_elem, struct doca_buf_arr **buf_arr)
Allocates a doca_buf_arr.
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_start(struct doca_buf_arr *buf_arr)
This method enables the allocation of doca_bufs.
DOCA_STABLE doca_error_t doca_ctx_start(struct doca_ctx *ctx)
Finalizes all configurations, and starts the DOCA CTX.
DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_gpu(struct doca_ctx *ctx, struct doca_gpu *gpu_dev)
This function binds the DOCA context to a gpu device.
DOCA_STABLE doca_error_t doca_ctx_set_user_data(struct doca_ctx *ctx, union doca_data user_data)
set user data to context
DOCA_STABLE doca_error_t doca_ctx_stop(struct doca_ctx *ctx)
Stops the context allowing reconfiguration.
DOCA_STABLE doca_error_t doca_dev_close(struct doca_dev *dev)
Destroy allocated local device instance.
#define DOCA_ERROR_PROPAGATE(r, t)
Save the first encountered doca_error_t.
enum doca_error doca_error_t
DOCA API return codes.
DOCA_STABLE const char * doca_error_get_descr(doca_error_t error)
Returns the description string of an error code.
#define DOCA_LOG_ERR(format,...)
Generates an ERROR application log message.
#define DOCA_LOG_INFO(format,...)
Generates an INFO application log message.
DOCA_STABLE doca_error_t doca_mmap_set_memrange(struct doca_mmap *mmap, void *addr, size_t len)
Set the memory range of DOCA memory map.
DOCA_STABLE doca_error_t doca_mmap_destroy(struct doca_mmap *mmap)
Destroy DOCA Memory Map structure.
DOCA_STABLE doca_error_t doca_mmap_create(struct doca_mmap **mmap)
Allocates zero size memory map object with default/unset attributes.
DOCA_STABLE doca_error_t doca_mmap_set_permissions(struct doca_mmap *mmap, uint32_t access_mask)
Set access flags of the registered memory.
DOCA_STABLE doca_error_t doca_mmap_start(struct doca_mmap *mmap)
Start DOCA Memory Map.
DOCA_STABLE doca_error_t doca_mmap_add_dev(struct doca_mmap *mmap, struct doca_dev *dev)
Register DOCA memory map on a given device.
DOCA_STABLE doca_error_t doca_mmap_export_rdma(struct doca_mmap *mmap, const struct doca_dev *dev, const void **export_desc, size_t *export_desc_len)
Compose memory map representation for later import with doca_mmap_create_from_export() for one of the...
DOCA_STABLE doca_error_t doca_pe_destroy(struct doca_pe *pe)
Destroy doca progress engine.
DOCA_STABLE doca_error_t doca_pe_connect_ctx(struct doca_pe *pe, struct doca_ctx *ctx)
This method connects a context to a progress engine.
DOCA_STABLE doca_error_t doca_pe_create(struct doca_pe **pe)
Creates DOCA progress engine.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_destroy(struct doca_rdma *rdma)
Destroy a DOCA RDMA instance.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_grh_enabled(struct doca_rdma *rdma, uint8_t grh_enabled)
Set whether to use GRH in connection. The value can be queried using doca_rdma_get_grh_enabled()....
DOCA_EXPERIMENTAL doca_error_t doca_rdma_stop_listen_to_port(struct doca_rdma *rdma, uint16_t port)
End the listen process for a connection from remote doca_rdma peers. Can be called when the ctx is in...
DOCA_EXPERIMENTAL doca_error_t doca_rdma_addr_destroy(struct doca_rdma_addr *addr)
Destroy connection address object for doca_rdma.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_connection_state_callbacks(struct doca_rdma *rdma, doca_rdma_connection_request_cb_t doca_rdma_connect_request_cb, doca_rdma_connection_established_cb_t doca_rdma_connect_established_cb, doca_rdma_connection_failure_cb_t doca_rdma_connect_failure_cb, doca_rdma_connection_disconnection_cb_t doca_rdma_disconnect_cb)
This method set the function executed on RDMA connection events.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_permissions(struct doca_rdma *rdma, uint32_t permissions)
Set rdma permissions for doca_rdma. The value can be queried using doca_rdma_get_permissions()....
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_send_queue_size(struct doca_rdma *rdma, uint32_t send_queue_size)
Set send queue size property for doca_rdma. The value can be queried using doca_rdma_get_send_queue_s...
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_recv_queue_size(struct doca_rdma *rdma, uint32_t recv_queue_size)
Set recv queue size property for doca_rdma. The value can be queried using doca_rdma_get_recv_queue_s...
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_max_num_connections(struct doca_rdma *rdma, uint16_t max_num_connections)
Set the maximum number of connections property for a context. The value can be queried using doca_rdm...
DOCA_EXPERIMENTAL doca_error_t doca_rdma_connection_disconnect(struct doca_rdma_connection *rdma_connection)
Finalize a connection with a remote doca_rdma peer. Can be called when the ctx is in DOCA_CTX_STATE_R...
DOCA_EXPERIMENTAL doca_error_t doca_rdma_set_gid_index(struct doca_rdma *rdma, uint32_t gid_index)
Set GID index for doca_rdma. The value can be queried using doca_rdma_get_gid_index()....
DOCA_EXPERIMENTAL doca_error_t doca_rdma_connection_accept(struct doca_rdma_connection *rdma_connection, void *private_data, uint8_t private_data_len)
Accept an incoming connection request from remote doca_rdma peer. Can be called when the ctx is in DO...
DOCA_EXPERIMENTAL struct doca_ctx * doca_rdma_as_ctx(struct doca_rdma *rdma)
Convert doca_rdma instance into a generalized context for use with doca core objects.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_cap_task_write_is_supported(const struct doca_devinfo *devinfo)
DOCA_EXPERIMENTAL doca_error_t doca_rdma_create(struct doca_dev *dev, struct doca_rdma **rdma)
Create a DOCA RDMA instance.
DOCA_EXPERIMENTAL doca_error_t doca_rdma_connection_set_user_data(struct doca_rdma_connection *rdma_connection, union doca_data connection_user_data)
Set user data to include in each connection.
const struct ip_frag_config * cfg
struct doca_gpu_buf_arr * gpu_buf_arr
struct doca_buf_arr * buf_arr
struct doca_dev * doca_device
bool server_listen_active
struct doca_rdma_connection * connection2
struct doca_rdma_connection * connection
struct doca_ctx * rdma_ctx
bool connection2_established
struct doca_rdma_addr * cm_addr
struct doca_dev * doca_device
bool connection_established
Convenience type for representing opaque data.