UAPI: (Scripted) Disintegrate include/rdma
Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Michael Kerrisk <mtk.manpages@gmail.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Dave Jones <davej@redhat.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:

committed by
Roland Dreier

parent
f4a75d2eb7
commit
7235aa79f6
@@ -1 +1,7 @@
|
||||
# UAPI Header export list
|
||||
header-y += ib_user_cm.h
|
||||
header-y += ib_user_mad.h
|
||||
header-y += ib_user_sa.h
|
||||
header-y += ib_user_verbs.h
|
||||
header-y += rdma_netlink.h
|
||||
header-y += rdma_user_cm.h
|
||||
|
325
include/uapi/rdma/ib_user_cm.h
Normal file
325
include/uapi/rdma/ib_user_cm.h
Normal file
@@ -0,0 +1,325 @@
|
||||
/*
|
||||
* Copyright (c) 2005 Topspin Communications. All rights reserved.
|
||||
* Copyright (c) 2005 Intel 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.
|
||||
*/
|
||||
|
||||
#ifndef IB_USER_CM_H
|
||||
#define IB_USER_CM_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <rdma/ib_user_sa.h>
|
||||
|
||||
#define IB_USER_CM_ABI_VERSION 5
|
||||
|
||||
enum {
|
||||
IB_USER_CM_CMD_CREATE_ID,
|
||||
IB_USER_CM_CMD_DESTROY_ID,
|
||||
IB_USER_CM_CMD_ATTR_ID,
|
||||
|
||||
IB_USER_CM_CMD_LISTEN,
|
||||
IB_USER_CM_CMD_NOTIFY,
|
||||
|
||||
IB_USER_CM_CMD_SEND_REQ,
|
||||
IB_USER_CM_CMD_SEND_REP,
|
||||
IB_USER_CM_CMD_SEND_RTU,
|
||||
IB_USER_CM_CMD_SEND_DREQ,
|
||||
IB_USER_CM_CMD_SEND_DREP,
|
||||
IB_USER_CM_CMD_SEND_REJ,
|
||||
IB_USER_CM_CMD_SEND_MRA,
|
||||
IB_USER_CM_CMD_SEND_LAP,
|
||||
IB_USER_CM_CMD_SEND_APR,
|
||||
IB_USER_CM_CMD_SEND_SIDR_REQ,
|
||||
IB_USER_CM_CMD_SEND_SIDR_REP,
|
||||
|
||||
IB_USER_CM_CMD_EVENT,
|
||||
IB_USER_CM_CMD_INIT_QP_ATTR,
|
||||
};
|
||||
/*
|
||||
* command ABI structures.
|
||||
*/
|
||||
struct ib_ucm_cmd_hdr {
|
||||
__u32 cmd;
|
||||
__u16 in;
|
||||
__u16 out;
|
||||
};
|
||||
|
||||
struct ib_ucm_create_id {
|
||||
__u64 uid;
|
||||
__u64 response;
|
||||
};
|
||||
|
||||
struct ib_ucm_create_id_resp {
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
struct ib_ucm_destroy_id {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_ucm_destroy_id_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
struct ib_ucm_attr_id {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_ucm_attr_id_resp {
|
||||
__be64 service_id;
|
||||
__be64 service_mask;
|
||||
__be32 local_id;
|
||||
__be32 remote_id;
|
||||
};
|
||||
|
||||
struct ib_ucm_init_qp_attr {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 qp_state;
|
||||
};
|
||||
|
||||
struct ib_ucm_listen {
|
||||
__be64 service_id;
|
||||
__be64 service_mask;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_ucm_notify {
|
||||
__u32 id;
|
||||
__u32 event;
|
||||
};
|
||||
|
||||
struct ib_ucm_private_data {
|
||||
__u64 data;
|
||||
__u32 id;
|
||||
__u8 len;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
struct ib_ucm_req {
|
||||
__u32 id;
|
||||
__u32 qpn;
|
||||
__u32 qp_type;
|
||||
__u32 psn;
|
||||
__be64 sid;
|
||||
__u64 data;
|
||||
__u64 primary_path;
|
||||
__u64 alternate_path;
|
||||
__u8 len;
|
||||
__u8 peer_to_peer;
|
||||
__u8 responder_resources;
|
||||
__u8 initiator_depth;
|
||||
__u8 remote_cm_response_timeout;
|
||||
__u8 flow_control;
|
||||
__u8 local_cm_response_timeout;
|
||||
__u8 retry_count;
|
||||
__u8 rnr_retry_count;
|
||||
__u8 max_cm_retries;
|
||||
__u8 srq;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct ib_ucm_rep {
|
||||
__u64 uid;
|
||||
__u64 data;
|
||||
__u32 id;
|
||||
__u32 qpn;
|
||||
__u32 psn;
|
||||
__u8 len;
|
||||
__u8 responder_resources;
|
||||
__u8 initiator_depth;
|
||||
__u8 target_ack_delay;
|
||||
__u8 failover_accepted;
|
||||
__u8 flow_control;
|
||||
__u8 rnr_retry_count;
|
||||
__u8 srq;
|
||||
__u8 reserved[4];
|
||||
};
|
||||
|
||||
struct ib_ucm_info {
|
||||
__u32 id;
|
||||
__u32 status;
|
||||
__u64 info;
|
||||
__u64 data;
|
||||
__u8 info_len;
|
||||
__u8 data_len;
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
struct ib_ucm_mra {
|
||||
__u64 data;
|
||||
__u32 id;
|
||||
__u8 len;
|
||||
__u8 timeout;
|
||||
__u8 reserved[2];
|
||||
};
|
||||
|
||||
struct ib_ucm_lap {
|
||||
__u64 path;
|
||||
__u64 data;
|
||||
__u32 id;
|
||||
__u8 len;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
struct ib_ucm_sidr_req {
|
||||
__u32 id;
|
||||
__u32 timeout;
|
||||
__be64 sid;
|
||||
__u64 data;
|
||||
__u64 path;
|
||||
__u16 reserved_pkey;
|
||||
__u8 len;
|
||||
__u8 max_cm_retries;
|
||||
__u8 reserved[4];
|
||||
};
|
||||
|
||||
struct ib_ucm_sidr_rep {
|
||||
__u32 id;
|
||||
__u32 qpn;
|
||||
__u32 qkey;
|
||||
__u32 status;
|
||||
__u64 info;
|
||||
__u64 data;
|
||||
__u8 info_len;
|
||||
__u8 data_len;
|
||||
__u8 reserved[6];
|
||||
};
|
||||
/*
|
||||
* event notification ABI structures.
|
||||
*/
|
||||
struct ib_ucm_event_get {
|
||||
__u64 response;
|
||||
__u64 data;
|
||||
__u64 info;
|
||||
__u8 data_len;
|
||||
__u8 info_len;
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
struct ib_ucm_req_event_resp {
|
||||
struct ib_user_path_rec primary_path;
|
||||
struct ib_user_path_rec alternate_path;
|
||||
__be64 remote_ca_guid;
|
||||
__u32 remote_qkey;
|
||||
__u32 remote_qpn;
|
||||
__u32 qp_type;
|
||||
__u32 starting_psn;
|
||||
__u8 responder_resources;
|
||||
__u8 initiator_depth;
|
||||
__u8 local_cm_response_timeout;
|
||||
__u8 flow_control;
|
||||
__u8 remote_cm_response_timeout;
|
||||
__u8 retry_count;
|
||||
__u8 rnr_retry_count;
|
||||
__u8 srq;
|
||||
__u8 port;
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
struct ib_ucm_rep_event_resp {
|
||||
__be64 remote_ca_guid;
|
||||
__u32 remote_qkey;
|
||||
__u32 remote_qpn;
|
||||
__u32 starting_psn;
|
||||
__u8 responder_resources;
|
||||
__u8 initiator_depth;
|
||||
__u8 target_ack_delay;
|
||||
__u8 failover_accepted;
|
||||
__u8 flow_control;
|
||||
__u8 rnr_retry_count;
|
||||
__u8 srq;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct ib_ucm_rej_event_resp {
|
||||
__u32 reason;
|
||||
/* ari in ib_ucm_event_get info field. */
|
||||
};
|
||||
|
||||
struct ib_ucm_mra_event_resp {
|
||||
__u8 timeout;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
struct ib_ucm_lap_event_resp {
|
||||
struct ib_user_path_rec path;
|
||||
};
|
||||
|
||||
struct ib_ucm_apr_event_resp {
|
||||
__u32 status;
|
||||
/* apr info in ib_ucm_event_get info field. */
|
||||
};
|
||||
|
||||
struct ib_ucm_sidr_req_event_resp {
|
||||
__u16 pkey;
|
||||
__u8 port;
|
||||
__u8 reserved;
|
||||
};
|
||||
|
||||
struct ib_ucm_sidr_rep_event_resp {
|
||||
__u32 status;
|
||||
__u32 qkey;
|
||||
__u32 qpn;
|
||||
/* info in ib_ucm_event_get info field. */
|
||||
};
|
||||
|
||||
#define IB_UCM_PRES_DATA 0x01
|
||||
#define IB_UCM_PRES_INFO 0x02
|
||||
#define IB_UCM_PRES_PRIMARY 0x04
|
||||
#define IB_UCM_PRES_ALTERNATE 0x08
|
||||
|
||||
struct ib_ucm_event_resp {
|
||||
__u64 uid;
|
||||
__u32 id;
|
||||
__u32 event;
|
||||
__u32 present;
|
||||
__u32 reserved;
|
||||
union {
|
||||
struct ib_ucm_req_event_resp req_resp;
|
||||
struct ib_ucm_rep_event_resp rep_resp;
|
||||
struct ib_ucm_rej_event_resp rej_resp;
|
||||
struct ib_ucm_mra_event_resp mra_resp;
|
||||
struct ib_ucm_lap_event_resp lap_resp;
|
||||
struct ib_ucm_apr_event_resp apr_resp;
|
||||
|
||||
struct ib_ucm_sidr_req_event_resp sidr_req_resp;
|
||||
struct ib_ucm_sidr_rep_event_resp sidr_rep_resp;
|
||||
|
||||
__u32 send_status;
|
||||
} u;
|
||||
};
|
||||
|
||||
#endif /* IB_USER_CM_H */
|
203
include/uapi/rdma/ib_user_mad.h
Normal file
203
include/uapi/rdma/ib_user_mad.h
Normal file
@@ -0,0 +1,203 @@
|
||||
/*
|
||||
* Copyright (c) 2004 Topspin Communications. All rights reserved.
|
||||
* Copyright (c) 2005 Voltaire, Inc. 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.
|
||||
*/
|
||||
|
||||
#ifndef IB_USER_MAD_H
|
||||
#define IB_USER_MAD_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
* compatibility are made.
|
||||
*/
|
||||
#define IB_USER_MAD_ABI_VERSION 5
|
||||
|
||||
/*
|
||||
* Make sure that all structs defined in this file remain laid out so
|
||||
* that they pack the same way on 32-bit and 64-bit architectures (to
|
||||
* avoid incompatibility between 32-bit userspace and 64-bit kernels).
|
||||
*/
|
||||
|
||||
/**
|
||||
* ib_user_mad_hdr_old - Old version of MAD packet header without pkey_index
|
||||
* @id - ID of agent MAD received with/to be sent with
|
||||
* @status - 0 on successful receive, ETIMEDOUT if no response
|
||||
* received (transaction ID in data[] will be set to TID of original
|
||||
* request) (ignored on send)
|
||||
* @timeout_ms - Milliseconds to wait for response (unset on receive)
|
||||
* @retries - Number of automatic retries to attempt
|
||||
* @qpn - Remote QP number received from/to be sent to
|
||||
* @qkey - Remote Q_Key to be sent with (unset on receive)
|
||||
* @lid - Remote lid received from/to be sent to
|
||||
* @sl - Service level received with/to be sent with
|
||||
* @path_bits - Local path bits received with/to be sent with
|
||||
* @grh_present - If set, GRH was received/should be sent
|
||||
* @gid_index - Local GID index to send with (unset on receive)
|
||||
* @hop_limit - Hop limit in GRH
|
||||
* @traffic_class - Traffic class in GRH
|
||||
* @gid - Remote GID in GRH
|
||||
* @flow_label - Flow label in GRH
|
||||
*/
|
||||
struct ib_user_mad_hdr_old {
|
||||
__u32 id;
|
||||
__u32 status;
|
||||
__u32 timeout_ms;
|
||||
__u32 retries;
|
||||
__u32 length;
|
||||
__be32 qpn;
|
||||
__be32 qkey;
|
||||
__be16 lid;
|
||||
__u8 sl;
|
||||
__u8 path_bits;
|
||||
__u8 grh_present;
|
||||
__u8 gid_index;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 gid[16];
|
||||
__be32 flow_label;
|
||||
};
|
||||
|
||||
/**
|
||||
* ib_user_mad_hdr - MAD packet header
|
||||
* This layout allows specifying/receiving the P_Key index. To use
|
||||
* this capability, an application must call the
|
||||
* IB_USER_MAD_ENABLE_PKEY ioctl on the user MAD file handle before
|
||||
* any other actions with the file handle.
|
||||
* @id - ID of agent MAD received with/to be sent with
|
||||
* @status - 0 on successful receive, ETIMEDOUT if no response
|
||||
* received (transaction ID in data[] will be set to TID of original
|
||||
* request) (ignored on send)
|
||||
* @timeout_ms - Milliseconds to wait for response (unset on receive)
|
||||
* @retries - Number of automatic retries to attempt
|
||||
* @qpn - Remote QP number received from/to be sent to
|
||||
* @qkey - Remote Q_Key to be sent with (unset on receive)
|
||||
* @lid - Remote lid received from/to be sent to
|
||||
* @sl - Service level received with/to be sent with
|
||||
* @path_bits - Local path bits received with/to be sent with
|
||||
* @grh_present - If set, GRH was received/should be sent
|
||||
* @gid_index - Local GID index to send with (unset on receive)
|
||||
* @hop_limit - Hop limit in GRH
|
||||
* @traffic_class - Traffic class in GRH
|
||||
* @gid - Remote GID in GRH
|
||||
* @flow_label - Flow label in GRH
|
||||
* @pkey_index - P_Key index
|
||||
*/
|
||||
struct ib_user_mad_hdr {
|
||||
__u32 id;
|
||||
__u32 status;
|
||||
__u32 timeout_ms;
|
||||
__u32 retries;
|
||||
__u32 length;
|
||||
__be32 qpn;
|
||||
__be32 qkey;
|
||||
__be16 lid;
|
||||
__u8 sl;
|
||||
__u8 path_bits;
|
||||
__u8 grh_present;
|
||||
__u8 gid_index;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 gid[16];
|
||||
__be32 flow_label;
|
||||
__u16 pkey_index;
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
/**
|
||||
* ib_user_mad - MAD packet
|
||||
* @hdr - MAD packet header
|
||||
* @data - Contents of MAD
|
||||
*
|
||||
*/
|
||||
struct ib_user_mad {
|
||||
struct ib_user_mad_hdr hdr;
|
||||
__u64 data[0];
|
||||
};
|
||||
|
||||
/*
|
||||
* Earlier versions of this interface definition declared the
|
||||
* method_mask[] member as an array of __u32 but treated it as a
|
||||
* bitmap made up of longs in the kernel. This ambiguity meant that
|
||||
* 32-bit big-endian applications that can run on both 32-bit and
|
||||
* 64-bit kernels had no consistent ABI to rely on, and 64-bit
|
||||
* big-endian applications that treated method_mask as being made up
|
||||
* of 32-bit words would have their bitmap misinterpreted.
|
||||
*
|
||||
* To clear up this confusion, we change the declaration of
|
||||
* method_mask[] to use unsigned long and handle the conversion from
|
||||
* 32-bit userspace to 64-bit kernel for big-endian systems in the
|
||||
* compat_ioctl method. Unfortunately, to keep the structure layout
|
||||
* the same, we need the method_mask[] array to be aligned only to 4
|
||||
* bytes even when long is 64 bits, which forces us into this ugly
|
||||
* typedef.
|
||||
*/
|
||||
typedef unsigned long __attribute__((aligned(4))) packed_ulong;
|
||||
#define IB_USER_MAD_LONGS_PER_METHOD_MASK (128 / (8 * sizeof (long)))
|
||||
|
||||
/**
|
||||
* ib_user_mad_reg_req - MAD registration request
|
||||
* @id - Set by the kernel; used to identify agent in future requests.
|
||||
* @qpn - Queue pair number; must be 0 or 1.
|
||||
* @method_mask - The caller will receive unsolicited MADs for any method
|
||||
* where @method_mask = 1.
|
||||
* @mgmt_class - Indicates which management class of MADs should be receive
|
||||
* by the caller. This field is only required if the user wishes to
|
||||
* receive unsolicited MADs, otherwise it should be 0.
|
||||
* @mgmt_class_version - Indicates which version of MADs for the given
|
||||
* management class to receive.
|
||||
* @oui: Indicates IEEE OUI when mgmt_class is a vendor class
|
||||
* in the range from 0x30 to 0x4f. Otherwise not used.
|
||||
* @rmpp_version: If set, indicates the RMPP version used.
|
||||
*
|
||||
*/
|
||||
struct ib_user_mad_reg_req {
|
||||
__u32 id;
|
||||
packed_ulong method_mask[IB_USER_MAD_LONGS_PER_METHOD_MASK];
|
||||
__u8 qpn;
|
||||
__u8 mgmt_class;
|
||||
__u8 mgmt_class_version;
|
||||
__u8 oui[3];
|
||||
__u8 rmpp_version;
|
||||
};
|
||||
|
||||
#define IB_IOCTL_MAGIC 0x1b
|
||||
|
||||
#define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, \
|
||||
struct ib_user_mad_reg_req)
|
||||
|
||||
#define IB_USER_MAD_UNREGISTER_AGENT _IOW(IB_IOCTL_MAGIC, 2, __u32)
|
||||
|
||||
#define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3)
|
||||
|
||||
#endif /* IB_USER_MAD_H */
|
76
include/uapi/rdma/ib_user_sa.h
Normal file
76
include/uapi/rdma/ib_user_sa.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (c) 2005 Intel 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.
|
||||
*/
|
||||
|
||||
#ifndef IB_USER_SA_H
|
||||
#define IB_USER_SA_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
IB_PATH_GMP = 1,
|
||||
IB_PATH_PRIMARY = (1<<1),
|
||||
IB_PATH_ALTERNATE = (1<<2),
|
||||
IB_PATH_OUTBOUND = (1<<3),
|
||||
IB_PATH_INBOUND = (1<<4),
|
||||
IB_PATH_INBOUND_REVERSE = (1<<5),
|
||||
IB_PATH_BIDIRECTIONAL = IB_PATH_OUTBOUND | IB_PATH_INBOUND_REVERSE
|
||||
};
|
||||
|
||||
struct ib_path_rec_data {
|
||||
__u32 flags;
|
||||
__u32 reserved;
|
||||
__u32 path_rec[16];
|
||||
};
|
||||
|
||||
struct ib_user_path_rec {
|
||||
__u8 dgid[16];
|
||||
__u8 sgid[16];
|
||||
__be16 dlid;
|
||||
__be16 slid;
|
||||
__u32 raw_traffic;
|
||||
__be32 flow_label;
|
||||
__u32 reversible;
|
||||
__u32 mtu;
|
||||
__be16 pkey;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 numb_path;
|
||||
__u8 sl;
|
||||
__u8 mtu_selector;
|
||||
__u8 rate_selector;
|
||||
__u8 rate;
|
||||
__u8 packet_life_time_selector;
|
||||
__u8 packet_life_time;
|
||||
__u8 preference;
|
||||
};
|
||||
|
||||
#endif /* IB_USER_SA_H */
|
734
include/uapi/rdma/ib_user_verbs.h
Normal file
734
include/uapi/rdma/ib_user_verbs.h
Normal file
@@ -0,0 +1,734 @@
|
||||
/*
|
||||
* Copyright (c) 2005 Topspin Communications. All rights reserved.
|
||||
* Copyright (c) 2005, 2006 Cisco Systems. All rights reserved.
|
||||
* Copyright (c) 2005 PathScale, Inc. All rights reserved.
|
||||
* Copyright (c) 2006 Mellanox Technologies. 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.
|
||||
*/
|
||||
|
||||
#ifndef IB_USER_VERBS_H
|
||||
#define IB_USER_VERBS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
* compatibility are made.
|
||||
*/
|
||||
#define IB_USER_VERBS_ABI_VERSION 6
|
||||
|
||||
enum {
|
||||
IB_USER_VERBS_CMD_GET_CONTEXT,
|
||||
IB_USER_VERBS_CMD_QUERY_DEVICE,
|
||||
IB_USER_VERBS_CMD_QUERY_PORT,
|
||||
IB_USER_VERBS_CMD_ALLOC_PD,
|
||||
IB_USER_VERBS_CMD_DEALLOC_PD,
|
||||
IB_USER_VERBS_CMD_CREATE_AH,
|
||||
IB_USER_VERBS_CMD_MODIFY_AH,
|
||||
IB_USER_VERBS_CMD_QUERY_AH,
|
||||
IB_USER_VERBS_CMD_DESTROY_AH,
|
||||
IB_USER_VERBS_CMD_REG_MR,
|
||||
IB_USER_VERBS_CMD_REG_SMR,
|
||||
IB_USER_VERBS_CMD_REREG_MR,
|
||||
IB_USER_VERBS_CMD_QUERY_MR,
|
||||
IB_USER_VERBS_CMD_DEREG_MR,
|
||||
IB_USER_VERBS_CMD_ALLOC_MW,
|
||||
IB_USER_VERBS_CMD_BIND_MW,
|
||||
IB_USER_VERBS_CMD_DEALLOC_MW,
|
||||
IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL,
|
||||
IB_USER_VERBS_CMD_CREATE_CQ,
|
||||
IB_USER_VERBS_CMD_RESIZE_CQ,
|
||||
IB_USER_VERBS_CMD_DESTROY_CQ,
|
||||
IB_USER_VERBS_CMD_POLL_CQ,
|
||||
IB_USER_VERBS_CMD_PEEK_CQ,
|
||||
IB_USER_VERBS_CMD_REQ_NOTIFY_CQ,
|
||||
IB_USER_VERBS_CMD_CREATE_QP,
|
||||
IB_USER_VERBS_CMD_QUERY_QP,
|
||||
IB_USER_VERBS_CMD_MODIFY_QP,
|
||||
IB_USER_VERBS_CMD_DESTROY_QP,
|
||||
IB_USER_VERBS_CMD_POST_SEND,
|
||||
IB_USER_VERBS_CMD_POST_RECV,
|
||||
IB_USER_VERBS_CMD_ATTACH_MCAST,
|
||||
IB_USER_VERBS_CMD_DETACH_MCAST,
|
||||
IB_USER_VERBS_CMD_CREATE_SRQ,
|
||||
IB_USER_VERBS_CMD_MODIFY_SRQ,
|
||||
IB_USER_VERBS_CMD_QUERY_SRQ,
|
||||
IB_USER_VERBS_CMD_DESTROY_SRQ,
|
||||
IB_USER_VERBS_CMD_POST_SRQ_RECV,
|
||||
IB_USER_VERBS_CMD_OPEN_XRCD,
|
||||
IB_USER_VERBS_CMD_CLOSE_XRCD,
|
||||
IB_USER_VERBS_CMD_CREATE_XSRQ,
|
||||
IB_USER_VERBS_CMD_OPEN_QP
|
||||
};
|
||||
|
||||
/*
|
||||
* Make sure that all structs defined in this file remain laid out so
|
||||
* that they pack the same way on 32-bit and 64-bit architectures (to
|
||||
* avoid incompatibility between 32-bit userspace and 64-bit kernels).
|
||||
* Specifically:
|
||||
* - Do not use pointer types -- pass pointers in __u64 instead.
|
||||
* - Make sure that any structure larger than 4 bytes is padded to a
|
||||
* multiple of 8 bytes. Otherwise the structure size will be
|
||||
* different between 32-bit and 64-bit architectures.
|
||||
*/
|
||||
|
||||
struct ib_uverbs_async_event_desc {
|
||||
__u64 element;
|
||||
__u32 event_type; /* enum ib_event_type */
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_comp_event_desc {
|
||||
__u64 cq_handle;
|
||||
};
|
||||
|
||||
/*
|
||||
* All commands from userspace should start with a __u32 command field
|
||||
* followed by __u16 in_words and out_words fields (which give the
|
||||
* length of the command block and response buffer if any in 32-bit
|
||||
* words). The kernel driver will read these fields first and read
|
||||
* the rest of the command struct based on these value.
|
||||
*/
|
||||
|
||||
struct ib_uverbs_cmd_hdr {
|
||||
__u32 command;
|
||||
__u16 in_words;
|
||||
__u16 out_words;
|
||||
};
|
||||
|
||||
struct ib_uverbs_get_context {
|
||||
__u64 response;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_get_context_resp {
|
||||
__u32 async_fd;
|
||||
__u32 num_comp_vectors;
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_device {
|
||||
__u64 response;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_device_resp {
|
||||
__u64 fw_ver;
|
||||
__be64 node_guid;
|
||||
__be64 sys_image_guid;
|
||||
__u64 max_mr_size;
|
||||
__u64 page_size_cap;
|
||||
__u32 vendor_id;
|
||||
__u32 vendor_part_id;
|
||||
__u32 hw_ver;
|
||||
__u32 max_qp;
|
||||
__u32 max_qp_wr;
|
||||
__u32 device_cap_flags;
|
||||
__u32 max_sge;
|
||||
__u32 max_sge_rd;
|
||||
__u32 max_cq;
|
||||
__u32 max_cqe;
|
||||
__u32 max_mr;
|
||||
__u32 max_pd;
|
||||
__u32 max_qp_rd_atom;
|
||||
__u32 max_ee_rd_atom;
|
||||
__u32 max_res_rd_atom;
|
||||
__u32 max_qp_init_rd_atom;
|
||||
__u32 max_ee_init_rd_atom;
|
||||
__u32 atomic_cap;
|
||||
__u32 max_ee;
|
||||
__u32 max_rdd;
|
||||
__u32 max_mw;
|
||||
__u32 max_raw_ipv6_qp;
|
||||
__u32 max_raw_ethy_qp;
|
||||
__u32 max_mcast_grp;
|
||||
__u32 max_mcast_qp_attach;
|
||||
__u32 max_total_mcast_qp_attach;
|
||||
__u32 max_ah;
|
||||
__u32 max_fmr;
|
||||
__u32 max_map_per_fmr;
|
||||
__u32 max_srq;
|
||||
__u32 max_srq_wr;
|
||||
__u32 max_srq_sge;
|
||||
__u16 max_pkeys;
|
||||
__u8 local_ca_ack_delay;
|
||||
__u8 phys_port_cnt;
|
||||
__u8 reserved[4];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_port {
|
||||
__u64 response;
|
||||
__u8 port_num;
|
||||
__u8 reserved[7];
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_port_resp {
|
||||
__u32 port_cap_flags;
|
||||
__u32 max_msg_sz;
|
||||
__u32 bad_pkey_cntr;
|
||||
__u32 qkey_viol_cntr;
|
||||
__u32 gid_tbl_len;
|
||||
__u16 pkey_tbl_len;
|
||||
__u16 lid;
|
||||
__u16 sm_lid;
|
||||
__u8 state;
|
||||
__u8 max_mtu;
|
||||
__u8 active_mtu;
|
||||
__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;
|
||||
__u8 link_layer;
|
||||
__u8 reserved[2];
|
||||
};
|
||||
|
||||
struct ib_uverbs_alloc_pd {
|
||||
__u64 response;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_alloc_pd_resp {
|
||||
__u32 pd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_dealloc_pd {
|
||||
__u32 pd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_xrcd {
|
||||
__u64 response;
|
||||
__u32 fd;
|
||||
__u32 oflags;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_xrcd_resp {
|
||||
__u32 xrcd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_close_xrcd {
|
||||
__u32 xrcd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_reg_mr {
|
||||
__u64 response;
|
||||
__u64 start;
|
||||
__u64 length;
|
||||
__u64 hca_va;
|
||||
__u32 pd_handle;
|
||||
__u32 access_flags;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_reg_mr_resp {
|
||||
__u32 mr_handle;
|
||||
__u32 lkey;
|
||||
__u32 rkey;
|
||||
};
|
||||
|
||||
struct ib_uverbs_dereg_mr {
|
||||
__u32 mr_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_comp_channel {
|
||||
__u64 response;
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_comp_channel_resp {
|
||||
__u32 fd;
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_cq {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 cqe;
|
||||
__u32 comp_vector;
|
||||
__s32 comp_channel;
|
||||
__u32 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_cq_resp {
|
||||
__u32 cq_handle;
|
||||
__u32 cqe;
|
||||
};
|
||||
|
||||
struct ib_uverbs_resize_cq {
|
||||
__u64 response;
|
||||
__u32 cq_handle;
|
||||
__u32 cqe;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_resize_cq_resp {
|
||||
__u32 cqe;
|
||||
__u32 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_poll_cq {
|
||||
__u64 response;
|
||||
__u32 cq_handle;
|
||||
__u32 ne;
|
||||
};
|
||||
|
||||
struct ib_uverbs_wc {
|
||||
__u64 wr_id;
|
||||
__u32 status;
|
||||
__u32 opcode;
|
||||
__u32 vendor_err;
|
||||
__u32 byte_len;
|
||||
union {
|
||||
__u32 imm_data;
|
||||
__u32 invalidate_rkey;
|
||||
} ex;
|
||||
__u32 qp_num;
|
||||
__u32 src_qp;
|
||||
__u32 wc_flags;
|
||||
__u16 pkey_index;
|
||||
__u16 slid;
|
||||
__u8 sl;
|
||||
__u8 dlid_path_bits;
|
||||
__u8 port_num;
|
||||
__u8 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_poll_cq_resp {
|
||||
__u32 count;
|
||||
__u32 reserved;
|
||||
struct ib_uverbs_wc wc[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_req_notify_cq {
|
||||
__u32 cq_handle;
|
||||
__u32 solicited_only;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_cq {
|
||||
__u64 response;
|
||||
__u32 cq_handle;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_cq_resp {
|
||||
__u32 comp_events_reported;
|
||||
__u32 async_events_reported;
|
||||
};
|
||||
|
||||
struct ib_uverbs_global_route {
|
||||
__u8 dgid[16];
|
||||
__u32 flow_label;
|
||||
__u8 sgid_index;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_ah_attr {
|
||||
struct ib_uverbs_global_route grh;
|
||||
__u16 dlid;
|
||||
__u8 sl;
|
||||
__u8 src_path_bits;
|
||||
__u8 static_rate;
|
||||
__u8 is_global;
|
||||
__u8 port_num;
|
||||
__u8 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_qp_attr {
|
||||
__u32 qp_attr_mask;
|
||||
__u32 qp_state;
|
||||
__u32 cur_qp_state;
|
||||
__u32 path_mtu;
|
||||
__u32 path_mig_state;
|
||||
__u32 qkey;
|
||||
__u32 rq_psn;
|
||||
__u32 sq_psn;
|
||||
__u32 dest_qp_num;
|
||||
__u32 qp_access_flags;
|
||||
|
||||
struct ib_uverbs_ah_attr ah_attr;
|
||||
struct ib_uverbs_ah_attr alt_ah_attr;
|
||||
|
||||
/* ib_qp_cap */
|
||||
__u32 max_send_wr;
|
||||
__u32 max_recv_wr;
|
||||
__u32 max_send_sge;
|
||||
__u32 max_recv_sge;
|
||||
__u32 max_inline_data;
|
||||
|
||||
__u16 pkey_index;
|
||||
__u16 alt_pkey_index;
|
||||
__u8 en_sqd_async_notify;
|
||||
__u8 sq_draining;
|
||||
__u8 max_rd_atomic;
|
||||
__u8 max_dest_rd_atomic;
|
||||
__u8 min_rnr_timer;
|
||||
__u8 port_num;
|
||||
__u8 timeout;
|
||||
__u8 retry_cnt;
|
||||
__u8 rnr_retry;
|
||||
__u8 alt_port_num;
|
||||
__u8 alt_timeout;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_qp {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
__u32 send_cq_handle;
|
||||
__u32 recv_cq_handle;
|
||||
__u32 srq_handle;
|
||||
__u32 max_send_wr;
|
||||
__u32 max_recv_wr;
|
||||
__u32 max_send_sge;
|
||||
__u32 max_recv_sge;
|
||||
__u32 max_inline_data;
|
||||
__u8 sq_sig_all;
|
||||
__u8 qp_type;
|
||||
__u8 is_srq;
|
||||
__u8 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_qp {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
__u32 qpn;
|
||||
__u8 qp_type;
|
||||
__u8 reserved[7];
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
/* also used for open response */
|
||||
struct ib_uverbs_create_qp_resp {
|
||||
__u32 qp_handle;
|
||||
__u32 qpn;
|
||||
__u32 max_send_wr;
|
||||
__u32 max_recv_wr;
|
||||
__u32 max_send_sge;
|
||||
__u32 max_recv_sge;
|
||||
__u32 max_inline_data;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/*
|
||||
* This struct needs to remain a multiple of 8 bytes to keep the
|
||||
* alignment of the modify QP parameters.
|
||||
*/
|
||||
struct ib_uverbs_qp_dest {
|
||||
__u8 dgid[16];
|
||||
__u32 flow_label;
|
||||
__u16 dlid;
|
||||
__u16 reserved;
|
||||
__u8 sgid_index;
|
||||
__u8 hop_limit;
|
||||
__u8 traffic_class;
|
||||
__u8 sl;
|
||||
__u8 src_path_bits;
|
||||
__u8 static_rate;
|
||||
__u8 is_global;
|
||||
__u8 port_num;
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_qp {
|
||||
__u64 response;
|
||||
__u32 qp_handle;
|
||||
__u32 attr_mask;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_qp_resp {
|
||||
struct ib_uverbs_qp_dest dest;
|
||||
struct ib_uverbs_qp_dest alt_dest;
|
||||
__u32 max_send_wr;
|
||||
__u32 max_recv_wr;
|
||||
__u32 max_send_sge;
|
||||
__u32 max_recv_sge;
|
||||
__u32 max_inline_data;
|
||||
__u32 qkey;
|
||||
__u32 rq_psn;
|
||||
__u32 sq_psn;
|
||||
__u32 dest_qp_num;
|
||||
__u32 qp_access_flags;
|
||||
__u16 pkey_index;
|
||||
__u16 alt_pkey_index;
|
||||
__u8 qp_state;
|
||||
__u8 cur_qp_state;
|
||||
__u8 path_mtu;
|
||||
__u8 path_mig_state;
|
||||
__u8 sq_draining;
|
||||
__u8 max_rd_atomic;
|
||||
__u8 max_dest_rd_atomic;
|
||||
__u8 min_rnr_timer;
|
||||
__u8 port_num;
|
||||
__u8 timeout;
|
||||
__u8 retry_cnt;
|
||||
__u8 rnr_retry;
|
||||
__u8 alt_port_num;
|
||||
__u8 alt_timeout;
|
||||
__u8 sq_sig_all;
|
||||
__u8 reserved[5];
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_modify_qp {
|
||||
struct ib_uverbs_qp_dest dest;
|
||||
struct ib_uverbs_qp_dest alt_dest;
|
||||
__u32 qp_handle;
|
||||
__u32 attr_mask;
|
||||
__u32 qkey;
|
||||
__u32 rq_psn;
|
||||
__u32 sq_psn;
|
||||
__u32 dest_qp_num;
|
||||
__u32 qp_access_flags;
|
||||
__u16 pkey_index;
|
||||
__u16 alt_pkey_index;
|
||||
__u8 qp_state;
|
||||
__u8 cur_qp_state;
|
||||
__u8 path_mtu;
|
||||
__u8 path_mig_state;
|
||||
__u8 en_sqd_async_notify;
|
||||
__u8 max_rd_atomic;
|
||||
__u8 max_dest_rd_atomic;
|
||||
__u8 min_rnr_timer;
|
||||
__u8 port_num;
|
||||
__u8 timeout;
|
||||
__u8 retry_cnt;
|
||||
__u8 rnr_retry;
|
||||
__u8 alt_port_num;
|
||||
__u8 alt_timeout;
|
||||
__u8 reserved[2];
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_modify_qp_resp {
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_qp {
|
||||
__u64 response;
|
||||
__u32 qp_handle;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_qp_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
/*
|
||||
* The ib_uverbs_sge structure isn't used anywhere, since we assume
|
||||
* the ib_sge structure is packed the same way on 32-bit and 64-bit
|
||||
* architectures in both kernel and user space. It's just here to
|
||||
* document the ABI.
|
||||
*/
|
||||
struct ib_uverbs_sge {
|
||||
__u64 addr;
|
||||
__u32 length;
|
||||
__u32 lkey;
|
||||
};
|
||||
|
||||
struct ib_uverbs_send_wr {
|
||||
__u64 wr_id;
|
||||
__u32 num_sge;
|
||||
__u32 opcode;
|
||||
__u32 send_flags;
|
||||
union {
|
||||
__u32 imm_data;
|
||||
__u32 invalidate_rkey;
|
||||
} ex;
|
||||
union {
|
||||
struct {
|
||||
__u64 remote_addr;
|
||||
__u32 rkey;
|
||||
__u32 reserved;
|
||||
} rdma;
|
||||
struct {
|
||||
__u64 remote_addr;
|
||||
__u64 compare_add;
|
||||
__u64 swap;
|
||||
__u32 rkey;
|
||||
__u32 reserved;
|
||||
} atomic;
|
||||
struct {
|
||||
__u32 ah;
|
||||
__u32 remote_qpn;
|
||||
__u32 remote_qkey;
|
||||
__u32 reserved;
|
||||
} ud;
|
||||
} wr;
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_send {
|
||||
__u64 response;
|
||||
__u32 qp_handle;
|
||||
__u32 wr_count;
|
||||
__u32 sge_count;
|
||||
__u32 wqe_size;
|
||||
struct ib_uverbs_send_wr send_wr[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_send_resp {
|
||||
__u32 bad_wr;
|
||||
};
|
||||
|
||||
struct ib_uverbs_recv_wr {
|
||||
__u64 wr_id;
|
||||
__u32 num_sge;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_recv {
|
||||
__u64 response;
|
||||
__u32 qp_handle;
|
||||
__u32 wr_count;
|
||||
__u32 sge_count;
|
||||
__u32 wqe_size;
|
||||
struct ib_uverbs_recv_wr recv_wr[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_recv_resp {
|
||||
__u32 bad_wr;
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_srq_recv {
|
||||
__u64 response;
|
||||
__u32 srq_handle;
|
||||
__u32 wr_count;
|
||||
__u32 sge_count;
|
||||
__u32 wqe_size;
|
||||
struct ib_uverbs_recv_wr recv[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_post_srq_recv_resp {
|
||||
__u32 bad_wr;
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_ah {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
__u32 reserved;
|
||||
struct ib_uverbs_ah_attr attr;
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_ah_resp {
|
||||
__u32 ah_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_ah {
|
||||
__u32 ah_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_attach_mcast {
|
||||
__u8 gid[16];
|
||||
__u32 qp_handle;
|
||||
__u16 mlid;
|
||||
__u16 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_detach_mcast {
|
||||
__u8 gid[16];
|
||||
__u32 qp_handle;
|
||||
__u16 mlid;
|
||||
__u16 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_srq {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 srq_limit;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_xsrq {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 srq_type;
|
||||
__u32 pd_handle;
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 srq_limit;
|
||||
__u32 reserved;
|
||||
__u32 xrcd_handle;
|
||||
__u32 cq_handle;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_srq_resp {
|
||||
__u32 srq_handle;
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 srqn;
|
||||
};
|
||||
|
||||
struct ib_uverbs_modify_srq {
|
||||
__u32 srq_handle;
|
||||
__u32 attr_mask;
|
||||
__u32 max_wr;
|
||||
__u32 srq_limit;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_srq {
|
||||
__u64 response;
|
||||
__u32 srq_handle;
|
||||
__u32 reserved;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_query_srq_resp {
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 srq_limit;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_srq {
|
||||
__u64 response;
|
||||
__u32 srq_handle;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_srq_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
#endif /* IB_USER_VERBS_H */
|
37
include/uapi/rdma/rdma_netlink.h
Normal file
37
include/uapi/rdma/rdma_netlink.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifndef _UAPI_RDMA_NETLINK_H
|
||||
#define _UAPI_RDMA_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
RDMA_NL_RDMA_CM = 1
|
||||
};
|
||||
|
||||
#define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
|
||||
#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
|
||||
#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
|
||||
|
||||
enum {
|
||||
RDMA_NL_RDMA_CM_ID_STATS = 0,
|
||||
RDMA_NL_RDMA_CM_NUM_OPS
|
||||
};
|
||||
|
||||
enum {
|
||||
RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
|
||||
RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
|
||||
RDMA_NL_RDMA_CM_NUM_ATTR,
|
||||
};
|
||||
|
||||
struct rdma_cm_id_stats {
|
||||
__u32 qp_num;
|
||||
__u32 bound_dev_if;
|
||||
__u32 port_space;
|
||||
__s32 pid;
|
||||
__u8 cm_state;
|
||||
__u8 node_type;
|
||||
__u8 port_num;
|
||||
__u8 qp_type;
|
||||
};
|
||||
|
||||
|
||||
#endif /* _UAPI_RDMA_NETLINK_H */
|
249
include/uapi/rdma/rdma_user_cm.h
Normal file
249
include/uapi/rdma/rdma_user_cm.h
Normal file
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* Copyright (c) 2005-2006 Intel 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.
|
||||
*/
|
||||
|
||||
#ifndef RDMA_USER_CM_H
|
||||
#define RDMA_USER_CM_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/in6.h>
|
||||
#include <rdma/ib_user_verbs.h>
|
||||
#include <rdma/ib_user_sa.h>
|
||||
|
||||
#define RDMA_USER_CM_ABI_VERSION 4
|
||||
|
||||
#define RDMA_MAX_PRIVATE_DATA 256
|
||||
|
||||
enum {
|
||||
RDMA_USER_CM_CMD_CREATE_ID,
|
||||
RDMA_USER_CM_CMD_DESTROY_ID,
|
||||
RDMA_USER_CM_CMD_BIND_ADDR,
|
||||
RDMA_USER_CM_CMD_RESOLVE_ADDR,
|
||||
RDMA_USER_CM_CMD_RESOLVE_ROUTE,
|
||||
RDMA_USER_CM_CMD_QUERY_ROUTE,
|
||||
RDMA_USER_CM_CMD_CONNECT,
|
||||
RDMA_USER_CM_CMD_LISTEN,
|
||||
RDMA_USER_CM_CMD_ACCEPT,
|
||||
RDMA_USER_CM_CMD_REJECT,
|
||||
RDMA_USER_CM_CMD_DISCONNECT,
|
||||
RDMA_USER_CM_CMD_INIT_QP_ATTR,
|
||||
RDMA_USER_CM_CMD_GET_EVENT,
|
||||
RDMA_USER_CM_CMD_GET_OPTION,
|
||||
RDMA_USER_CM_CMD_SET_OPTION,
|
||||
RDMA_USER_CM_CMD_NOTIFY,
|
||||
RDMA_USER_CM_CMD_JOIN_MCAST,
|
||||
RDMA_USER_CM_CMD_LEAVE_MCAST,
|
||||
RDMA_USER_CM_CMD_MIGRATE_ID
|
||||
};
|
||||
|
||||
/*
|
||||
* command ABI structures.
|
||||
*/
|
||||
struct rdma_ucm_cmd_hdr {
|
||||
__u32 cmd;
|
||||
__u16 in;
|
||||
__u16 out;
|
||||
};
|
||||
|
||||
struct rdma_ucm_create_id {
|
||||
__u64 uid;
|
||||
__u64 response;
|
||||
__u16 ps;
|
||||
__u8 qp_type;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct rdma_ucm_create_id_resp {
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
struct rdma_ucm_destroy_id {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct rdma_ucm_destroy_id_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
struct rdma_ucm_bind_addr {
|
||||
__u64 response;
|
||||
struct sockaddr_in6 addr;
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
struct rdma_ucm_resolve_addr {
|
||||
struct sockaddr_in6 src_addr;
|
||||
struct sockaddr_in6 dst_addr;
|
||||
__u32 id;
|
||||
__u32 timeout_ms;
|
||||
};
|
||||
|
||||
struct rdma_ucm_resolve_route {
|
||||
__u32 id;
|
||||
__u32 timeout_ms;
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_route {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_route_resp {
|
||||
__u64 node_guid;
|
||||
struct ib_user_path_rec ib_route[2];
|
||||
struct sockaddr_in6 src_addr;
|
||||
struct sockaddr_in6 dst_addr;
|
||||
__u32 num_paths;
|
||||
__u8 port_num;
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
struct rdma_ucm_conn_param {
|
||||
__u32 qp_num;
|
||||
__u32 reserved;
|
||||
__u8 private_data[RDMA_MAX_PRIVATE_DATA];
|
||||
__u8 private_data_len;
|
||||
__u8 srq;
|
||||
__u8 responder_resources;
|
||||
__u8 initiator_depth;
|
||||
__u8 flow_control;
|
||||
__u8 retry_count;
|
||||
__u8 rnr_retry_count;
|
||||
__u8 valid;
|
||||
};
|
||||
|
||||
struct rdma_ucm_ud_param {
|
||||
__u32 qp_num;
|
||||
__u32 qkey;
|
||||
struct ib_uverbs_ah_attr ah_attr;
|
||||
__u8 private_data[RDMA_MAX_PRIVATE_DATA];
|
||||
__u8 private_data_len;
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
struct rdma_ucm_connect {
|
||||
struct rdma_ucm_conn_param conn_param;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct rdma_ucm_listen {
|
||||
__u32 id;
|
||||
__u32 backlog;
|
||||
};
|
||||
|
||||
struct rdma_ucm_accept {
|
||||
__u64 uid;
|
||||
struct rdma_ucm_conn_param conn_param;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct rdma_ucm_reject {
|
||||
__u32 id;
|
||||
__u8 private_data_len;
|
||||
__u8 reserved[3];
|
||||
__u8 private_data[RDMA_MAX_PRIVATE_DATA];
|
||||
};
|
||||
|
||||
struct rdma_ucm_disconnect {
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
struct rdma_ucm_init_qp_attr {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 qp_state;
|
||||
};
|
||||
|
||||
struct rdma_ucm_notify {
|
||||
__u32 id;
|
||||
__u32 event;
|
||||
};
|
||||
|
||||
struct rdma_ucm_join_mcast {
|
||||
__u64 response; /* rdma_ucm_create_id_resp */
|
||||
__u64 uid;
|
||||
struct sockaddr_in6 addr;
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
struct rdma_ucm_get_event {
|
||||
__u64 response;
|
||||
};
|
||||
|
||||
struct rdma_ucm_event_resp {
|
||||
__u64 uid;
|
||||
__u32 id;
|
||||
__u32 event;
|
||||
__u32 status;
|
||||
union {
|
||||
struct rdma_ucm_conn_param conn;
|
||||
struct rdma_ucm_ud_param ud;
|
||||
} param;
|
||||
};
|
||||
|
||||
/* Option levels */
|
||||
enum {
|
||||
RDMA_OPTION_ID = 0,
|
||||
RDMA_OPTION_IB = 1
|
||||
};
|
||||
|
||||
/* Option details */
|
||||
enum {
|
||||
RDMA_OPTION_ID_TOS = 0,
|
||||
RDMA_OPTION_ID_REUSEADDR = 1,
|
||||
RDMA_OPTION_ID_AFONLY = 2,
|
||||
RDMA_OPTION_IB_PATH = 1
|
||||
};
|
||||
|
||||
struct rdma_ucm_set_option {
|
||||
__u64 optval;
|
||||
__u32 id;
|
||||
__u32 level;
|
||||
__u32 optname;
|
||||
__u32 optlen;
|
||||
};
|
||||
|
||||
struct rdma_ucm_migrate_id {
|
||||
__u64 response;
|
||||
__u32 id;
|
||||
__u32 fd;
|
||||
};
|
||||
|
||||
struct rdma_ucm_migrate_resp {
|
||||
__u32 events_reported;
|
||||
};
|
||||
|
||||
#endif /* RDMA_USER_CM_H */
|
Reference in New Issue
Block a user