ibvti.h revision f07a6d2ab62592f08fb2856d7426d06ea26d999b
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_IB_IBTL_IBVTI_H
#define _SYS_IB_IBTL_IBVTI_H
/*
* ibvti.h
*
* This file contains private verbs level transport interface extensions.
*/
#ifdef __cplusplus
extern "C" {
#endif
/* The number of times the */
/* CM will retry its MADs */
/* when IBT_OCHAN_CM_RETRY */
/* is set */
/* use oc_starting_psn when */
/* IBT_OCHAN_STARTING_PSN is */
/* set */
/* The maximum time in */
/* microseconds that local */
/* client takes to respond */
/* for a CM callback */
/* The maximum time in */
/* microseconds that remote */
/* node takes to respond */
/* for a CM MAD */
/*
* Note that variables of type ibt_qp_hdl_t (really ibt_channel_hdl_t)
* can be used in some of the IBTI interfaces, e.g., ibt_open_rc_channel().
*/
#define ibt_qp_hdl_t ibt_channel_hdl_t
/*
* ibt_cq_priority_t
* VTI clients have full control over CQ priorities.
*/
#define IBT_CQ_PRI_2 IBT_CQ_OPAQUE_2
#define IBT_CQ_PRI_3 IBT_CQ_OPAQUE_3
#define IBT_CQ_PRI_4 IBT_CQ_OPAQUE_4
#define IBT_CQ_PRI_5 IBT_CQ_OPAQUE_5
#define IBT_CQ_PRI_6 IBT_CQ_OPAQUE_6
#define IBT_CQ_PRI_7 IBT_CQ_OPAQUE_7
#define IBT_CQ_PRI_8 IBT_CQ_OPAQUE_8
#define IBT_CQ_PRI_9 IBT_CQ_OPAQUE_9
#define IBT_CQ_PRI_10 IBT_CQ_OPAQUE_10
#define IBT_CQ_PRI_11 IBT_CQ_OPAQUE_11
#define IBT_CQ_PRI_12 IBT_CQ_OPAQUE_12
#define IBT_CQ_PRI_13 IBT_CQ_OPAQUE_13
#define IBT_CQ_PRI_14 IBT_CQ_OPAQUE_14
#define IBT_CQ_PRI_15 IBT_CQ_OPAQUE_15
/*
* FUNCTION PROTOTYPES.
*/
/*
* ibt_alloc_ah()
* Allocates and returns an address handle (ibt_ah_hdl_t).
*/
/*
* ibt_free_ah()
* Release/de-allocate the specified handle.
*/
/*
* ibt_query_ah
* Obtain the address vector information for the specified address handle.
*/
/*
* ibt_modify_ah
* Modify the address vector information for the specified address handle.
*/
/*
* ibt_alloc_qp()
* Allocate a QP with specified attributes.
*
* Note:
* QPs allocated by ibt_alloc_qp are in the RESET state. The client
* needs to transition an RC QP into the INIT state if it is going to
* use ibt_open_rc_channel to establish the connection.
* The client needs to transition an UD QP into the RTS state.
*/
/*
* ibt_alloc_special_qp()
* Allocate a special QP with specified attributes.
*
* Note:
* QPs allocated by ibt_alloc_special_qp are in the RESET state.
* The client needs to transition an UD QP into the RTS state.
*/
/*
* ibt_flush_qp()
* Transition a QP into error state to flush all outstanding
* work requests. Must be called before calling ibt_free_qp().
* Use ibt_close_rc_channel for RC QPs that have been opened
* successfully.
*/
/*
* ibt_initialize_qp()
* Transition a QP from RESET state into a usable state.
* An RC QP is transitioned into the INIT state, ready for
* a call to ibt_open_rc_channel(). A UD QP is transitioned
* all the way to the RTS state.
*/
/*
* ibt_free_qp()
* De-allocate or free the resources associated with an existing QP.
*/
/*
* ibt_query_qp()
* Query the attributes of an existing QP.
*/
/*
* ibt_modify_qp()
* Modify the attributes of an existing QP.
*/
/*
* ibt_set_qp_private(), ibt_get_qp_private()
*/
/*
* ibt_qp_to_hca_guid
* A helper function to retrieve HCA GUID for the specified QP.
*/
/*
* ibt_recover_ud_qp()
* Recover an UD QP which has transitioned to SQ Error state. The
* ibt_recover_ud_qp() transitions the QP from SQ Error state to
* Ready-To-Send QP state.
*
* If a work request posted to a UD QP's send queue completes with
* an error (see ibt_wc_status_t), the QP gets transitioned to SQ
* Error state. In order to reuse this QP, ibt_recover_ud_qp() can
* be used to recover the QP to a usable (Ready-to-Send) state.
*/
/*
* Datagram Domain Functions
*/
/*
* ibt_ud_get_dqpn
* Finds the destination QPN at the specified destination that the
* specified service can be reached on. The IBTF CM initiates the
* service ID resolution protocol (SIDR) to determine a destination QPN.
*/
/*
* ibt_get_module_failure()
*
* Used to obtain a special IBTF failure code for IB module specific
* failures, i.e. failures other than those defined in ibt_status_t.
*/
ibt_cm_status_t, ibt_cm_proceed_reply_t *, void *,
#ifdef __cplusplus
}
#endif
#endif /* _SYS_IB_IBTL_IBVTI_H */