aboutsummaryrefslogtreecommitdiffstats
path: root/include/rdma/rdma_user_cm.h
diff options
context:
space:
mode:
authorSean Hefty <sean.hefty@intel.com>2007-02-15 20:00:18 -0500
committerRoland Dreier <rolandd@cisco.com>2007-02-16 17:29:07 -0500
commitc8f6a362bf3eb28ade6027b49bb160a336dd51c0 (patch)
treeb9b19599c9fddea313725a359283bc624a86c1ec /include/rdma/rdma_user_cm.h
parentfaec2f7b96b555055d0aa6cc6b83a537270bed52 (diff)
RDMA/cma: Add multicast communication support
Extend rdma_cm to support multicast communication. Multicast support is added to the existing RDMA_PS_UDP port space, as well as a new RDMA_PS_IPOIB port space. The latter port space allows joining the multicast groups used by IPoIB, which enables offloading IPoIB traffic to a separate QP. The port space determines the signature used in the MGID when joining the group. The newly added RDMA_PS_IPOIB also allows for unicast operations, similar to RDMA_PS_UDP. Supporting the RDMA_PS_IPOIB requires changing how UD QPs are initialized, since we can no longer assume that the qkey is constant. This requires saving the Q_Key to use when attaching to a device, so that it is available when creating the QP. The Q_Key information is exported to the user through the existing rdma_init_qp_attr() interface. Multicast support is also exported to userspace through the rdma_ucm. Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'include/rdma/rdma_user_cm.h')
-rw-r--r--include/rdma/rdma_user_cm.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/include/rdma/rdma_user_cm.h b/include/rdma/rdma_user_cm.h
index 9572ab8eeac..f632b0c007c 100644
--- a/include/rdma/rdma_user_cm.h
+++ b/include/rdma/rdma_user_cm.h
@@ -38,7 +38,7 @@
38#include <rdma/ib_user_verbs.h> 38#include <rdma/ib_user_verbs.h>
39#include <rdma/ib_user_sa.h> 39#include <rdma/ib_user_sa.h>
40 40
41#define RDMA_USER_CM_ABI_VERSION 3 41#define RDMA_USER_CM_ABI_VERSION 4
42 42
43#define RDMA_MAX_PRIVATE_DATA 256 43#define RDMA_MAX_PRIVATE_DATA 256
44 44
@@ -58,7 +58,9 @@ enum {
58 RDMA_USER_CM_CMD_GET_EVENT, 58 RDMA_USER_CM_CMD_GET_EVENT,
59 RDMA_USER_CM_CMD_GET_OPTION, 59 RDMA_USER_CM_CMD_GET_OPTION,
60 RDMA_USER_CM_CMD_SET_OPTION, 60 RDMA_USER_CM_CMD_SET_OPTION,
61 RDMA_USER_CM_CMD_NOTIFY 61 RDMA_USER_CM_CMD_NOTIFY,
62 RDMA_USER_CM_CMD_JOIN_MCAST,
63 RDMA_USER_CM_CMD_LEAVE_MCAST
62}; 64};
63 65
64/* 66/*
@@ -188,6 +190,13 @@ struct rdma_ucm_notify {
188 __u32 event; 190 __u32 event;
189}; 191};
190 192
193struct rdma_ucm_join_mcast {
194 __u64 response; /* rdma_ucm_create_id_resp */
195 __u64 uid;
196 struct sockaddr_in6 addr;
197 __u32 id;
198};
199
191struct rdma_ucm_get_event { 200struct rdma_ucm_get_event {
192 __u64 response; 201 __u64 response;
193}; 202};