⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ib_verbs.h

📁 h内核
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved. * Copyright (c) 2004 Infinicon Corporation.  All rights reserved. * Copyright (c) 2004 Intel Corporation.  All rights reserved. * Copyright (c) 2004 Topspin Corporation.  All rights reserved. * Copyright (c) 2004 Voltaire Corporation.  All rights reserved. * * This software is available to you under a choice of one of two * licenses.  You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * *     Redistribution and use in source and binary forms, with or *     without modification, are permitted provided that the following *     conditions are met: * *      - Redistributions of source code must retain the above *        copyright notice, this list of conditions and the following *        disclaimer. * *      - Redistributions in binary form must reproduce the above *        copyright notice, this list of conditions and the following *        disclaimer in the documentation and/or other materials *        provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * * $Id: ib_verbs.h 1349 2004-12-16 21:09:43Z roland $ */#if !defined(IB_VERBS_H)#define IB_VERBS_H#include <linux/types.h>#include <linux/device.h>#include <asm/atomic.h>union ib_gid {	u8	raw[16];	struct {		u64	subnet_prefix;		u64	interface_id;	} global;};enum ib_node_type {	IB_NODE_CA 	= 1,	IB_NODE_SWITCH,	IB_NODE_ROUTER};enum ib_device_cap_flags {	IB_DEVICE_RESIZE_MAX_WR		= 1,	IB_DEVICE_BAD_PKEY_CNTR		= (1<<1),	IB_DEVICE_BAD_QKEY_CNTR		= (1<<2),	IB_DEVICE_RAW_MULTI		= (1<<3),	IB_DEVICE_AUTO_PATH_MIG		= (1<<4),	IB_DEVICE_CHANGE_PHY_PORT	= (1<<5),	IB_DEVICE_UD_AV_PORT_ENFORCE	= (1<<6),	IB_DEVICE_CURR_QP_STATE_MOD	= (1<<7),	IB_DEVICE_SHUTDOWN_PORT		= (1<<8),	IB_DEVICE_INIT_TYPE		= (1<<9),	IB_DEVICE_PORT_ACTIVE_EVENT	= (1<<10),	IB_DEVICE_SYS_IMAGE_GUID	= (1<<11),	IB_DEVICE_RC_RNR_NAK_GEN	= (1<<12),	IB_DEVICE_SRQ_RESIZE		= (1<<13),	IB_DEVICE_N_NOTIFY_CQ		= (1<<14),	IB_DEVICE_RQ_SIG_TYPE		= (1<<15)};enum ib_atomic_cap {	IB_ATOMIC_NONE,	IB_ATOMIC_HCA,	IB_ATOMIC_GLOB};struct ib_device_attr {	u64			fw_ver;	u64			node_guid;	u64			sys_image_guid;	u64			max_mr_size;	u64			page_size_cap;	u32			vendor_id;	u32			vendor_part_id;	u32			hw_ver;	int			max_qp;	int			max_qp_wr;	int			device_cap_flags;	int			max_sge;	int			max_sge_rd;	int			max_cq;	int			max_cqe;	int			max_mr;	int			max_pd;	int			max_qp_rd_atom;	int			max_ee_rd_atom;	int			max_res_rd_atom;	int			max_qp_init_rd_atom;	int			max_ee_init_rd_atom;	enum ib_atomic_cap	atomic_cap;	int			max_ee;	int			max_rdd;	int			max_mw;	int			max_raw_ipv6_qp;	int			max_raw_ethy_qp;	int			max_mcast_grp;	int			max_mcast_qp_attach;	int			max_total_mcast_qp_attach;	int			max_ah;	int			max_fmr;	int			max_map_per_fmr;	int			max_srq;	int			max_srq_wr;	int			max_srq_sge;	u16			max_pkeys;	u8			local_ca_ack_delay;};enum ib_mtu {	IB_MTU_256  = 1,	IB_MTU_512  = 2,	IB_MTU_1024 = 3,	IB_MTU_2048 = 4,	IB_MTU_4096 = 5};static inline int ib_mtu_enum_to_int(enum ib_mtu mtu){	switch (mtu) {	case IB_MTU_256:  return  256;	case IB_MTU_512:  return  512;	case IB_MTU_1024: return 1024;	case IB_MTU_2048: return 2048;	case IB_MTU_4096: return 4096;	default: 	  return -1;	}}enum ib_port_state {	IB_PORT_NOP		= 0,	IB_PORT_DOWN		= 1,	IB_PORT_INIT		= 2,	IB_PORT_ARMED		= 3,	IB_PORT_ACTIVE		= 4,	IB_PORT_ACTIVE_DEFER	= 5};enum ib_port_cap_flags {	IB_PORT_SM				= 1 <<  1,	IB_PORT_NOTICE_SUP			= 1 <<  2,	IB_PORT_TRAP_SUP			= 1 <<  3,	IB_PORT_OPT_IPD_SUP                     = 1 <<  4,	IB_PORT_AUTO_MIGR_SUP			= 1 <<  5,	IB_PORT_SL_MAP_SUP			= 1 <<  6,	IB_PORT_MKEY_NVRAM			= 1 <<  7,	IB_PORT_PKEY_NVRAM			= 1 <<  8,	IB_PORT_LED_INFO_SUP			= 1 <<  9,	IB_PORT_SM_DISABLED			= 1 << 10,	IB_PORT_SYS_IMAGE_GUID_SUP		= 1 << 11,	IB_PORT_PKEY_SW_EXT_PORT_TRAP_SUP	= 1 << 12,	IB_PORT_CM_SUP				= 1 << 16,	IB_PORT_SNMP_TUNNEL_SUP			= 1 << 17,	IB_PORT_REINIT_SUP			= 1 << 18,	IB_PORT_DEVICE_MGMT_SUP			= 1 << 19,	IB_PORT_VENDOR_CLASS_SUP		= 1 << 20,	IB_PORT_DR_NOTICE_SUP			= 1 << 21,	IB_PORT_CAP_MASK_NOTICE_SUP		= 1 << 22,	IB_PORT_BOOT_MGMT_SUP			= 1 << 23,	IB_PORT_LINK_LATENCY_SUP		= 1 << 24,	IB_PORT_CLIENT_REG_SUP			= 1 << 25};enum ib_port_width {	IB_WIDTH_1X	= 1,	IB_WIDTH_4X	= 2,	IB_WIDTH_8X	= 4,	IB_WIDTH_12X	= 8};static inline int ib_width_enum_to_int(enum ib_port_width width){	switch (width) {	case IB_WIDTH_1X:  return  1;	case IB_WIDTH_4X:  return  4;	case IB_WIDTH_8X:  return  8;	case IB_WIDTH_12X: return 12;	default: 	  return -1;	}}struct ib_port_attr {	enum ib_port_state	state;	enum ib_mtu		max_mtu;	enum ib_mtu		active_mtu;	int			gid_tbl_len;	u32			port_cap_flags;	u32			max_msg_sz;	u32			bad_pkey_cntr;	u32			qkey_viol_cntr;	u16			pkey_tbl_len;	u16			lid;	u16			sm_lid;	u8			lmc;	u8			max_vl_num;	u8			sm_sl;	u8			subnet_timeout;	u8			init_type_reply;	u8			active_width;	u8			active_speed;	u8                      phys_state;};enum ib_device_modify_flags {	IB_DEVICE_MODIFY_SYS_IMAGE_GUID	= 1};struct ib_device_modify {	u64	sys_image_guid;};enum ib_port_modify_flags {	IB_PORT_SHUTDOWN		= 1,	IB_PORT_INIT_TYPE		= (1<<2),	IB_PORT_RESET_QKEY_CNTR		= (1<<3)};struct ib_port_modify {	u32	set_port_cap_mask;	u32	clr_port_cap_mask;	u8	init_type;};enum ib_event_type {	IB_EVENT_CQ_ERR,	IB_EVENT_QP_FATAL,	IB_EVENT_QP_REQ_ERR,	IB_EVENT_QP_ACCESS_ERR,	IB_EVENT_COMM_EST,	IB_EVENT_SQ_DRAINED,	IB_EVENT_PATH_MIG,	IB_EVENT_PATH_MIG_ERR,	IB_EVENT_DEVICE_FATAL,	IB_EVENT_PORT_ACTIVE,	IB_EVENT_PORT_ERR,	IB_EVENT_LID_CHANGE,	IB_EVENT_PKEY_CHANGE,	IB_EVENT_SM_CHANGE};struct ib_event {	struct ib_device	*device;	union {		struct ib_cq	*cq;		struct ib_qp	*qp;		u8		port_num;	} element;	enum ib_event_type	event;};struct ib_event_handler {	struct ib_device *device;	void            (*handler)(struct ib_event_handler *, struct ib_event *);	struct list_head  list;};#define INIT_IB_EVENT_HANDLER(_ptr, _device, _handler)		\	do {							\		(_ptr)->device  = _device;			\		(_ptr)->handler = _handler;			\		INIT_LIST_HEAD(&(_ptr)->list);			\	} while (0)struct ib_global_route {	union ib_gid	dgid;	u32		flow_label;	u8		sgid_index;	u8		hop_limit;	u8		traffic_class;};enum {	IB_MULTICAST_QPN = 0xffffff};enum ib_ah_flags {	IB_AH_GRH	= 1};struct ib_ah_attr {	struct ib_global_route	grh;	u16			dlid;	u8			sl;	u8			src_path_bits;	u8			static_rate;	u8			ah_flags;	u8			port_num;};enum ib_wc_status {	IB_WC_SUCCESS,	IB_WC_LOC_LEN_ERR,	IB_WC_LOC_QP_OP_ERR,	IB_WC_LOC_EEC_OP_ERR,	IB_WC_LOC_PROT_ERR,	IB_WC_WR_FLUSH_ERR,	IB_WC_MW_BIND_ERR,	IB_WC_BAD_RESP_ERR,	IB_WC_LOC_ACCESS_ERR,	IB_WC_REM_INV_REQ_ERR,	IB_WC_REM_ACCESS_ERR,	IB_WC_REM_OP_ERR,	IB_WC_RETRY_EXC_ERR,	IB_WC_RNR_RETRY_EXC_ERR,	IB_WC_LOC_RDD_VIOL_ERR,	IB_WC_REM_INV_RD_REQ_ERR,	IB_WC_REM_ABORT_ERR,	IB_WC_INV_EECN_ERR,	IB_WC_INV_EEC_STATE_ERR,	IB_WC_FATAL_ERR,	IB_WC_RESP_TIMEOUT_ERR,	IB_WC_GENERAL_ERR};enum ib_wc_opcode {	IB_WC_SEND,	IB_WC_RDMA_WRITE,	IB_WC_RDMA_READ,	IB_WC_COMP_SWAP,	IB_WC_FETCH_ADD,	IB_WC_BIND_MW,/* * Set value of IB_WC_RECV so consumers can test if a completion is a * receive by testing (opcode & IB_WC_RECV). */	IB_WC_RECV			= 1 << 7,	IB_WC_RECV_RDMA_WITH_IMM};enum ib_wc_flags {	IB_WC_GRH		= 1,	IB_WC_WITH_IMM		= (1<<1)};struct ib_wc {	u64			wr_id;	enum ib_wc_status	status;	enum ib_wc_opcode	opcode;	u32			vendor_err;	u32			byte_len;	__be32			imm_data;	u32			qp_num;	u32			src_qp;	int			wc_flags;	u16			pkey_index;	u16			slid;	u8			sl;	u8			dlid_path_bits;	u8			port_num;	/* valid only for DR SMPs on switches */};enum ib_cq_notify {	IB_CQ_SOLICITED,	IB_CQ_NEXT_COMP};struct ib_qp_cap {	u32	max_send_wr;	u32	max_recv_wr;	u32	max_send_sge;	u32	max_recv_sge;	u32	max_inline_data;};enum ib_sig_type {	IB_SIGNAL_ALL_WR,	IB_SIGNAL_REQ_WR};enum ib_qp_type {	/*	 * IB_QPT_SMI and IB_QPT_GSI have to be the first two entries	 * here (and in that order) since the MAD layer uses them as	 * indices into a 2-entry table.	 */	IB_QPT_SMI,	IB_QPT_GSI,	IB_QPT_RC,	IB_QPT_UC,	IB_QPT_UD,	IB_QPT_RAW_IPV6,	IB_QPT_RAW_ETY};struct ib_qp_init_attr {	void                  (*event_handler)(struct ib_event *, void *);	void		       *qp_context;	struct ib_cq	       *send_cq;	struct ib_cq	       *recv_cq;	struct ib_srq	       *srq;	struct ib_qp_cap	cap;	enum ib_sig_type	sq_sig_type;	enum ib_sig_type	rq_sig_type;	enum ib_qp_type		qp_type;	u8			port_num; /* special QP types only */};enum ib_rnr_timeout {	IB_RNR_TIMER_655_36 =  0,	IB_RNR_TIMER_000_01 =  1,	IB_RNR_TIMER_000_02 =  2,	IB_RNR_TIMER_000_03 =  3,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -