aboutsummaryrefslogtreecommitdiffstats
path: root/include/rdma/rdma_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_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_cm.h')
-rw-r--r--include/rdma/rdma_cm.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/include/rdma/rdma_cm.h b/include/rdma/rdma_cm.h
index 36cd8a8526a0..2d6a7705eae7 100644
--- a/include/rdma/rdma_cm.h
+++ b/include/rdma/rdma_cm.h
@@ -52,10 +52,13 @@ enum rdma_cm_event_type {
52 RDMA_CM_EVENT_ESTABLISHED, 52 RDMA_CM_EVENT_ESTABLISHED,
53 RDMA_CM_EVENT_DISCONNECTED, 53 RDMA_CM_EVENT_DISCONNECTED,
54 RDMA_CM_EVENT_DEVICE_REMOVAL, 54 RDMA_CM_EVENT_DEVICE_REMOVAL,
55 RDMA_CM_EVENT_MULTICAST_JOIN,
56 RDMA_CM_EVENT_MULTICAST_ERROR
55}; 57};
56 58
57enum rdma_port_space { 59enum rdma_port_space {
58 RDMA_PS_SDP = 0x0001, 60 RDMA_PS_SDP = 0x0001,
61 RDMA_PS_IPOIB= 0x0002,
59 RDMA_PS_TCP = 0x0106, 62 RDMA_PS_TCP = 0x0106,
60 RDMA_PS_UDP = 0x0111, 63 RDMA_PS_UDP = 0x0111,
61 RDMA_PS_SCTP = 0x0183 64 RDMA_PS_SCTP = 0x0183
@@ -294,5 +297,21 @@ int rdma_reject(struct rdma_cm_id *id, const void *private_data,
294 */ 297 */
295int rdma_disconnect(struct rdma_cm_id *id); 298int rdma_disconnect(struct rdma_cm_id *id);
296 299
297#endif /* RDMA_CM_H */ 300/**
301 * rdma_join_multicast - Join the multicast group specified by the given
302 * address.
303 * @id: Communication identifier associated with the request.
304 * @addr: Multicast address identifying the group to join.
305 * @context: User-defined context associated with the join request, returned
306 * to the user through the private_data pointer in multicast events.
307 */
308int rdma_join_multicast(struct rdma_cm_id *id, struct sockaddr *addr,
309 void *context);
298 310
311/**
312 * rdma_leave_multicast - Leave the multicast group specified by the given
313 * address.
314 */
315void rdma_leave_multicast(struct rdma_cm_id *id, struct sockaddr *addr);
316
317#endif /* RDMA_CM_H */