1*09938b21SHans Petter Selasky /*- 2*09938b21SHans Petter Selasky * SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0 3*09938b21SHans Petter Selasky * 49f715dc1SHans Petter Selasky * Copyright (c) 2005 Topspin Communications. All rights reserved. 59f715dc1SHans Petter Selasky * Copyright (c) 2005 Intel Corporation. All rights reserved. 69f715dc1SHans Petter Selasky * 79f715dc1SHans Petter Selasky * This software is available to you under a choice of one of two 89f715dc1SHans Petter Selasky * licenses. You may choose to be licensed under the terms of the GNU 99f715dc1SHans Petter Selasky * General Public License (GPL) Version 2, available from the file 109f715dc1SHans Petter Selasky * COPYING in the main directory of this source tree, or the 119f715dc1SHans Petter Selasky * OpenIB.org BSD license below: 129f715dc1SHans Petter Selasky * 139f715dc1SHans Petter Selasky * Redistribution and use in source and binary forms, with or 149f715dc1SHans Petter Selasky * without modification, are permitted provided that the following 159f715dc1SHans Petter Selasky * conditions are met: 169f715dc1SHans Petter Selasky * 179f715dc1SHans Petter Selasky * - Redistributions of source code must retain the above 189f715dc1SHans Petter Selasky * copyright notice, this list of conditions and the following 199f715dc1SHans Petter Selasky * disclaimer. 209f715dc1SHans Petter Selasky * 219f715dc1SHans Petter Selasky * - Redistributions in binary form must reproduce the above 229f715dc1SHans Petter Selasky * copyright notice, this list of conditions and the following 239f715dc1SHans Petter Selasky * disclaimer in the documentation and/or other materials 249f715dc1SHans Petter Selasky * provided with the distribution. 259f715dc1SHans Petter Selasky * 269f715dc1SHans Petter Selasky * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 279f715dc1SHans Petter Selasky * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 289f715dc1SHans Petter Selasky * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 299f715dc1SHans Petter Selasky * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 309f715dc1SHans Petter Selasky * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 319f715dc1SHans Petter Selasky * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 329f715dc1SHans Petter Selasky * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 339f715dc1SHans Petter Selasky * SOFTWARE. 349f715dc1SHans Petter Selasky */ 359f715dc1SHans Petter Selasky 369f715dc1SHans Petter Selasky #ifndef IB_USER_CM_H 379f715dc1SHans Petter Selasky #define IB_USER_CM_H 389f715dc1SHans Petter Selasky 399f715dc1SHans Petter Selasky #ifdef _KERNEL 409f715dc1SHans Petter Selasky #include <linux/types.h> 419f715dc1SHans Petter Selasky #else 429f715dc1SHans Petter Selasky #include <infiniband/types.h> 439f715dc1SHans Petter Selasky #endif 449f715dc1SHans Petter Selasky #include <rdma/ib_user_sa.h> 459f715dc1SHans Petter Selasky 469f715dc1SHans Petter Selasky #define IB_USER_CM_ABI_VERSION 5 479f715dc1SHans Petter Selasky 489f715dc1SHans Petter Selasky enum { 499f715dc1SHans Petter Selasky IB_USER_CM_CMD_CREATE_ID, 509f715dc1SHans Petter Selasky IB_USER_CM_CMD_DESTROY_ID, 519f715dc1SHans Petter Selasky IB_USER_CM_CMD_ATTR_ID, 529f715dc1SHans Petter Selasky 539f715dc1SHans Petter Selasky IB_USER_CM_CMD_LISTEN, 549f715dc1SHans Petter Selasky IB_USER_CM_CMD_NOTIFY, 559f715dc1SHans Petter Selasky 569f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_REQ, 579f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_REP, 589f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_RTU, 599f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_DREQ, 609f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_DREP, 619f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_REJ, 629f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_MRA, 639f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_LAP, 649f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_APR, 659f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_SIDR_REQ, 669f715dc1SHans Petter Selasky IB_USER_CM_CMD_SEND_SIDR_REP, 679f715dc1SHans Petter Selasky 689f715dc1SHans Petter Selasky IB_USER_CM_CMD_EVENT, 699f715dc1SHans Petter Selasky IB_USER_CM_CMD_INIT_QP_ATTR, 709f715dc1SHans Petter Selasky }; 719f715dc1SHans Petter Selasky /* 729f715dc1SHans Petter Selasky * command ABI structures. 739f715dc1SHans Petter Selasky */ 749f715dc1SHans Petter Selasky struct ib_ucm_cmd_hdr { 759f715dc1SHans Petter Selasky __u32 cmd; 769f715dc1SHans Petter Selasky __u16 in; 779f715dc1SHans Petter Selasky __u16 out; 789f715dc1SHans Petter Selasky }; 799f715dc1SHans Petter Selasky 809f715dc1SHans Petter Selasky struct ib_ucm_create_id { 819f715dc1SHans Petter Selasky __u64 uid; 829f715dc1SHans Petter Selasky __u64 response; 839f715dc1SHans Petter Selasky }; 849f715dc1SHans Petter Selasky 859f715dc1SHans Petter Selasky struct ib_ucm_create_id_resp { 869f715dc1SHans Petter Selasky __u32 id; 879f715dc1SHans Petter Selasky }; 889f715dc1SHans Petter Selasky 899f715dc1SHans Petter Selasky struct ib_ucm_destroy_id { 909f715dc1SHans Petter Selasky __u64 response; 919f715dc1SHans Petter Selasky __u32 id; 929f715dc1SHans Petter Selasky __u32 reserved; 939f715dc1SHans Petter Selasky }; 949f715dc1SHans Petter Selasky 959f715dc1SHans Petter Selasky struct ib_ucm_destroy_id_resp { 969f715dc1SHans Petter Selasky __u32 events_reported; 979f715dc1SHans Petter Selasky }; 989f715dc1SHans Petter Selasky 999f715dc1SHans Petter Selasky struct ib_ucm_attr_id { 1009f715dc1SHans Petter Selasky __u64 response; 1019f715dc1SHans Petter Selasky __u32 id; 1029f715dc1SHans Petter Selasky __u32 reserved; 1039f715dc1SHans Petter Selasky }; 1049f715dc1SHans Petter Selasky 1059f715dc1SHans Petter Selasky struct ib_ucm_attr_id_resp { 1069f715dc1SHans Petter Selasky __be64 service_id; 1079f715dc1SHans Petter Selasky __be64 service_mask; 1089f715dc1SHans Petter Selasky __be32 local_id; 1099f715dc1SHans Petter Selasky __be32 remote_id; 1109f715dc1SHans Petter Selasky }; 1119f715dc1SHans Petter Selasky 1129f715dc1SHans Petter Selasky struct ib_ucm_init_qp_attr { 1139f715dc1SHans Petter Selasky __u64 response; 1149f715dc1SHans Petter Selasky __u32 id; 1159f715dc1SHans Petter Selasky __u32 qp_state; 1169f715dc1SHans Petter Selasky }; 1179f715dc1SHans Petter Selasky 1189f715dc1SHans Petter Selasky struct ib_ucm_listen { 1199f715dc1SHans Petter Selasky __be64 service_id; 1209f715dc1SHans Petter Selasky __be64 service_mask; 1219f715dc1SHans Petter Selasky __u32 id; 1229f715dc1SHans Petter Selasky __u32 reserved; 1239f715dc1SHans Petter Selasky }; 1249f715dc1SHans Petter Selasky 1259f715dc1SHans Petter Selasky struct ib_ucm_notify { 1269f715dc1SHans Petter Selasky __u32 id; 1279f715dc1SHans Petter Selasky __u32 event; 1289f715dc1SHans Petter Selasky }; 1299f715dc1SHans Petter Selasky 1309f715dc1SHans Petter Selasky struct ib_ucm_private_data { 1319f715dc1SHans Petter Selasky __u64 data; 1329f715dc1SHans Petter Selasky __u32 id; 1339f715dc1SHans Petter Selasky __u8 len; 1349f715dc1SHans Petter Selasky __u8 reserved[3]; 1359f715dc1SHans Petter Selasky }; 1369f715dc1SHans Petter Selasky 1379f715dc1SHans Petter Selasky struct ib_ucm_req { 1389f715dc1SHans Petter Selasky __u32 id; 1399f715dc1SHans Petter Selasky __u32 qpn; 1409f715dc1SHans Petter Selasky __u32 qp_type; 1419f715dc1SHans Petter Selasky __u32 psn; 1429f715dc1SHans Petter Selasky __be64 sid; 1439f715dc1SHans Petter Selasky __u64 data; 1449f715dc1SHans Petter Selasky __u64 primary_path; 1459f715dc1SHans Petter Selasky __u64 alternate_path; 1469f715dc1SHans Petter Selasky __u8 len; 1479f715dc1SHans Petter Selasky __u8 peer_to_peer; 1489f715dc1SHans Petter Selasky __u8 responder_resources; 1499f715dc1SHans Petter Selasky __u8 initiator_depth; 1509f715dc1SHans Petter Selasky __u8 remote_cm_response_timeout; 1519f715dc1SHans Petter Selasky __u8 flow_control; 1529f715dc1SHans Petter Selasky __u8 local_cm_response_timeout; 1539f715dc1SHans Petter Selasky __u8 retry_count; 1549f715dc1SHans Petter Selasky __u8 rnr_retry_count; 1559f715dc1SHans Petter Selasky __u8 max_cm_retries; 1569f715dc1SHans Petter Selasky __u8 srq; 1579f715dc1SHans Petter Selasky __u8 reserved[5]; 1589f715dc1SHans Petter Selasky }; 1599f715dc1SHans Petter Selasky 1609f715dc1SHans Petter Selasky struct ib_ucm_rep { 1619f715dc1SHans Petter Selasky __u64 uid; 1629f715dc1SHans Petter Selasky __u64 data; 1639f715dc1SHans Petter Selasky __u32 id; 1649f715dc1SHans Petter Selasky __u32 qpn; 1659f715dc1SHans Petter Selasky __u32 psn; 1669f715dc1SHans Petter Selasky __u8 len; 1679f715dc1SHans Petter Selasky __u8 responder_resources; 1689f715dc1SHans Petter Selasky __u8 initiator_depth; 1699f715dc1SHans Petter Selasky __u8 target_ack_delay; 1709f715dc1SHans Petter Selasky __u8 failover_accepted; 1719f715dc1SHans Petter Selasky __u8 flow_control; 1729f715dc1SHans Petter Selasky __u8 rnr_retry_count; 1739f715dc1SHans Petter Selasky __u8 srq; 1749f715dc1SHans Petter Selasky __u8 reserved[4]; 1759f715dc1SHans Petter Selasky }; 1769f715dc1SHans Petter Selasky 1779f715dc1SHans Petter Selasky struct ib_ucm_info { 1789f715dc1SHans Petter Selasky __u32 id; 1799f715dc1SHans Petter Selasky __u32 status; 1809f715dc1SHans Petter Selasky __u64 info; 1819f715dc1SHans Petter Selasky __u64 data; 1829f715dc1SHans Petter Selasky __u8 info_len; 1839f715dc1SHans Petter Selasky __u8 data_len; 1849f715dc1SHans Petter Selasky __u8 reserved[6]; 1859f715dc1SHans Petter Selasky }; 1869f715dc1SHans Petter Selasky 1879f715dc1SHans Petter Selasky struct ib_ucm_mra { 1889f715dc1SHans Petter Selasky __u64 data; 1899f715dc1SHans Petter Selasky __u32 id; 1909f715dc1SHans Petter Selasky __u8 len; 1919f715dc1SHans Petter Selasky __u8 timeout; 1929f715dc1SHans Petter Selasky __u8 reserved[2]; 1939f715dc1SHans Petter Selasky }; 1949f715dc1SHans Petter Selasky 1959f715dc1SHans Petter Selasky struct ib_ucm_lap { 1969f715dc1SHans Petter Selasky __u64 path; 1979f715dc1SHans Petter Selasky __u64 data; 1989f715dc1SHans Petter Selasky __u32 id; 1999f715dc1SHans Petter Selasky __u8 len; 2009f715dc1SHans Petter Selasky __u8 reserved[3]; 2019f715dc1SHans Petter Selasky }; 2029f715dc1SHans Petter Selasky 2039f715dc1SHans Petter Selasky struct ib_ucm_sidr_req { 2049f715dc1SHans Petter Selasky __u32 id; 2059f715dc1SHans Petter Selasky __u32 timeout; 2069f715dc1SHans Petter Selasky __be64 sid; 2079f715dc1SHans Petter Selasky __u64 data; 2089f715dc1SHans Petter Selasky __u64 path; 2099f715dc1SHans Petter Selasky __u16 reserved_pkey; 2109f715dc1SHans Petter Selasky __u8 len; 2119f715dc1SHans Petter Selasky __u8 max_cm_retries; 2129f715dc1SHans Petter Selasky __u8 reserved[4]; 2139f715dc1SHans Petter Selasky }; 2149f715dc1SHans Petter Selasky 2159f715dc1SHans Petter Selasky struct ib_ucm_sidr_rep { 2169f715dc1SHans Petter Selasky __u32 id; 2179f715dc1SHans Petter Selasky __u32 qpn; 2189f715dc1SHans Petter Selasky __u32 qkey; 2199f715dc1SHans Petter Selasky __u32 status; 2209f715dc1SHans Petter Selasky __u64 info; 2219f715dc1SHans Petter Selasky __u64 data; 2229f715dc1SHans Petter Selasky __u8 info_len; 2239f715dc1SHans Petter Selasky __u8 data_len; 2249f715dc1SHans Petter Selasky __u8 reserved[6]; 2259f715dc1SHans Petter Selasky }; 2269f715dc1SHans Petter Selasky /* 2279f715dc1SHans Petter Selasky * event notification ABI structures. 2289f715dc1SHans Petter Selasky */ 2299f715dc1SHans Petter Selasky struct ib_ucm_event_get { 2309f715dc1SHans Petter Selasky __u64 response; 2319f715dc1SHans Petter Selasky __u64 data; 2329f715dc1SHans Petter Selasky __u64 info; 2339f715dc1SHans Petter Selasky __u8 data_len; 2349f715dc1SHans Petter Selasky __u8 info_len; 2359f715dc1SHans Petter Selasky __u8 reserved[6]; 2369f715dc1SHans Petter Selasky }; 2379f715dc1SHans Petter Selasky 2389f715dc1SHans Petter Selasky struct ib_ucm_req_event_resp { 2399f715dc1SHans Petter Selasky struct ib_user_path_rec primary_path; 2409f715dc1SHans Petter Selasky struct ib_user_path_rec alternate_path; 2419f715dc1SHans Petter Selasky __be64 remote_ca_guid; 2429f715dc1SHans Petter Selasky __u32 remote_qkey; 2439f715dc1SHans Petter Selasky __u32 remote_qpn; 2449f715dc1SHans Petter Selasky __u32 qp_type; 2459f715dc1SHans Petter Selasky __u32 starting_psn; 2469f715dc1SHans Petter Selasky __u8 responder_resources; 2479f715dc1SHans Petter Selasky __u8 initiator_depth; 2489f715dc1SHans Petter Selasky __u8 local_cm_response_timeout; 2499f715dc1SHans Petter Selasky __u8 flow_control; 2509f715dc1SHans Petter Selasky __u8 remote_cm_response_timeout; 2519f715dc1SHans Petter Selasky __u8 retry_count; 2529f715dc1SHans Petter Selasky __u8 rnr_retry_count; 2539f715dc1SHans Petter Selasky __u8 srq; 2549f715dc1SHans Petter Selasky __u8 port; 2559f715dc1SHans Petter Selasky __u8 reserved[7]; 2569f715dc1SHans Petter Selasky }; 2579f715dc1SHans Petter Selasky 2589f715dc1SHans Petter Selasky struct ib_ucm_rep_event_resp { 2599f715dc1SHans Petter Selasky __be64 remote_ca_guid; 2609f715dc1SHans Petter Selasky __u32 remote_qkey; 2619f715dc1SHans Petter Selasky __u32 remote_qpn; 2629f715dc1SHans Petter Selasky __u32 starting_psn; 2639f715dc1SHans Petter Selasky __u8 responder_resources; 2649f715dc1SHans Petter Selasky __u8 initiator_depth; 2659f715dc1SHans Petter Selasky __u8 target_ack_delay; 2669f715dc1SHans Petter Selasky __u8 failover_accepted; 2679f715dc1SHans Petter Selasky __u8 flow_control; 2689f715dc1SHans Petter Selasky __u8 rnr_retry_count; 2699f715dc1SHans Petter Selasky __u8 srq; 2709f715dc1SHans Petter Selasky __u8 reserved[5]; 2719f715dc1SHans Petter Selasky }; 2729f715dc1SHans Petter Selasky 2739f715dc1SHans Petter Selasky struct ib_ucm_rej_event_resp { 2749f715dc1SHans Petter Selasky __u32 reason; 2759f715dc1SHans Petter Selasky /* ari in ib_ucm_event_get info field. */ 2769f715dc1SHans Petter Selasky }; 2779f715dc1SHans Petter Selasky 2789f715dc1SHans Petter Selasky struct ib_ucm_mra_event_resp { 2799f715dc1SHans Petter Selasky __u8 timeout; 2809f715dc1SHans Petter Selasky __u8 reserved[3]; 2819f715dc1SHans Petter Selasky }; 2829f715dc1SHans Petter Selasky 2839f715dc1SHans Petter Selasky struct ib_ucm_lap_event_resp { 2849f715dc1SHans Petter Selasky struct ib_user_path_rec path; 2859f715dc1SHans Petter Selasky }; 2869f715dc1SHans Petter Selasky 2879f715dc1SHans Petter Selasky struct ib_ucm_apr_event_resp { 2889f715dc1SHans Petter Selasky __u32 status; 2899f715dc1SHans Petter Selasky /* apr info in ib_ucm_event_get info field. */ 2909f715dc1SHans Petter Selasky }; 2919f715dc1SHans Petter Selasky 2929f715dc1SHans Petter Selasky struct ib_ucm_sidr_req_event_resp { 2939f715dc1SHans Petter Selasky __u16 pkey; 2949f715dc1SHans Petter Selasky __u8 port; 2959f715dc1SHans Petter Selasky __u8 reserved; 2969f715dc1SHans Petter Selasky }; 2979f715dc1SHans Petter Selasky 2989f715dc1SHans Petter Selasky struct ib_ucm_sidr_rep_event_resp { 2999f715dc1SHans Petter Selasky __u32 status; 3009f715dc1SHans Petter Selasky __u32 qkey; 3019f715dc1SHans Petter Selasky __u32 qpn; 3029f715dc1SHans Petter Selasky /* info in ib_ucm_event_get info field. */ 3039f715dc1SHans Petter Selasky }; 3049f715dc1SHans Petter Selasky 3059f715dc1SHans Petter Selasky #define IB_UCM_PRES_DATA 0x01 3069f715dc1SHans Petter Selasky #define IB_UCM_PRES_INFO 0x02 3079f715dc1SHans Petter Selasky #define IB_UCM_PRES_PRIMARY 0x04 3089f715dc1SHans Petter Selasky #define IB_UCM_PRES_ALTERNATE 0x08 3099f715dc1SHans Petter Selasky 3109f715dc1SHans Petter Selasky struct ib_ucm_event_resp { 3119f715dc1SHans Petter Selasky __u64 uid; 3129f715dc1SHans Petter Selasky __u32 id; 3139f715dc1SHans Petter Selasky __u32 event; 3149f715dc1SHans Petter Selasky __u32 present; 3159f715dc1SHans Petter Selasky __u32 reserved; 3169f715dc1SHans Petter Selasky union { 3179f715dc1SHans Petter Selasky struct ib_ucm_req_event_resp req_resp; 3189f715dc1SHans Petter Selasky struct ib_ucm_rep_event_resp rep_resp; 3199f715dc1SHans Petter Selasky struct ib_ucm_rej_event_resp rej_resp; 3209f715dc1SHans Petter Selasky struct ib_ucm_mra_event_resp mra_resp; 3219f715dc1SHans Petter Selasky struct ib_ucm_lap_event_resp lap_resp; 3229f715dc1SHans Petter Selasky struct ib_ucm_apr_event_resp apr_resp; 3239f715dc1SHans Petter Selasky 3249f715dc1SHans Petter Selasky struct ib_ucm_sidr_req_event_resp sidr_req_resp; 3259f715dc1SHans Petter Selasky struct ib_ucm_sidr_rep_event_resp sidr_rep_resp; 3269f715dc1SHans Petter Selasky 3279f715dc1SHans Petter Selasky __u32 send_status; 3289f715dc1SHans Petter Selasky } u; 3299f715dc1SHans Petter Selasky }; 3309f715dc1SHans Petter Selasky 3319f715dc1SHans Petter Selasky #endif /* IB_USER_CM_H */ 332