Path: blob/main/sys/ofed/include/uapi/rdma/rdma_user_cm.h
39488 views
/*-1* SPDX-License-Identifier: BSD-2-Clause OR GPL-2.02*3* Copyright (c) 2005-2006 Intel Corporation. All rights reserved.4*5* This software is available to you under a choice of one of two6* licenses. You may choose to be licensed under the terms of the GNU7* General Public License (GPL) Version 2, available from the file8* COPYING in the main directory of this source tree, or the9* OpenIB.org BSD license below:10*11* Redistribution and use in source and binary forms, with or12* without modification, are permitted provided that the following13* conditions are met:14*15* - Redistributions of source code must retain the above16* copyright notice, this list of conditions and the following17* disclaimer.18*19* - Redistributions in binary form must reproduce the above20* copyright notice, this list of conditions and the following21* disclaimer in the documentation and/or other materials22* provided with the distribution.23*24* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,25* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF26* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND27* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS28* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN29* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN30* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE31* SOFTWARE.32*/3334#ifndef RDMA_USER_CM_H35#define RDMA_USER_CM_H3637#ifdef _KERNEL38#include <linux/types.h>39#include <linux/socket.h>40#include <linux/in6.h>41#else42#include <infiniband/types.h>43#include <netinet/in.h>44#endif4546#include <rdma/ib_user_verbs.h>47#include <rdma/ib_user_sa.h>4849#define RDMA_USER_CM_ABI_VERSION 45051#define RDMA_MAX_PRIVATE_DATA 2565253enum {54RDMA_USER_CM_CMD_CREATE_ID,55RDMA_USER_CM_CMD_DESTROY_ID,56RDMA_USER_CM_CMD_BIND_IP,57RDMA_USER_CM_CMD_RESOLVE_IP,58RDMA_USER_CM_CMD_RESOLVE_ROUTE,59RDMA_USER_CM_CMD_QUERY_ROUTE,60RDMA_USER_CM_CMD_CONNECT,61RDMA_USER_CM_CMD_LISTEN,62RDMA_USER_CM_CMD_ACCEPT,63RDMA_USER_CM_CMD_REJECT,64RDMA_USER_CM_CMD_DISCONNECT,65RDMA_USER_CM_CMD_INIT_QP_ATTR,66RDMA_USER_CM_CMD_GET_EVENT,67RDMA_USER_CM_CMD_GET_OPTION,68RDMA_USER_CM_CMD_SET_OPTION,69RDMA_USER_CM_CMD_NOTIFY,70RDMA_USER_CM_CMD_JOIN_IP_MCAST,71RDMA_USER_CM_CMD_LEAVE_MCAST,72RDMA_USER_CM_CMD_MIGRATE_ID,73RDMA_USER_CM_CMD_QUERY,74RDMA_USER_CM_CMD_BIND,75RDMA_USER_CM_CMD_RESOLVE_ADDR,76RDMA_USER_CM_CMD_JOIN_MCAST77};7879/*80* command ABI structures.81*/82struct rdma_ucm_cmd_hdr {83__u32 cmd;84__u16 in;85__u16 out;86};8788struct rdma_ucm_create_id {89__u64 uid;90__u64 response;91__u16 ps;92__u8 qp_type;93__u8 reserved[5];94};9596struct rdma_ucm_create_id_resp {97__u32 id;98};99100struct rdma_ucm_destroy_id {101__u64 response;102__u32 id;103__u32 reserved;104};105106struct rdma_ucm_destroy_id_resp {107__u32 events_reported;108};109110struct rdma_ucm_bind_ip {111__u64 response;112struct sockaddr_in6 addr;113__u32 id;114};115116struct rdma_ucm_bind {117__u32 id;118__u16 addr_size;119__u16 reserved;120struct sockaddr_storage addr;121};122123struct rdma_ucm_resolve_ip {124struct sockaddr_in6 src_addr;125struct sockaddr_in6 dst_addr;126__u32 id;127__u32 timeout_ms;128};129130struct rdma_ucm_resolve_addr {131__u32 id;132__u32 timeout_ms;133__u16 src_size;134__u16 dst_size;135__u32 reserved;136struct sockaddr_storage src_addr;137struct sockaddr_storage dst_addr;138};139140struct rdma_ucm_resolve_route {141__u32 id;142__u32 timeout_ms;143};144145enum {146RDMA_USER_CM_QUERY_ADDR,147RDMA_USER_CM_QUERY_PATH,148RDMA_USER_CM_QUERY_GID149};150151struct rdma_ucm_query {152__u64 response;153__u32 id;154__u32 option;155};156157struct rdma_ucm_query_route_resp {158__u64 node_guid;159struct ib_user_path_rec ib_route[2];160struct sockaddr_in6 src_addr;161struct sockaddr_in6 dst_addr;162__u32 num_paths;163__u8 port_num;164__u8 reserved[3];165};166167struct rdma_ucm_query_addr_resp {168__u64 node_guid;169__u8 port_num;170__u8 reserved;171__u16 pkey;172__u16 src_size;173__u16 dst_size;174struct sockaddr_storage src_addr;175struct sockaddr_storage dst_addr;176};177178struct rdma_ucm_query_path_resp {179__u32 num_paths;180__u32 reserved;181struct ib_path_rec_data path_data[0];182};183184struct rdma_ucm_conn_param {185__u32 qp_num;186__u32 qkey;187__u8 private_data[RDMA_MAX_PRIVATE_DATA];188__u8 private_data_len;189__u8 srq;190__u8 responder_resources;191__u8 initiator_depth;192__u8 flow_control;193__u8 retry_count;194__u8 rnr_retry_count;195__u8 valid;196};197198struct rdma_ucm_ud_param {199__u32 qp_num;200__u32 qkey;201struct ib_uverbs_ah_attr ah_attr;202__u8 private_data[RDMA_MAX_PRIVATE_DATA];203__u8 private_data_len;204__u8 reserved[7];205};206207struct rdma_ucm_connect {208struct rdma_ucm_conn_param conn_param;209__u32 id;210__u32 reserved;211};212213struct rdma_ucm_listen {214__u32 id;215__u32 backlog;216};217218struct rdma_ucm_accept {219__u64 uid;220struct rdma_ucm_conn_param conn_param;221__u32 id;222__u32 reserved;223};224225struct rdma_ucm_reject {226__u32 id;227__u8 private_data_len;228__u8 reserved[3];229__u8 private_data[RDMA_MAX_PRIVATE_DATA];230};231232struct rdma_ucm_disconnect {233__u32 id;234};235236struct rdma_ucm_init_qp_attr {237__u64 response;238__u32 id;239__u32 qp_state;240};241242struct rdma_ucm_notify {243__u32 id;244__u32 event;245};246247struct rdma_ucm_join_ip_mcast {248__u64 response; /* rdma_ucm_create_id_resp */249__u64 uid;250struct sockaddr_in6 addr;251__u32 id;252};253254/* Multicast join flags */255enum {256RDMA_MC_JOIN_FLAG_FULLMEMBER,257RDMA_MC_JOIN_FLAG_SENDONLY_FULLMEMBER,258RDMA_MC_JOIN_FLAG_RESERVED,259};260261struct rdma_ucm_join_mcast {262__u64 response; /* rdma_ucma_create_id_resp */263__u64 uid;264__u32 id;265__u16 addr_size;266__u16 join_flags;267struct sockaddr_storage addr;268};269270struct rdma_ucm_get_event {271__u64 response;272};273274struct rdma_ucm_event_resp {275__u64 uid;276__u32 id;277__u32 event;278__u32 status;279union {280struct rdma_ucm_conn_param conn;281struct rdma_ucm_ud_param ud;282} param;283};284285/* Option levels */286enum {287RDMA_OPTION_ID = 0,288RDMA_OPTION_IB = 1289};290291/* Option details */292enum {293RDMA_OPTION_ID_TOS = 0,294RDMA_OPTION_ID_REUSEADDR = 1,295RDMA_OPTION_ID_AFONLY = 2,296RDMA_OPTION_ID_ACK_TIMEOUT = 3297};298299enum {300RDMA_OPTION_IB_PATH = 1301};302303struct rdma_ucm_set_option {304__u64 optval;305__u32 id;306__u32 level;307__u32 optname;308__u32 optlen;309};310311struct rdma_ucm_migrate_id {312__u64 response;313__u32 id;314__u32 fd;315};316317struct rdma_ucm_migrate_resp {318__u32 events_reported;319};320321#endif /* RDMA_USER_CM_H */322323324