HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: //proc/self/root/usr/include/infiniband/manadv.h
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/*
 * Copyright (c) 2022, Microsoft Corporation. All rights reserved.
 */

#ifndef _MANA_DV_H_
#define _MANA_DV_H_

#include <stdio.h>
#include <linux/types.h>
#include <endian.h>
#include <infiniband/verbs.h>

#ifdef __cplusplus
extern "C" {
#endif

enum manadv_set_ctx_attr_type {
	/* Attribute type uint8_t */
	MANADV_CTX_ATTR_BUF_ALLOCATORS = 0,
};

struct manadv_ctx_allocators {
	void *(*alloc)(size_t size, void *priv_data);
	void (*free)(void *ptr, void *priv_data);
	void *data;
};

int manadv_set_context_attr(struct ibv_context *ibv_ctx,
			    enum manadv_set_ctx_attr_type type, void *attr);

struct manadv_qp {
	void *sq_buf;
	uint32_t sq_count;
	uint32_t sq_size;
	uint32_t sq_id;
	uint32_t tx_vp_offset;
	void *db_page;
};

struct manadv_cq {
	void *buf;
	uint32_t count;
	uint32_t cq_id;
};

struct manadv_rwq {
	void *buf;
	uint32_t count;
	uint32_t size;
	uint32_t wq_id;
	void *db_page;
};

struct manadv_obj {
	struct {
		struct ibv_qp *in;
		struct manadv_qp *out;
	} qp;

	struct {
		struct ibv_cq *in;
		struct manadv_cq *out;
	} cq;

	struct {
		struct ibv_wq *in;
		struct manadv_rwq *out;
	} rwq;
};

enum manadv_obj_type {
	MANADV_OBJ_QP = 1 << 0,
	MANADV_OBJ_CQ = 1 << 1,
	MANADV_OBJ_RWQ = 1 << 2,
};

int manadv_init_obj(struct manadv_obj *obj, uint64_t obj_type);

#ifdef __cplusplus
}
#endif

#endif /* _MANA_DV_H_ */