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