1178784Skmacy/* 2178784Skmacy * Copyright (c) 2005-2006 Intel Corporation. All rights reserved. 3178784Skmacy * 4178784Skmacy * This software is available to you under a choice of one of two 5178784Skmacy * licenses. You may choose to be licensed under the terms of the GNU 6178784Skmacy * General Public License (GPL) Version 2, available from the file 7178784Skmacy * COPYING in the main directory of this source tree, or the 8178784Skmacy * OpenIB.org BSD license below: 9178784Skmacy * 10178784Skmacy * Redistribution and use in source and binary forms, with or 11178784Skmacy * without modification, are permitted provided that the following 12178784Skmacy * conditions are met: 13178784Skmacy * 14178784Skmacy * - Redistributions of source code must retain the above 15178784Skmacy * copyright notice, this list of conditions and the following 16178784Skmacy * disclaimer. 17178784Skmacy * 18178784Skmacy * - Redistributions in binary form must reproduce the above 19178784Skmacy * copyright notice, this list of conditions and the following 20178784Skmacy * disclaimer in the documentation and/or other materials 21178784Skmacy * provided with the distribution. 22178784Skmacy * 23178784Skmacy * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24178784Skmacy * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25178784Skmacy * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26178784Skmacy * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27178784Skmacy * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28178784Skmacy * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29178784Skmacy * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30178784Skmacy * SOFTWARE. 31178784Skmacy * 32178784Skmacy * $FreeBSD$ 33178784Skmacy */ 34178784Skmacy 35178784Skmacy#ifndef RDMA_USER_CM_H 36178784Skmacy#define RDMA_USER_CM_H 37178784Skmacy 38178784Skmacy#include <rdma/ib_user_verbs.h> 39178784Skmacy#include <rdma/ib_user_sa.h> 40178784Skmacy 41178784Skmacy#define RDMA_USER_CM_ABI_VERSION 4 42178784Skmacy 43178784Skmacy#define RDMA_MAX_PRIVATE_DATA 256 44178784Skmacy 45178784Skmacyenum { 46178784Skmacy RDMA_USER_CM_CMD_CREATE_ID, 47178784Skmacy RDMA_USER_CM_CMD_DESTROY_ID, 48178784Skmacy RDMA_USER_CM_CMD_BIND_ADDR, 49178784Skmacy RDMA_USER_CM_CMD_RESOLVE_ADDR, 50178784Skmacy RDMA_USER_CM_CMD_RESOLVE_ROUTE, 51178784Skmacy RDMA_USER_CM_CMD_QUERY_ROUTE, 52178784Skmacy RDMA_USER_CM_CMD_CONNECT, 53178784Skmacy RDMA_USER_CM_CMD_LISTEN, 54178784Skmacy RDMA_USER_CM_CMD_ACCEPT, 55178784Skmacy RDMA_USER_CM_CMD_REJECT, 56178784Skmacy RDMA_USER_CM_CMD_DISCONNECT, 57178784Skmacy RDMA_USER_CM_CMD_INIT_QP_ATTR, 58178784Skmacy RDMA_USER_CM_CMD_GET_EVENT, 59178784Skmacy RDMA_USER_CM_CMD_GET_OPTION, 60178784Skmacy RDMA_USER_CM_CMD_SET_OPTION, 61178784Skmacy RDMA_USER_CM_CMD_NOTIFY, 62178784Skmacy RDMA_USER_CM_CMD_JOIN_MCAST, 63178784Skmacy RDMA_USER_CM_CMD_LEAVE_MCAST 64178784Skmacy}; 65178784Skmacy 66178784Skmacy/* 67178784Skmacy * command ABI structures. 68178784Skmacy */ 69178784Skmacystruct rdma_ucm_cmd_hdr { 70178784Skmacy __u32 cmd; 71178784Skmacy __u16 in; 72178784Skmacy __u16 out; 73178784Skmacy}; 74178784Skmacy 75178784Skmacystruct rdma_ucm_create_id { 76178784Skmacy __u64 uid; 77178784Skmacy __u64 response; 78178784Skmacy __u16 ps; 79178784Skmacy __u8 reserved[6]; 80178784Skmacy}; 81178784Skmacy 82178784Skmacystruct rdma_ucm_create_id_resp { 83178784Skmacy __u32 id; 84178784Skmacy}; 85178784Skmacy 86178784Skmacystruct rdma_ucm_destroy_id { 87178784Skmacy __u64 response; 88178784Skmacy __u32 id; 89178784Skmacy __u32 reserved; 90178784Skmacy}; 91178784Skmacy 92178784Skmacystruct rdma_ucm_destroy_id_resp { 93178784Skmacy __u32 events_reported; 94178784Skmacy}; 95178784Skmacy 96178784Skmacystruct rdma_ucm_bind_addr { 97178784Skmacy __u64 response; 98178784Skmacy struct sockaddr_in6 addr; 99178784Skmacy __u32 id; 100178784Skmacy}; 101178784Skmacy 102178784Skmacystruct rdma_ucm_resolve_addr { 103178784Skmacy struct sockaddr_in6 src_addr; 104178784Skmacy struct sockaddr_in6 dst_addr; 105178784Skmacy __u32 id; 106178784Skmacy __u32 timeout_ms; 107178784Skmacy}; 108178784Skmacy 109178784Skmacystruct rdma_ucm_resolve_route { 110178784Skmacy __u32 id; 111178784Skmacy __u32 timeout_ms; 112178784Skmacy}; 113178784Skmacy 114178784Skmacystruct rdma_ucm_query_route { 115178784Skmacy __u64 response; 116178784Skmacy __u32 id; 117178784Skmacy __u32 reserved; 118178784Skmacy}; 119178784Skmacy 120178784Skmacystruct rdma_ucm_query_route_resp { 121178784Skmacy __u64 node_guid; 122178784Skmacy struct ib_user_path_rec ib_route[2]; 123178784Skmacy struct sockaddr_in6 src_addr; 124178784Skmacy struct sockaddr_in6 dst_addr; 125178784Skmacy __u32 num_paths; 126178784Skmacy __u8 port_num; 127178784Skmacy __u8 reserved[3]; 128178784Skmacy}; 129178784Skmacy 130178784Skmacystruct rdma_ucm_conn_param { 131178784Skmacy __u32 qp_num; 132178784Skmacy __u32 reserved; 133178784Skmacy __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 134178784Skmacy __u8 private_data_len; 135178784Skmacy __u8 srq; 136178784Skmacy __u8 responder_resources; 137178784Skmacy __u8 initiator_depth; 138178784Skmacy __u8 flow_control; 139178784Skmacy __u8 retry_count; 140178784Skmacy __u8 rnr_retry_count; 141178784Skmacy __u8 valid; 142178784Skmacy}; 143178784Skmacy 144178784Skmacystruct rdma_ucm_ud_param { 145178784Skmacy __u32 qp_num; 146178784Skmacy __u32 qkey; 147178784Skmacy struct ib_uverbs_ah_attr ah_attr; 148178784Skmacy __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 149178784Skmacy __u8 private_data_len; 150178784Skmacy __u8 reserved[7]; 151178784Skmacy}; 152178784Skmacy 153178784Skmacystruct rdma_ucm_connect { 154178784Skmacy struct rdma_ucm_conn_param conn_param; 155178784Skmacy __u32 id; 156178784Skmacy __u32 reserved; 157178784Skmacy}; 158178784Skmacy 159178784Skmacystruct rdma_ucm_listen { 160178784Skmacy __u32 id; 161178784Skmacy __u32 backlog; 162178784Skmacy}; 163178784Skmacy 164178784Skmacystruct rdma_ucm_accept { 165178784Skmacy __u64 uid; 166178784Skmacy struct rdma_ucm_conn_param conn_param; 167178784Skmacy __u32 id; 168178784Skmacy __u32 reserved; 169178784Skmacy}; 170178784Skmacy 171178784Skmacystruct rdma_ucm_reject { 172178784Skmacy __u32 id; 173178784Skmacy __u8 private_data_len; 174178784Skmacy __u8 reserved[3]; 175178784Skmacy __u8 private_data[RDMA_MAX_PRIVATE_DATA]; 176178784Skmacy}; 177178784Skmacy 178178784Skmacystruct rdma_ucm_disconnect { 179178784Skmacy __u32 id; 180178784Skmacy}; 181178784Skmacy 182178784Skmacystruct rdma_ucm_init_qp_attr { 183178784Skmacy __u64 response; 184178784Skmacy __u32 id; 185178784Skmacy __u32 qp_state; 186178784Skmacy}; 187178784Skmacy 188178784Skmacystruct rdma_ucm_notify { 189178784Skmacy __u32 id; 190178784Skmacy __u32 event; 191178784Skmacy}; 192178784Skmacy 193178784Skmacystruct rdma_ucm_join_mcast { 194178784Skmacy __u64 response; /* rdma_ucm_create_id_resp */ 195178784Skmacy __u64 uid; 196178784Skmacy struct sockaddr_in6 addr; 197178784Skmacy __u32 id; 198178784Skmacy}; 199178784Skmacy 200178784Skmacystruct rdma_ucm_get_event { 201178784Skmacy __u64 response; 202178784Skmacy}; 203178784Skmacy 204178784Skmacystruct rdma_ucm_event_resp { 205178784Skmacy __u64 uid; 206178784Skmacy __u32 id; 207178784Skmacy __u32 event; 208178784Skmacy __u32 status; 209178784Skmacy union { 210178784Skmacy struct rdma_ucm_conn_param conn; 211178784Skmacy struct rdma_ucm_ud_param ud; 212178784Skmacy } param; 213178784Skmacy}; 214178784Skmacy 215178784Skmacy#endif /* RDMA_USER_CM_H */ 216