summaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorSean Hefty <sean.hefty@intel.com>2013-05-29 19:09:25 +0200
committerRoland Dreier <roland@purestorage.com>2013-06-21 08:35:39 +0200
commitee7aed4528fb3c44a36abd79eb23fd5401a5b697 (patch)
tree16e084d5abbf42b117b8a4b4cb24dcb6d5bd281e /include/uapi
parentRDMA/cma: Only listen on IB devices when using AF_IB (diff)
downloadlinux-ee7aed4528fb3c44a36abd79eb23fd5401a5b697.tar.xz
linux-ee7aed4528fb3c44a36abd79eb23fd5401a5b697.zip
RDMA/ucma: Support querying for AF_IB addresses
The sockaddr structure for AF_IB is larger than sockaddr_in6. The rdma cm user space ABI uses the latter to exchange address information between user space and the kernel. To support querying for larger addresses, define a new query command that exchanges data using sockaddr_storage, rather than sockaddr_in6. Unlike the existing query_route command, the new command only returns address information. Route (i.e. path record) data is separated. Signed-off-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/rdma/rdma_user_cm.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/include/uapi/rdma/rdma_user_cm.h b/include/uapi/rdma/rdma_user_cm.h
index 29de08f603ac..3ea7e7a4d54b 100644
--- a/include/uapi/rdma/rdma_user_cm.h
+++ b/include/uapi/rdma/rdma_user_cm.h
@@ -61,7 +61,8 @@ enum {
RDMA_USER_CM_CMD_NOTIFY,
RDMA_USER_CM_CMD_JOIN_MCAST,
RDMA_USER_CM_CMD_LEAVE_MCAST,
- RDMA_USER_CM_CMD_MIGRATE_ID
+ RDMA_USER_CM_CMD_MIGRATE_ID,
+ RDMA_USER_CM_CMD_QUERY
};
/*
@@ -113,10 +114,14 @@ struct rdma_ucm_resolve_route {
__u32 timeout_ms;
};
-struct rdma_ucm_query_route {
+enum {
+ RDMA_USER_CM_QUERY_ADDR
+};
+
+struct rdma_ucm_query {
__u64 response;
__u32 id;
- __u32 reserved;
+ __u32 option;
};
struct rdma_ucm_query_route_resp {
@@ -129,6 +134,17 @@ struct rdma_ucm_query_route_resp {
__u8 reserved[3];
};
+struct rdma_ucm_query_addr_resp {
+ __u64 node_guid;
+ __u8 port_num;
+ __u8 reserved;
+ __u16 pkey;
+ __u16 src_size;
+ __u16 dst_size;
+ struct sockaddr_storage src_addr;
+ struct sockaddr_storage dst_addr;
+};
+
struct rdma_ucm_conn_param {
__u32 qp_num;
__u32 qkey;