1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. 24 */ 25 26/* 27 * This header file contains definations for APIs which are exported by 28 * sol_uverbs for use by sol_ucma 29 */ 30#ifndef _SYS_IB_CLIENTS_OF_SOL_UVERBS_SOL_UVERBS2UCMA_H 31#define _SYS_IB_CLIENTS_OF_SOL_UVERBS_SOL_UVERBS2UCMA_H 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36 37#define SOL_UCMA_UVERBS_PATH "/ib/sol_uverbs@0:ucma" 38 39/* 40 * This API returns the IB & iWARP client handles that sol_uverbs uses 41 * to interact with Solaris IBTF and iWARP frameworks. 42 */ 43#define SOL_UVERBS_GET_CLNT_HDL "sol_uverbs_get_clnt_hdl" 44typedef void (*uverbs_get_clnt_hdl_t) (void **, void **); 45 46/* 47 * This API returns the QP handle used by Solaris IBTF / iWARP framework 48 * for an QP. The QP number is the input for this API. NULL is returned 49 * for QP not allocated by sol_uverbs. 50 */ 51#define SOL_UVERBS_QPNUM2QPHDL "sol_uverbs_qpnum2qphdl" 52typedef void *(*uverbs_qpnum2qphdl_t) (uint32_t); 53 54/* 55 * This API disables user QP modifies for an QP specified by the input 56 * QP number. It returns 0 on succcess and non-0 on failure. 57 */ 58#define SOL_UVERBS_DISABLE_UQPN_MODIFY "sol_uverbs_disable_uqpn_modify" 59typedef int (*uverbs_disable_uqpn_mod_t)(uint32_t); 60 61/* 62 * This API enables / disables CQ notification for all CQs assosiated 63 * with the QP. This is done to ensure that the first completion event 64 * is send to userland *after* connection is established. 65 */ 66typedef enum { 67 SOL_UVERBS2UCMA_CQ_NOTIFY_NOT_SET = 0, 68 SOL_UVERBS2UCMA_CQ_NOTIFY_ENABLE, 69 SOL_UVERBS2UCMA_CQ_NOTIFY_DISABLE 70} sol_uverbs_cq_ctrl_t; 71#define SOL_UVERBS_UQPN_CQ_CTRL "sol_uverbs_uqpn_cq_ctrl" 72typedef int (*uverbs_uqpn_cq_ctrl_t)(uint32_t, sol_uverbs_cq_ctrl_t); 73 74/* 75 * This API sets the QP free state. The uint32_t uqpid is passed for 76 * disabling QP free and void *qphdl is passed for enabling QP free. 77 */ 78typedef enum { 79 SOL_UVERBS2UCMA_ENABLE_QP_FREE, 80 SOL_UVERBS2UCMA_DISABLE_QP_FREE, 81 SOL_UVERBS2UCMA_FREE_PENDING 82} sol_uverbs_qp_free_state_t; 83#define SOL_UVERBS_SET_QPFREE_STATE "sol_uverbs_set_qp_free_state" 84typedef void (*uverbs_set_qp_free_state_t)(sol_uverbs_qp_free_state_t, 85 uint32_t, void *); 86 87/* 88 * This API flushes the QP specified by the QP num 89 */ 90#define SOL_UVERBS_FLUSH_QP "sol_uverbs_flush_qp" 91typedef void (*uverbs_flush_qp_t)(uint32_t); 92 93#ifdef __cplusplus 94} 95#endif 96 97#endif /* _SYS_IB_CLIENTS_OF_SOL_UVERBS_SOL_UVERBS2UCMA_H */ 98