]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
rdma: Move RDMA UAPI header file to be under RDMA responsibility
authorLeon Romanovsky <leonro@mellanox.com>
Sun, 25 Mar 2018 06:38:56 +0000 (09:38 +0300)
committerDavid Ahern <dsahern@gmail.com>
Mon, 26 Mar 2018 14:02:19 +0000 (07:02 -0700)
In iproute2 package, the updates of UAPIs files are performed
after the needed feature lands in kernel's net-next tree.

Such development flow created delays to the rdma tool developers,
who uses rdma-next tree as a basis for their work.

Move RDMA UAPI file to be under rdma/ folder, so whole responsibility
of syncing this file will be on them.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
include/uapi/rdma/rdma_netlink.h [deleted file]
rdma/Makefile
rdma/include/uapi/rdma/rdma_netlink.h [new file with mode: 0644]

diff --git a/include/uapi/rdma/rdma_netlink.h b/include/uapi/rdma/rdma_netlink.h
deleted file mode 100644 (file)
index dbac3b8..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
-#ifndef _RDMA_NETLINK_H
-#define _RDMA_NETLINK_H
-
-#include <linux/types.h>
-
-enum {
-       RDMA_NL_RDMA_CM = 1,
-       RDMA_NL_IWCM,
-       RDMA_NL_RSVD,
-       RDMA_NL_LS,     /* RDMA Local Services */
-       RDMA_NL_NLDEV,  /* RDMA device interface */
-       RDMA_NL_NUM_CLIENTS
-};
-
-enum {
-       RDMA_NL_GROUP_CM = 1,
-       RDMA_NL_GROUP_IWPM,
-       RDMA_NL_GROUP_LS,
-       RDMA_NL_NUM_GROUPS
-};
-
-#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,
-};
-
-/* iwarp port mapper op-codes */
-enum {
-       RDMA_NL_IWPM_REG_PID = 0,
-       RDMA_NL_IWPM_ADD_MAPPING,
-       RDMA_NL_IWPM_QUERY_MAPPING,
-       RDMA_NL_IWPM_REMOVE_MAPPING,
-       RDMA_NL_IWPM_REMOTE_INFO,
-       RDMA_NL_IWPM_HANDLE_ERR,
-       RDMA_NL_IWPM_MAPINFO,
-       RDMA_NL_IWPM_MAPINFO_NUM,
-       RDMA_NL_IWPM_NUM_OPS
-};
-
-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;
-};
-
-enum {
-       IWPM_NLA_REG_PID_UNSPEC = 0,
-       IWPM_NLA_REG_PID_SEQ,
-       IWPM_NLA_REG_IF_NAME,
-       IWPM_NLA_REG_IBDEV_NAME,
-       IWPM_NLA_REG_ULIB_NAME,
-       IWPM_NLA_REG_PID_MAX
-};
-
-enum {
-       IWPM_NLA_RREG_PID_UNSPEC = 0,
-       IWPM_NLA_RREG_PID_SEQ,
-       IWPM_NLA_RREG_IBDEV_NAME,
-       IWPM_NLA_RREG_ULIB_NAME,
-       IWPM_NLA_RREG_ULIB_VER,
-       IWPM_NLA_RREG_PID_ERR,
-       IWPM_NLA_RREG_PID_MAX
-
-};
-
-enum {
-       IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
-       IWPM_NLA_MANAGE_MAPPING_SEQ,
-       IWPM_NLA_MANAGE_ADDR,
-       IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
-       IWPM_NLA_RMANAGE_MAPPING_ERR,
-       IWPM_NLA_RMANAGE_MAPPING_MAX
-};
-
-#define IWPM_NLA_MANAGE_MAPPING_MAX 3
-#define IWPM_NLA_QUERY_MAPPING_MAX  4
-#define IWPM_NLA_MAPINFO_SEND_MAX   3
-
-enum {
-       IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
-       IWPM_NLA_QUERY_MAPPING_SEQ,
-       IWPM_NLA_QUERY_LOCAL_ADDR,
-       IWPM_NLA_QUERY_REMOTE_ADDR,
-       IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
-       IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
-       IWPM_NLA_RQUERY_MAPPING_ERR,
-       IWPM_NLA_RQUERY_MAPPING_MAX
-};
-
-enum {
-       IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
-       IWPM_NLA_MAPINFO_ULIB_NAME,
-       IWPM_NLA_MAPINFO_ULIB_VER,
-       IWPM_NLA_MAPINFO_REQ_MAX
-};
-
-enum {
-       IWPM_NLA_MAPINFO_UNSPEC = 0,
-       IWPM_NLA_MAPINFO_LOCAL_ADDR,
-       IWPM_NLA_MAPINFO_MAPPED_ADDR,
-       IWPM_NLA_MAPINFO_MAX
-};
-
-enum {
-       IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
-       IWPM_NLA_MAPINFO_SEQ,
-       IWPM_NLA_MAPINFO_SEND_NUM,
-       IWPM_NLA_MAPINFO_ACK_NUM,
-       IWPM_NLA_MAPINFO_NUM_MAX
-};
-
-enum {
-       IWPM_NLA_ERR_UNSPEC = 0,
-       IWPM_NLA_ERR_SEQ,
-       IWPM_NLA_ERR_CODE,
-       IWPM_NLA_ERR_MAX
-};
-
-/*
- * Local service operations:
- *   RESOLVE - The client requests the local service to resolve a path.
- *   SET_TIMEOUT - The local service requests the client to set the timeout.
- *   IP_RESOLVE - The client requests the local service to resolve an IP to GID.
- */
-enum {
-       RDMA_NL_LS_OP_RESOLVE = 0,
-       RDMA_NL_LS_OP_SET_TIMEOUT,
-       RDMA_NL_LS_OP_IP_RESOLVE,
-       RDMA_NL_LS_NUM_OPS
-};
-
-/* Local service netlink message flags */
-#define RDMA_NL_LS_F_ERR       0x0100  /* Failed response */
-
-/*
- * Local service resolve operation family header.
- * The layout for the resolve operation:
- *    nlmsg header
- *    family header
- *    attributes
- */
-
-/*
- * Local service path use:
- * Specify how the path(s) will be used.
- *   ALL - For connected CM operation (6 pathrecords)
- *   UNIDIRECTIONAL - For unidirectional UD (1 pathrecord)
- *   GMP - For miscellaneous GMP like operation (at least 1 reversible
- *         pathrecord)
- */
-enum {
-       LS_RESOLVE_PATH_USE_ALL = 0,
-       LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
-       LS_RESOLVE_PATH_USE_GMP,
-       LS_RESOLVE_PATH_USE_MAX
-};
-
-#define LS_DEVICE_NAME_MAX 64
-
-struct rdma_ls_resolve_header {
-       __u8 device_name[LS_DEVICE_NAME_MAX];
-       __u8 port_num;
-       __u8 path_use;
-};
-
-struct rdma_ls_ip_resolve_header {
-       __u32 ifindex;
-};
-
-/* Local service attribute type */
-#define RDMA_NLA_F_MANDATORY   (1 << 13)
-#define RDMA_NLA_TYPE_MASK     (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \
-                                 RDMA_NLA_F_MANDATORY))
-
-/*
- * Local service attributes:
- *   Attr Name       Size                       Byte order
- *   -----------------------------------------------------
- *   PATH_RECORD     struct ib_path_rec_data
- *   TIMEOUT         u32                        cpu
- *   SERVICE_ID      u64                        cpu
- *   DGID            u8[16]                     BE
- *   SGID            u8[16]                     BE
- *   TCLASS          u8
- *   PKEY            u16                        cpu
- *   QOS_CLASS       u16                        cpu
- *   IPV4            u32                        BE
- *   IPV6            u8[16]                     BE
- */
-enum {
-       LS_NLA_TYPE_UNSPEC = 0,
-       LS_NLA_TYPE_PATH_RECORD,
-       LS_NLA_TYPE_TIMEOUT,
-       LS_NLA_TYPE_SERVICE_ID,
-       LS_NLA_TYPE_DGID,
-       LS_NLA_TYPE_SGID,
-       LS_NLA_TYPE_TCLASS,
-       LS_NLA_TYPE_PKEY,
-       LS_NLA_TYPE_QOS_CLASS,
-       LS_NLA_TYPE_IPV4,
-       LS_NLA_TYPE_IPV6,
-       LS_NLA_TYPE_MAX
-};
-
-/* Local service DGID/SGID attribute: big endian */
-struct rdma_nla_ls_gid {
-       __u8            gid[16];
-};
-
-enum rdma_nldev_command {
-       RDMA_NLDEV_CMD_UNSPEC,
-
-       RDMA_NLDEV_CMD_GET, /* can dump */
-
-       /* 2 - 4 are free to use */
-
-       RDMA_NLDEV_CMD_PORT_GET = 5, /* can dump */
-
-       /* 6 - 8 are free to use */
-
-       RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
-
-       RDMA_NLDEV_CMD_RES_QP_GET, /* can dump */
-
-       RDMA_NLDEV_NUM_OPS
-};
-
-enum rdma_nldev_attr {
-       /* don't change the order or add anything between, this is ABI! */
-       RDMA_NLDEV_ATTR_UNSPEC,
-
-       /* Identifier for ib_device */
-       RDMA_NLDEV_ATTR_DEV_INDEX,              /* u32 */
-
-       RDMA_NLDEV_ATTR_DEV_NAME,               /* string */
-       /*
-        * Device index together with port index are identifiers
-        * for port/link properties.
-        *
-        * For RDMA_NLDEV_CMD_GET commamnd, port index will return number
-        * of available ports in ib_device, while for port specific operations,
-        * it will be real port index as it appears in sysfs. Port index follows
-        * sysfs notation and starts from 1 for the first port.
-        */
-       RDMA_NLDEV_ATTR_PORT_INDEX,             /* u32 */
-
-       /*
-        * Device and port capabilities
-        */
-       RDMA_NLDEV_ATTR_CAP_FLAGS,              /* u64 */
-
-       /*
-        * FW version
-        */
-       RDMA_NLDEV_ATTR_FW_VERSION,             /* string */
-
-       /*
-        * Node GUID (in host byte order) associated with the RDMA device.
-        */
-       RDMA_NLDEV_ATTR_NODE_GUID,                      /* u64 */
-
-       /*
-        * System image GUID (in host byte order) associated with
-        * this RDMA device and other devices which are part of a
-        * single system.
-        */
-       RDMA_NLDEV_ATTR_SYS_IMAGE_GUID,         /* u64 */
-
-       /*
-        * Subnet prefix (in host byte order)
-        */
-       RDMA_NLDEV_ATTR_SUBNET_PREFIX,          /* u64 */
-
-       /*
-        * Local Identifier (LID),
-        * According to IB specification, It is 16-bit address assigned
-        * by the Subnet Manager. Extended to be 32-bit for OmniPath users.
-        */
-       RDMA_NLDEV_ATTR_LID,                    /* u32 */
-       RDMA_NLDEV_ATTR_SM_LID,                 /* u32 */
-
-       /*
-        * LID mask control (LMC)
-        */
-       RDMA_NLDEV_ATTR_LMC,                    /* u8 */
-
-       RDMA_NLDEV_ATTR_PORT_STATE,             /* u8 */
-       RDMA_NLDEV_ATTR_PORT_PHYS_STATE,        /* u8 */
-
-       RDMA_NLDEV_ATTR_DEV_NODE_TYPE,          /* u8 */
-
-       RDMA_NLDEV_ATTR_RES_SUMMARY,            /* nested table */
-       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY,      /* nested table */
-       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME, /* string */
-       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR, /* u64 */
-
-       RDMA_NLDEV_ATTR_RES_QP,                 /* nested table */
-       RDMA_NLDEV_ATTR_RES_QP_ENTRY,           /* nested table */
-       /*
-        * Local QPN
-        */
-       RDMA_NLDEV_ATTR_RES_LQPN,               /* u32 */
-       /*
-        * Remote QPN,
-        * Applicable for RC and UC only IBTA 11.2.5.3 QUERY QUEUE PAIR
-        */
-       RDMA_NLDEV_ATTR_RES_RQPN,               /* u32 */
-       /*
-        * Receive Queue PSN,
-        * Applicable for RC and UC only 11.2.5.3 QUERY QUEUE PAIR
-        */
-       RDMA_NLDEV_ATTR_RES_RQ_PSN,             /* u32 */
-       /*
-        * Send Queue PSN
-        */
-       RDMA_NLDEV_ATTR_RES_SQ_PSN,             /* u32 */
-       RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE,     /* u8 */
-       /*
-        * QP types as visible to RDMA/core, the reserved QPT
-        * are not exported through this interface.
-        */
-       RDMA_NLDEV_ATTR_RES_TYPE,               /* u8 */
-       RDMA_NLDEV_ATTR_RES_STATE,              /* u8 */
-       /*
-        * Process ID which created object,
-        * in case of kernel origin, PID won't exist.
-        */
-       RDMA_NLDEV_ATTR_RES_PID,                /* u32 */
-       /*
-        * The name of process created following resource.
-        * It will exist only for kernel objects.
-        * For user created objects, the user is supposed
-        * to read /proc/PID/comm file.
-        */
-       RDMA_NLDEV_ATTR_RES_KERN_NAME,          /* string */
-
-       RDMA_NLDEV_ATTR_MAX
-};
-#endif /* _RDMA_NETLINK_H */
index 360f09b27edd1d4ebb68373ab09e3a583662d5b7..819fcbe37506ae7252288eb711078213a3fa479c 100644 (file)
@@ -4,6 +4,7 @@ include ../config.mk
 TARGETS :=
 
 ifeq ($(HAVE_MNL),y)
+CFLAGS += -I./include/uapi/
 
 RDMA_OBJ = rdma.o utils.o dev.o link.o res.o
 
diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
new file mode 100644 (file)
index 0000000..dbac3b8
--- /dev/null
@@ -0,0 +1,355 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef _RDMA_NETLINK_H
+#define _RDMA_NETLINK_H
+
+#include <linux/types.h>
+
+enum {
+       RDMA_NL_RDMA_CM = 1,
+       RDMA_NL_IWCM,
+       RDMA_NL_RSVD,
+       RDMA_NL_LS,     /* RDMA Local Services */
+       RDMA_NL_NLDEV,  /* RDMA device interface */
+       RDMA_NL_NUM_CLIENTS
+};
+
+enum {
+       RDMA_NL_GROUP_CM = 1,
+       RDMA_NL_GROUP_IWPM,
+       RDMA_NL_GROUP_LS,
+       RDMA_NL_NUM_GROUPS
+};
+
+#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,
+};
+
+/* iwarp port mapper op-codes */
+enum {
+       RDMA_NL_IWPM_REG_PID = 0,
+       RDMA_NL_IWPM_ADD_MAPPING,
+       RDMA_NL_IWPM_QUERY_MAPPING,
+       RDMA_NL_IWPM_REMOVE_MAPPING,
+       RDMA_NL_IWPM_REMOTE_INFO,
+       RDMA_NL_IWPM_HANDLE_ERR,
+       RDMA_NL_IWPM_MAPINFO,
+       RDMA_NL_IWPM_MAPINFO_NUM,
+       RDMA_NL_IWPM_NUM_OPS
+};
+
+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;
+};
+
+enum {
+       IWPM_NLA_REG_PID_UNSPEC = 0,
+       IWPM_NLA_REG_PID_SEQ,
+       IWPM_NLA_REG_IF_NAME,
+       IWPM_NLA_REG_IBDEV_NAME,
+       IWPM_NLA_REG_ULIB_NAME,
+       IWPM_NLA_REG_PID_MAX
+};
+
+enum {
+       IWPM_NLA_RREG_PID_UNSPEC = 0,
+       IWPM_NLA_RREG_PID_SEQ,
+       IWPM_NLA_RREG_IBDEV_NAME,
+       IWPM_NLA_RREG_ULIB_NAME,
+       IWPM_NLA_RREG_ULIB_VER,
+       IWPM_NLA_RREG_PID_ERR,
+       IWPM_NLA_RREG_PID_MAX
+
+};
+
+enum {
+       IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
+       IWPM_NLA_MANAGE_MAPPING_SEQ,
+       IWPM_NLA_MANAGE_ADDR,
+       IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
+       IWPM_NLA_RMANAGE_MAPPING_ERR,
+       IWPM_NLA_RMANAGE_MAPPING_MAX
+};
+
+#define IWPM_NLA_MANAGE_MAPPING_MAX 3
+#define IWPM_NLA_QUERY_MAPPING_MAX  4
+#define IWPM_NLA_MAPINFO_SEND_MAX   3
+
+enum {
+       IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
+       IWPM_NLA_QUERY_MAPPING_SEQ,
+       IWPM_NLA_QUERY_LOCAL_ADDR,
+       IWPM_NLA_QUERY_REMOTE_ADDR,
+       IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
+       IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
+       IWPM_NLA_RQUERY_MAPPING_ERR,
+       IWPM_NLA_RQUERY_MAPPING_MAX
+};
+
+enum {
+       IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
+       IWPM_NLA_MAPINFO_ULIB_NAME,
+       IWPM_NLA_MAPINFO_ULIB_VER,
+       IWPM_NLA_MAPINFO_REQ_MAX
+};
+
+enum {
+       IWPM_NLA_MAPINFO_UNSPEC = 0,
+       IWPM_NLA_MAPINFO_LOCAL_ADDR,
+       IWPM_NLA_MAPINFO_MAPPED_ADDR,
+       IWPM_NLA_MAPINFO_MAX
+};
+
+enum {
+       IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
+       IWPM_NLA_MAPINFO_SEQ,
+       IWPM_NLA_MAPINFO_SEND_NUM,
+       IWPM_NLA_MAPINFO_ACK_NUM,
+       IWPM_NLA_MAPINFO_NUM_MAX
+};
+
+enum {
+       IWPM_NLA_ERR_UNSPEC = 0,
+       IWPM_NLA_ERR_SEQ,
+       IWPM_NLA_ERR_CODE,
+       IWPM_NLA_ERR_MAX
+};
+
+/*
+ * Local service operations:
+ *   RESOLVE - The client requests the local service to resolve a path.
+ *   SET_TIMEOUT - The local service requests the client to set the timeout.
+ *   IP_RESOLVE - The client requests the local service to resolve an IP to GID.
+ */
+enum {
+       RDMA_NL_LS_OP_RESOLVE = 0,
+       RDMA_NL_LS_OP_SET_TIMEOUT,
+       RDMA_NL_LS_OP_IP_RESOLVE,
+       RDMA_NL_LS_NUM_OPS
+};
+
+/* Local service netlink message flags */
+#define RDMA_NL_LS_F_ERR       0x0100  /* Failed response */
+
+/*
+ * Local service resolve operation family header.
+ * The layout for the resolve operation:
+ *    nlmsg header
+ *    family header
+ *    attributes
+ */
+
+/*
+ * Local service path use:
+ * Specify how the path(s) will be used.
+ *   ALL - For connected CM operation (6 pathrecords)
+ *   UNIDIRECTIONAL - For unidirectional UD (1 pathrecord)
+ *   GMP - For miscellaneous GMP like operation (at least 1 reversible
+ *         pathrecord)
+ */
+enum {
+       LS_RESOLVE_PATH_USE_ALL = 0,
+       LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
+       LS_RESOLVE_PATH_USE_GMP,
+       LS_RESOLVE_PATH_USE_MAX
+};
+
+#define LS_DEVICE_NAME_MAX 64
+
+struct rdma_ls_resolve_header {
+       __u8 device_name[LS_DEVICE_NAME_MAX];
+       __u8 port_num;
+       __u8 path_use;
+};
+
+struct rdma_ls_ip_resolve_header {
+       __u32 ifindex;
+};
+
+/* Local service attribute type */
+#define RDMA_NLA_F_MANDATORY   (1 << 13)
+#define RDMA_NLA_TYPE_MASK     (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \
+                                 RDMA_NLA_F_MANDATORY))
+
+/*
+ * Local service attributes:
+ *   Attr Name       Size                       Byte order
+ *   -----------------------------------------------------
+ *   PATH_RECORD     struct ib_path_rec_data
+ *   TIMEOUT         u32                        cpu
+ *   SERVICE_ID      u64                        cpu
+ *   DGID            u8[16]                     BE
+ *   SGID            u8[16]                     BE
+ *   TCLASS          u8
+ *   PKEY            u16                        cpu
+ *   QOS_CLASS       u16                        cpu
+ *   IPV4            u32                        BE
+ *   IPV6            u8[16]                     BE
+ */
+enum {
+       LS_NLA_TYPE_UNSPEC = 0,
+       LS_NLA_TYPE_PATH_RECORD,
+       LS_NLA_TYPE_TIMEOUT,
+       LS_NLA_TYPE_SERVICE_ID,
+       LS_NLA_TYPE_DGID,
+       LS_NLA_TYPE_SGID,
+       LS_NLA_TYPE_TCLASS,
+       LS_NLA_TYPE_PKEY,
+       LS_NLA_TYPE_QOS_CLASS,
+       LS_NLA_TYPE_IPV4,
+       LS_NLA_TYPE_IPV6,
+       LS_NLA_TYPE_MAX
+};
+
+/* Local service DGID/SGID attribute: big endian */
+struct rdma_nla_ls_gid {
+       __u8            gid[16];
+};
+
+enum rdma_nldev_command {
+       RDMA_NLDEV_CMD_UNSPEC,
+
+       RDMA_NLDEV_CMD_GET, /* can dump */
+
+       /* 2 - 4 are free to use */
+
+       RDMA_NLDEV_CMD_PORT_GET = 5, /* can dump */
+
+       /* 6 - 8 are free to use */
+
+       RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
+
+       RDMA_NLDEV_CMD_RES_QP_GET, /* can dump */
+
+       RDMA_NLDEV_NUM_OPS
+};
+
+enum rdma_nldev_attr {
+       /* don't change the order or add anything between, this is ABI! */
+       RDMA_NLDEV_ATTR_UNSPEC,
+
+       /* Identifier for ib_device */
+       RDMA_NLDEV_ATTR_DEV_INDEX,              /* u32 */
+
+       RDMA_NLDEV_ATTR_DEV_NAME,               /* string */
+       /*
+        * Device index together with port index are identifiers
+        * for port/link properties.
+        *
+        * For RDMA_NLDEV_CMD_GET commamnd, port index will return number
+        * of available ports in ib_device, while for port specific operations,
+        * it will be real port index as it appears in sysfs. Port index follows
+        * sysfs notation and starts from 1 for the first port.
+        */
+       RDMA_NLDEV_ATTR_PORT_INDEX,             /* u32 */
+
+       /*
+        * Device and port capabilities
+        */
+       RDMA_NLDEV_ATTR_CAP_FLAGS,              /* u64 */
+
+       /*
+        * FW version
+        */
+       RDMA_NLDEV_ATTR_FW_VERSION,             /* string */
+
+       /*
+        * Node GUID (in host byte order) associated with the RDMA device.
+        */
+       RDMA_NLDEV_ATTR_NODE_GUID,                      /* u64 */
+
+       /*
+        * System image GUID (in host byte order) associated with
+        * this RDMA device and other devices which are part of a
+        * single system.
+        */
+       RDMA_NLDEV_ATTR_SYS_IMAGE_GUID,         /* u64 */
+
+       /*
+        * Subnet prefix (in host byte order)
+        */
+       RDMA_NLDEV_ATTR_SUBNET_PREFIX,          /* u64 */
+
+       /*
+        * Local Identifier (LID),
+        * According to IB specification, It is 16-bit address assigned
+        * by the Subnet Manager. Extended to be 32-bit for OmniPath users.
+        */
+       RDMA_NLDEV_ATTR_LID,                    /* u32 */
+       RDMA_NLDEV_ATTR_SM_LID,                 /* u32 */
+
+       /*
+        * LID mask control (LMC)
+        */
+       RDMA_NLDEV_ATTR_LMC,                    /* u8 */
+
+       RDMA_NLDEV_ATTR_PORT_STATE,             /* u8 */
+       RDMA_NLDEV_ATTR_PORT_PHYS_STATE,        /* u8 */
+
+       RDMA_NLDEV_ATTR_DEV_NODE_TYPE,          /* u8 */
+
+       RDMA_NLDEV_ATTR_RES_SUMMARY,            /* nested table */
+       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY,      /* nested table */
+       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME, /* string */
+       RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR, /* u64 */
+
+       RDMA_NLDEV_ATTR_RES_QP,                 /* nested table */
+       RDMA_NLDEV_ATTR_RES_QP_ENTRY,           /* nested table */
+       /*
+        * Local QPN
+        */
+       RDMA_NLDEV_ATTR_RES_LQPN,               /* u32 */
+       /*
+        * Remote QPN,
+        * Applicable for RC and UC only IBTA 11.2.5.3 QUERY QUEUE PAIR
+        */
+       RDMA_NLDEV_ATTR_RES_RQPN,               /* u32 */
+       /*
+        * Receive Queue PSN,
+        * Applicable for RC and UC only 11.2.5.3 QUERY QUEUE PAIR
+        */
+       RDMA_NLDEV_ATTR_RES_RQ_PSN,             /* u32 */
+       /*
+        * Send Queue PSN
+        */
+       RDMA_NLDEV_ATTR_RES_SQ_PSN,             /* u32 */
+       RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE,     /* u8 */
+       /*
+        * QP types as visible to RDMA/core, the reserved QPT
+        * are not exported through this interface.
+        */
+       RDMA_NLDEV_ATTR_RES_TYPE,               /* u8 */
+       RDMA_NLDEV_ATTR_RES_STATE,              /* u8 */
+       /*
+        * Process ID which created object,
+        * in case of kernel origin, PID won't exist.
+        */
+       RDMA_NLDEV_ATTR_RES_PID,                /* u32 */
+       /*
+        * The name of process created following resource.
+        * It will exist only for kernel objects.
+        * For user created objects, the user is supposed
+        * to read /proc/PID/comm file.
+        */
+       RDMA_NLDEV_ATTR_RES_KERN_NAME,          /* string */
+
+       RDMA_NLDEV_ATTR_MAX
+};
+#endif /* _RDMA_NETLINK_H */