<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<link rel="stylesheet" href="./robodoc.css" type="text/css">
<title>./iba_doc/ib_al_h.html</title>
<!-- Source: ./iba/ib_al.h -->
<!-- Generated with ROBODoc Version 4.99.17 (Aug  2 2005) -->
</head>
<body bgcolor="#FFFFFF">
<a name="robo_top_of_doc">Generated from ./iba/ib_al.h</a> with <a href="http://sourceforge.net/projects/robodoc/">ROBODoc</a> v4.99.17 on Thu Sep 22 2005 14:46:34
<br />
<hr />

<h2><a name="robo0">[Modules]<a name="IB20Access20Layer20API2fOverview">
IB Access Layer API/Overview</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_modules.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       InfiniBand Access Layer
</pre>
</span><p><strong>COPYRIGHT</strong></p>
<span class="COPYRIGHT"><pre>       Copyright (c) 2003 Intel Corporation - All Rights Reserved.
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       The access layer provides transport level access to an InfiniBand fabric.
       It supplies a foundation upon which a channel driver may be built.  The
       access layer exposes the capabilities of the InfiniBand architecture and
       adds support for higher-level functionality required by most users of an
       InfiniBand fabric.  Users define the protocols and policies used by the
       access layer, and the access layer implements them under the direction
       of a user.
</pre>
</span>
<hr />

<h2><a name="robo4">[Definitions]<a name="Access20Layer2fATS">
Access Layer/ATS</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       DAPL Address Translation Service
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       <strong>ATS</strong> service ID, service name, and IPv4 offset for DAPL-compliant
       <strong>ATS</strong> service records.
</pre>
</span>
<hr />

<h2><a name="robo6">[Functions]<a name="Access20Layer2fib5fadd5fsvc5fentry">
Access Layer/ib_add_svc_entry</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_add_svc_entry</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Adds a new service entry to an existing I/O controller.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_add_svc_entry</strong>(
        IN              const   ib_ioc_handle_t                         h_ioc,
        IN              const   <a href="./ib_types_h.html#robo481">ib_svc_entry_t</a>* const           p_svc_entry,
                OUT                     ib_svc_handle_t* const          ph_svc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ioc
               [in] A handle to an existing I/O controller that will support the
               added service.

       p_svc_entry
               [in] Service entry information that will be reported as part of the
               controller's service profile.

       ph_svc
               [out] Upon successful completion of this call, this references a handle
               to the added service.  This handle may be used to remove the service
               entry.

 RETURN VALUES
       IB_SUCCESS
               The service entry was successfully added.

       IB_INVALID_HANDLE
               The I/O controller handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the service entry information or handle was not
               provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the service entry.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the I/O
               controller to register the service entry.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine adds a new service to an I/O controller.  Once added, the
       service will be reported with the controller profile, provided that the
       controller is registered with the local device manager.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo66">ib_create_ioc</a>, <a href="#robo200">ib_remove_svc_entry</a>, <a href="#robo186">ib_reg_ioc</a>, <a href="./ib_types_h.html#robo481">ib_svc_entry_t</a>
</pre>
</span>
<hr />

<h2><a name="robo7">[Definitions]<a name="Access20Layer2fib5fal5fflags5ft">
Access Layer/ib_al_flags_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_al_flags_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Access layer flags used to direct the operation of various calls.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef uint32_t                                                        <strong>ib_al_flags_t</strong>;
#define IB_FLAGS_SYNC                                           0x00000001
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_FLAGS_SYNC
               Indicates that the given operation should be performed synchronously.
               The call will block until it completes.  Callbacks will still be
               invoked.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo58">ib_cm_req_t</a>, <a href="#robo55">ib_cm_rep_t</a>, <a href="#robo39">ib_cm_dreq_t</a>, <a href="#robo44">ib_cm_lap_t</a>,
       <a href="#robo196">ib_reg_svc_req_t</a>, <a href="#robo114">ib_mcast_req_t</a>, <a href="#robo180">ib_query_req_t</a>, <a href="#robo214">ib_sub_req_t</a>
</pre>
</span>
<hr />

<h2><a name="robo8">[Functions]<a name="Access20Layer2fib5falloc5fpd">
Access Layer/ib_alloc_pd</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_alloc_pd</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Allocates a protection domain on the specified channel adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_alloc_pd</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN              const   <a href="./ib_types_h.html#robo125">ib_pd_type_t</a>                            pd_type,
        IN              const   void* const                                     pd_context,
                OUT                     ib_pd_handle_t* const           ph_pd );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to an opened channel adapter.

       pd_type
               [in] Indicates the type of protection domain being created.

       pd_context
               [in] A client-specified context to associate with this allocated
               protection domain.  This context is returned to the user when
               invoking asynchronous callbacks referencing this protection domain.

       ph_pd
               [out] Upon successful completion of this call, this references a
               handle to the allocated protection domain.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INVALID_PARAMETER
               The supplied pd_type value is invalid or a reference to the protection
               domain handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to allocate the protection domain.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the protection domain.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       When successful, this routine returns a handle to a newly allocated
       protection domain.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo70">ib_dealloc_pd</a>, <a href="./ib_types_h.html#robo125">ib_pd_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo11">[Structures]<a name="Access20Layer2fib5fapr5finfo5ft">
Access Layer/ib_apr_info_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_apr_info_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Infiniband-defined additional rejection information.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_apr_info
{
        uint8_t                                         data[IB_APR_INFO_SIZE];

}       <strong>ib_apr_info_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo12">[Structures]<a name="Access20Layer2fib5fapr5fpdata5ft">
Access Layer/ib_apr_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_apr_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of an alternate path response.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_apr_pdata
{
        uint8_t                                         data[IB_APR_PDATA_SIZE];

}       <strong>ib_apr_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo14">[Structures]<a name="Access20Layer2fib5fari5ft">
Access Layer/ib_ari_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_ari_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Infiniband-defined additional rejection information.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_ari
{
        uint8_t                                         data[IB_ARI_SIZE];

}       <strong>ib_ari_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo15">[Structures]<a name="Access20Layer2fib5fasync5fevent5frec5ft">
Access Layer/ib_async_event_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_async_event_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information returned when an asynchronous event occurs on an allocated
       resource.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_async_event_rec
{
        <a href="./ib_types_h.html#robo610">ib_async_event_t</a>                                                        code;
        uint64_t                                                                        vendor_specific;

        void* __ptr64                                                           context;
        union _handle_t
        {
                ib_ca_handle_t                                                  h_ca;
                ib_cq_handle_t                                                  h_cq;
                ib_qp_handle_t                                                  h_qp;

        } handle;

}       <strong>ib_async_event_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       code
               A code that identifies the type of event being reported.

       vendor_specific
               A field containing optional vendor specific information.

       context
               User-defined context information associated with the resource on
               which the error occurred.

       handle
               A handle to the resource for which this event record was generated.
               This handle will match the handle returned during the creation of
               resource.  It is provided in case an event occurs before a client's
               call to create a resource can return.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo610">ib_async_event_t</a>, <a href="#robo138">ib_pfn_event_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo18">[Functions]<a name="Access20Layer2fib5fbind5fmw">
Access Layer/ib_bind_mw</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_bind_mw</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Binds a memory window to a registered memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_bind_mw</strong>(
        IN              const   ib_mw_handle_t                          h_mw,
        IN              const   ib_qp_handle_t                          h_qp,
        IN                              <a href="./ib_types_h.html#robo19">ib_bind_wr_t</a>* const                     p_mw_bind,
                OUT                     net32_t* const                          p_rkey );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mw
               [in] A handle to an existing memory window.

       h_qp
               [in] A handle to a queue pair that the bind request will be posted to.

       p_mw_bind
               [in] Describes the memory window bind request.

       p_rkey
               [out] The new rkey for the memory window that may be used by a remote
               end-point when performing RDMA or atomic operations to this memory
               region.

 RETURN VALUES
       IB_SUCCESS
               The memory window bind operation was successfully posted.

       IB_INVALID_MW_HANDLE
               The memory window handle was invalid.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the memory window bind work request or rkey was not
               provided.

       IB_INVALID_SERVICE_TYPE
               The queue pair configuration does not support this type of service.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_INVALID_RKEY
               The rkey is invalid for the memory region being bound.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to bind the memory window.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine posts a request to bind a memory window to a registered
       memory region.  The bind operation occurs on the specified queue pair,
       but the bound region is usable across all queue pairs within the same
       protection domain.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo68">ib_create_mw</a>, <a href="./ib_types_h.html#robo19">ib_bind_wr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo22">[Functions]<a name="Access20Layer2fib5fcancel5fmad">
Access Layer/ib_cancel_mad</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cancel_mad</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine cancels a pending send transaction to a MAD service.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cancel_mad</strong>(
        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
        IN                              <a href="#robo110">ib_mad_element_t</a>* const         p_mad_element );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mad_svc
               [in] The MAD service to which the send operation was directed.

       p_mad_element
               [in] A handle to a sent MAD element.

 RETURN VALUES
       IB_SUCCESS
               The requested MAD transaction was located and canceled.

       IB_INVALID_PARAMETER
               A reference to the MAD element list was not provided.

       IB_NOT_FOUND
               The requested transaction was not located or had already completed.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine cancels a pending send transaction to a MAD service.  If
       the request is successfully located and has not yet completed, it will
       be completed with its status set to IB_CANCELED.  The canceled operation
       will be returned to the user through the normal MAD completion callback.
       If the send transaction has already completed, this call will return
       IB_NOT_FOUND.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo207">ib_send_mad</a>
</pre>
</span>
<hr />

<h2><a name="robo23">[Functions]<a name="Access20Layer2fib5fcancel5fquery">
Access Layer/ib_cancel_query</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cancel_query</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to cancel a query of the subnet administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT void AL_API
<strong>ib_cancel_query</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   ib_query_handle_t                       h_query );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       h_query
               [in] Query handle returned by a previous call to <a href="#robo171">ib_query</a>().

 RETURN VALUES
       This function does not return a value.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine directs the access layer to cancel a query to the subnet
       administrator.  The access layer will issue notify the user with the
       final status of the query through the query callback specified in the
       call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo171">ib_query</a>
</pre>
</span>
<hr />

<h2><a name="robo24">[Structures]<a name="Access20Layer2fib5fcep5flisten5ft">
Access Layer/ib_cep_listen_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cep_listen_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Request to listen for incoming connection attempts.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cep_listen
{
        net64_t                                         svc_id;

        net64_t                                         port_guid;

        uint8_t* __ptr64                        p_cmp_buf;
        uint8_t                                         cmp_len;
        uint8_t                                         cmp_offset;

}       <strong>ib_cep_listen_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_id
               The identifier of the service to register for incoming connection
               requests.

       port_guid
               Directs the communication manager to register the listen only
               with the specified port.  This should be set to IB_ALL_PORTS
               if the listen is not directed to a particular port.

       p_cmp_buf
               An optionally provided buffer that will be used to match incoming
               connection requests with a registered service.  Use of this buffer
               permits multiple services to listen on the same service ID as long as
               they provide different compare buffers.  Incoming requests will
               be matched against the compare buffer.

       cmp_len
               Specifies the size of the compare buffer in bytes.  The length must
               be the same for all requests using the same service ID.

       cmp_offset
               An offset into the user-defined data area of a connection request
               which contains the start of the data that will be compared against.
               The offset must be the same for all requests using the same service ID.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Users fill out this structure when listening on a service ID with the
       local communication manager.  The communication manager will use the given
       service ID and compare buffer to route connection requests to the
       appropriate client.  Users may direct listens requests on a particular
       channel adapter, port, or LID.
</pre>
</span>
<hr />

<h2><a name="robo25">[Functions]<a name="Access20Layer2fib5fci5fcall">
Access Layer/ib_ci_call</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_ci_call</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Performs a vendor specific CA interface function call.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_ci_call</strong>(
        IN                              ib_ca_handle_t                          h_ca,
        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,
        IN                              uint32_t                                        num_handles,
        IN                              <a href="./ib_types_h.html#robo26">ib_ci_op_t</a>*                     const   p_ci_op );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] An opened instance of a channel adapter.

       handle_array
               [in] This parameter references an array containing handles of
               existing CA resources.  This array should contain all of the
               handles specified in the vendor specific data provided with this
               call.  All handles specified through this array are validated by
               the access layer as existing and belonging to the calling process.
               The verbs provider driver is responsible for verifying that the
               number and type of handles are correct for the requested operation.

       num_handles
               [in] The number of the handles in handle array.  This count is
               verified by the access layer.

       p_ci_op
               [in] A reference to the vendor specific CA interface data
               structure containing the operation parameters.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_CA_HANDLE
               The specified CA handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the vendor specific data was not provided.

       IB_INVALID_HANDLE
               A handle specified in the handle array was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_ERROR
               An error occurred while processing the command.  Additional
               error information is provided in the p_ci_op status field.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine performs a vendor specific CA interface function call.
       The optional p_ci_op structure provides a means to pass vendor
       specific parameters and data to the verbs provider driver.  If the
       vendor specific data contains handles, the client should provide the
       optional handle array that lists all of the handles specified in the
       vendor specific data.  The handles in the handle array are restricted
       to the following types:  ib_pd_handle_t, ib_cq_handle_t,
       ib_av_handle_t, ib_qp_handle_t, ib_mr_handle_t, or ib_mw_handle_t.
       The contents of the handle array are verified by the access layer and
       the verbs provider driver.  This call cannot be used to allocate private
       handles that are passed as parameters in access layer calls.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo124">ib_open_ca</a>, <a href="#robo8">ib_alloc_pd</a>, <a href="#robo64">ib_create_av</a>, <a href="#robo65">ib_create_cq</a>,
       <a href="#robo69">ib_create_qp</a>, ib_reg_mr, <a href="#robo190">ib_reg_phys</a>, <a href="#robo192">ib_reg_shared</a>,
       <a href="#robo68">ib_create_mw</a>, <a href="./ib_types_h.html#robo26">ib_ci_op_t</a>
</pre>
</span>
<hr />

<h2><a name="robo27">[Functions]<a name="Access20Layer2fib5fclose5fal">
Access Layer/ib_close_al</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_close_al</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Deregisters a channel driver with the access layer and releases all
       associated resources, including queue pairs, connection requests,
       and completion queues.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_close_al</strong>(
        IN              const   ib_al_handle_t                          h_al );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an instance of the access layer.

 RETURN VALUES
       IB_SUCCESS
               The access layer was closed successfully.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call destroys an existing instance of the access layer.  Since
       callbacks may be outstanding against the resources managed by this
       access layer instance when the destroy operation is invoked, this
       call may block until all outstanding callbacks complete.  This
       routine may not be called from a callback invoked by the access layer.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>
</pre>
</span>
<hr />

<h2><a name="robo28">[Functions]<a name="Access20Layer2fib5fclose5fca">
Access Layer/ib_close_ca</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_close_ca</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Closes an opened channel adapter.  Once closed, no further access to this
       channel adapter is possible.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_close_ca</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to an opened channel adapter.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the channel
               adapter has been successfully destroyed.

 RETURN VALUES
       IB_SUCCESS
               The close request was registered.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call closes the opened channel adapter and frees all associated
       resources, such as queue pairs, protection domains, and completion
       queues.  Since callbacks may be outstanding against the channel adapter
       or one of its resources at the time the close operation is invoked, this
       call operates asynchronously.  The user will be notified through a callback
       once the close operation completes, indicating that no additional callbacks
       will be invoked for the specified channel adapter or a related resource.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo124">ib_open_ca</a>
</pre>
</span>
<hr />

<h2><a name="robo29">[Functions]<a name="Access20Layer2fib5fcm5fapr">
Access Layer/ib_cm_apr</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_apr</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Responds to a load alternate path request, to accept or reject the
       proposed alternate path.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_apr</strong>(
        IN              const   ib_cm_handle_t                          h_cm_lap,
        IN              const   <a href="#robo31">ib_cm_apr_t</a>* const                      p_cm_apr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_lap
               [in] A handle to a load alternate path request corresponding to the
               response.  This handle is provided through the <a href="#robo130">ib_pfn_cm_lap_cb_t</a>.

       p_cm_apr
               [in] Information describing the alternate path response.  The response
               will accept or reject the load request.  If the request is rejected
               this parameter will reference additional rejection information.

 RETURN VALUES
       IB_SUCCESS
               The load alternate path response was sent successfully.

       IB_INVALID_HANDLE
               The connection manager load alternate path handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the alternate path information was not provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The private data length specified in alternate path information is
               invalid.

       IB_INVALID_QP_HANDLE
               The queue pair handle specified in the alternate path information
               was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the alternate path response.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine responds to a load alternate path request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo31">ib_cm_apr_t</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo127">ib_pfn_cm_apr_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo30">[Structures]<a name="Access20Layer2fib5fcm5fapr5frec5ft">
Access Layer/ib_cm_apr_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_apr_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Load alternate path response information returned to the user through
       a callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_apr_rec
{
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         cm_status;
        <a href="./ib_types_h.html#robo13">ib_apr_status_t</a>                         apr_status;

        const uint8_t* __ptr64          p_info;
        uint8_t                                         info_length;

        const uint8_t* __ptr64          p_apr_pdata;

        ib_qp_handle_t                          h_qp;
        const void* __ptr64                     qp_context;

}       <strong>ib_cm_apr_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       cm_status
               The status of the alternate path response.  IB_SUCCESS indicates that
               the alternate path was loaded successfully.  IB_TIMEOUT indicates that
               a reply was not received within the specified timeout and retry count.
               Other error values indicates that the alternate path was not loaded.
               if the apr_status is IB_AP_SUCCESS, the QP failed to load the path.
               Other apr_status values indicate that the request was rejected for some
               reason.

       apr_status
               The alternate path response status.  This indicates additional failure
               information to a load alternate path request and is defined by the
               InfiniBand specification.

       info_length
               Length of valid data in the APR additional information buffer.

       p_info
               APR additional information.

       p_apr_pdata
               A reference to user-defined private data sent as part of the alternate
               path response.

       h_qp
               The queue pair handle associated with the alternate path response.

       qp_context
               The queue pair context associated with the alternate path response.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo127">ib_pfn_cm_apr_cb_t</a>, <a href="./ib_types_h.html#robo13">ib_apr_status_t</a>, <a href="#robo11">ib_apr_info_t</a>
       <a href="#robo12">ib_apr_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo31">[Structures]<a name="Access20Layer2fib5fcm5fapr5ft">
Access Layer/ib_cm_apr_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_apr_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Load alternate path information used to configure a queue pair with an
       alternate path.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo29">ib_cm_apr</a>
{
        const uint8_t* __ptr64                  p_apr_pdata;
        uint8_t                                                 apr_length;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                                    qp_type;

        /* valid for rc, uc & rd qp_type only */
        ib_qp_handle_t                                  h_qp;

        <a href="./ib_types_h.html#robo13">ib_apr_status_t</a>                                 apr_status;
        uint8_t                                                 info_length;
        const <a href="#robo11">ib_apr_info_t</a>* __ptr64    p_info;

}       <strong>ib_cm_apr_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_apr_pdata
               Optional user-defined private data sent as part of the alternate
               path response message.

       apr_length
               Defines the size of the user-defined private data.

       qp_type
               Indicates the CM service type.

       h_qp
               A handle to the queue pair that should receive the alternate path.

       apr_status
               The alternate path response status.  This indicates additional failure
               information to a load alternate path request and is defined by the
               Infiniband specification.

       info_length
               Length of valid data in the APR additional information buffer.

       p_info
               APR additional information.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo29">ib_cm_apr</a>, <a href="#robo127">ib_pfn_cm_apr_cb_t</a>, <a href="#robo103">ib_lap_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo32">[Functions]<a name="Access20Layer2fib5fcm5fcancel">
Access Layer/ib_cm_cancel</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_cancel</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to cancel listening for connection requests.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_cancel</strong>(
        IN              const   ib_listen_handle_t                      h_cm_listen,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_listen
               [in] A handle to an existing listen request.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the listen
               request has been successfully canceled.

 RETURN VALUES
       IB_SUCCESS
               The cancel listen operation was initiated.

       IB_INVALID_HANDLE
               The connection manager handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine cancels a listen request.  To avoid a race condition
       canceling a request at the same time a connection callback is in
       progress, the cancel operation operates asynchronously.  For
       additional details see <a href="#robo137">ib_pfn_destroy_cb_t</a>.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo45">ib_cm_listen</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo34">[Functions]<a name="Access20Layer2fib5fcm5fdrep">
Access Layer/ib_cm_drep</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_drep</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine replies to a disconnection request and disconnects
       a queue pair or end-to-end context.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_drep</strong>(
        IN              const   ib_cm_handle_t                          h_cm_dreq,
        IN              const   <a href="#robo36">ib_cm_drep_t</a>* const                     p_cm_drep );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_dreq
               [in] A handle to a disconnection request being replied to.  This
               handle is provided through the <a href="#robo129">ib_pfn_cm_dreq_cb_t</a> callback.

       p_cm_drep
               [in] Reply information used to respond to the disconnection request.

 RETURN VALUES
       IB_SUCCESS
               The disconnect request was sent successfully.

       IB_INVALID_HANDLE
               The connection manager disconnect request handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the disconnect repy information was not provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The private data length specified in disconnect reply information is
               invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the disconnect reply.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function will disconnect a queue pair or end-to-end context.  It
       results in sending a disconnection reply message to the remote end-point.
       After calling this routine, data transfers on the specified queue pair or
       end-to-end context will fail.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo37">ib_cm_dreq</a>, <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo36">ib_cm_drep_t</a>
</pre>
</span>
<hr />

<h2><a name="robo35">[Structures]<a name="Access20Layer2fib5fcm5fdrep5frec5ft">
Access Layer/ib_cm_drep_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_drep_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Disconnection reply information returned to the user through their
       disconnect reply callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_drep_rec
{
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         cm_status;

        const uint8_t* __ptr64          p_drep_pdata;

        ib_qp_handle_t                          h_qp;
        const void* __ptr64                     qp_context;

}       <strong>ib_cm_drep_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       cm_status
               The status of the disconnect request.  Valid values are IB_SUCCESS
               and IB_TIMEOUT.  IB_TIMEOUT indicates that a reply was not received
               within the specified timeout and retry count.

       p_drep_pdata
               A reference to user-defined private data sent as part of the
               disconnect reply.

       h_qp
               The queue pair handle associated with the disconnect reply.

       qp_context
               The queue pair context associated with the disconnect reply.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo34">ib_cm_drep</a>, <a href="#robo128">ib_pfn_cm_drep_cb_t</a>, <a href="#robo83">ib_drep_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo36">[Structures]<a name="Access20Layer2fib5fcm5fdrep5ft">
Access Layer/ib_cm_drep_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_drep_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Disconnection reply information used when tearing down a connection.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo34">ib_cm_drep</a>
{
        uint8_t* __ptr64                        p_drep_pdata;
        uint8_t                                         drep_length;

}       <strong>ib_cm_drep_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_drep_pdata
               A reference to user-defined private data sent as part of the
               disconnection reply.

       drep_length
               Defines the size of the user-defined private data.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo34">ib_cm_drep</a>, <a href="#robo83">ib_drep_pdata_t</a>
</pre>
</span>
<hr />

<h2><a name="robo37">[Functions]<a name="Access20Layer2fib5fcm5fdreq">
Access Layer/ib_cm_dreq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_dreq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine disconnects a queue pair or end-to-end context.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_dreq</strong>(
        IN              const   <a href="#robo39">ib_cm_dreq_t</a>* const                     p_cm_dreq );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_dreq
               [in] Information that describes the connection being disconnected.

 RETURN VALUES
       IB_SUCCESS
               The disconnect request was sent successfully.

       IB_INVALID_PARAMETER
               A reference to the disconnect request information was not provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The private data length specified in disconnect request information is
               invalid.

       IB_INVALID_QP_HANDLE
               The queue pair handle specified in the disconnect request information
               was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the disconnect request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function will disconnect a queue pair or end-to-end context.
       It results in sending a disconnection request message to the remote
       end-point.  After calling this routine, data transfers on the specified
       queue pair or end-to-end context will fail.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo34">ib_cm_drep</a>, <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo39">ib_cm_dreq_t</a>
</pre>
</span>
<hr />

<h2><a name="robo38">[Structures]<a name="Access20Layer2fib5fcm5fdreq5frec5ft">
Access Layer/ib_cm_dreq_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_dreq_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Disconnection request information returned to the user through their
       disconnection callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_dreq_rec
{
        ib_cm_handle_t                          h_cm_dreq;

        const uint8_t* __ptr64          p_dreq_pdata;

        const void* __ptr64                     qp_context;

}       <strong>ib_cm_dreq_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       h_cm_dreq
               A handle to the disconnection request.  This handle is used to reply
               to the disconnection request.

       p_dreq_pdata
               A reference to user-defined private data sent as part of the
               disconnect request.

       qp_context
               The queue pair context associated with the disconnect request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo37">ib_cm_dreq</a>, <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>, <a href="#robo84">ib_dreq_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo39">[Structures]<a name="Access20Layer2fib5fcm5fdreq5ft">
Access Layer/ib_cm_dreq_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_dreq_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Disconnection request information used to tear down a connection.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo37">ib_cm_dreq</a>
{
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        uint8_t* __ptr64                        p_dreq_pdata;
        uint8_t                                         dreq_length;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for rc, uc & rd qp_type only */
        ib_qp_handle_t                          h_qp;
        <a href="#robo128">ib_pfn_cm_drep_cb_t</a>                     pfn_cm_drep_cb;

}       <strong>ib_cm_dreq_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       p_dreq_pdata
               A reference to user-defined private data sent as part of the
               disconnection request.

       dreq_length
               Defines the size of the user-defined private data.

       qp_type
               Indicates the CM service type.

       h_qp
               A handle to the queue pair to disconnect.

       pfn_cm_drep_cb
               References a user-defined callback that will be invoked when
               the reply to the disconnect is received.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Users submit this structure to disconnect a queue pair or end-to-end
       context.  A single disconnect call disconnects either a queue pair or
       an end-to-end context, but not both.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo37">ib_cm_dreq</a>, <a href="#robo34">ib_cm_drep</a>, <a href="#robo84">ib_dreq_pdata_t</a>, <a href="#robo7">ib_al_flags_t</a>,
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo40">[Definitions]<a name="Access20Layer2fib5fcm5ffailover5ft">
Access Layer/ib_cm_failover_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_failover_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Fail over acceptance status returned as part of a connection reply.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef uint8_t                                                         <strong>ib_cm_failover_t</strong>;
#define IB_FAILOVER_ACCEPT_SUCCESS                      0
#define IB_FAILOVER_ACCEPT_UNSUPPORTED          1
#define IB_FAILOVER_ACCEPT_ERROR                        2
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       These values and their use are defined the Infiniband specification.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo53">ib_cm_rep</a>, <a href="#robo55">ib_cm_rep_t</a>
</pre>
</span>
<hr />

<h2><a name="robo41">[Functions]<a name="Access20Layer2fib5fcm5fhandoff">
Access Layer/ib_cm_handoff</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_handoff</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Hands off the received REQ information to svc_id.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_handoff</strong>(
        IN              const   ib_cm_handle_t                          h_cm_req,
        IN              const   <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      svc_id );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_req
               [in] A handle to the connection request being handed off.
               This is the h_cm_req handle provided through the <a href="#robo134">ib_pfn_cm_req_cb_t</a>
               callback.

       svc_id
               [in] The service id to which this connection request is handed off.

 RETURN VALUES
       IB_SUCCESS
               The handoff was initiated.

       IB_INVALID_HANDLE
               The connection manager handle was invalid.

       IB_INVALID_PARAMETER
               A valid service id was not provided.

       IB_INVALID_STATE
               The current connection state does not allow this transfer.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to complete the request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the access layer handing off the connection
       to the service id as a new incoming connection.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo52">ib_cm_rej_t</a>, <a href="#robo45">ib_cm_listen</a>
</pre>
</span>
<hr />

<h2><a name="robo42">[Functions]<a name="Access20Layer2fib5fcm5flap">
Access Layer/ib_cm_lap</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_lap</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Issues a load alternate path request to a specified end-point.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_lap</strong>(
        IN              const   <a href="#robo44">ib_cm_lap_t</a>* const                      p_cm_lap );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_lap
               [in] Information describing the alternate path to load and the remote
               endpoint for the connection.

 RETURN VALUES
       IB_SUCCESS
               The load alternate path request was sent successfully.

       IB_INVALID_PARAMETER
               A reference to the load alternate path information was not provided.

       IB_UNSUPPORTED
               The passive side of the connection attempted to load an alternate path.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The load alternate path information contains one or more of the
               following errors:
                 - The class version, queue pair type, or path is not supported by
                       connection manager.
                 - The primary path is not on the same channel adapter as the queue
                       pair.
                 - The primary and alternate paths are on different channel adapters.
                 - The primary and alternate paths specify different MTUs.
                 - The alternate path record packet lifetime is out of range.
                 - The alternate path record pkey is out of range.
                 - The specified private data length is invalid.

       IB_INVALID_QP_HANDLE
               The queue pair handle specified in the load alternate path information
               was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the load alternate path request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine issues initiates loading an alternate path on an existing
       connected queue pair or end-to-end context.  If the request is successful,
       the alternate path will be loaded and armed for path migration.

       The p_cm_lap parameter describes the alternate path to load and indicates
       the remote endpoint of an existing connection that will receive the load
       request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo29">ib_cm_apr</a>, <a href="#robo44">ib_cm_lap_t</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo127">ib_pfn_cm_apr_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo43">[Structures]<a name="Access20Layer2fib5fcm5flap5frec5ft">
Access Layer/ib_cm_lap_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_lap_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Load alternate path request information returned to the user through
       a callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_lap_rec
{
        ib_cm_handle_t                          h_cm_lap;
        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>                           alt_path;

        const uint8_t* __ptr64          p_lap_pdata;

        const void* __ptr64                     qp_context;

}       <strong>ib_cm_lap_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_lap_pdata
               A reference to user-defined private data sent as part of the load
               alternate path request.

       qp_context
               The queue pair context associated with a connection request.

       h_cm_lap
               A handle to the load alternate path request.  This handle is used
               to reply to the load request.

       alt_path
               Requested alternate path.  Users must accept or reject the path by
               calling <a href="#robo29">ib_cm_apr</a>.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo103">ib_lap_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo44">[Structures]<a name="Access20Layer2fib5fcm5flap5ft">
Access Layer/ib_cm_lap_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_lap_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Load alternate path information used to configure a queue pair with an
       alternate path.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo42">ib_cm_lap</a>
{
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        const uint8_t* __ptr64          p_lap_pdata;
        uint8_t                                         lap_length;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for rc, uc & rd qp_type only */
        ib_qp_handle_t                          h_qp;

        uint8_t                                         remote_resp_timeout;
        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>* __ptr64          p_alt_path;
        <a href="#robo127">ib_pfn_cm_apr_cb_t</a>                      pfn_cm_apr_cb;

}       <strong>ib_cm_lap_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       p_lap_pdata
               Optional user-defined private data sent as part of the load alternate
               path message.

       lap_length
               Defines the size of the user-defined private data.

       qp_type
               Indicates the CM service type.

       h_qp
               A handle to the queue pair that should receive the alternate path.

       remote_resp_timeout
               The time within which the remote CM should transmit a response to
               the sender.  This value is expressed as
               4.096 * (2 ^ local_resp_timeout) microseconds.

       p_alt_path
               The path record to use for the alternate connection.

       pfn_cm_apr_cb
               References a user-defined callback that will be invoked when the
               response to the load request is received.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo127">ib_pfn_cm_apr_cb_t</a>, <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>,
       ib_pfn_lap_pdata_t, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo45">[Functions]<a name="Access20Layer2fib5fcm5flisten">
Access Layer/ib_cm_listen</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_listen</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Issues a request to the local communication manager to listen for
       incoming connection requests.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_listen</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="#robo46">ib_cm_listen_t</a>* const           p_cm_listen,
        IN              const   <a href="#robo139">ib_pfn_listen_err_cb_t</a>          pfn_listen_err_cb,
        IN              const   void* const                                     listen_context,
                OUT                     ib_listen_handle_t* const       ph_cm_listen );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an opened instance of the access layer.

       p_cm_listen
               [in] Information used to direct the listen request to match incoming
               connection requests.

       pfn_listen_err_cb
               [in] User-specified error callback routine to invoke if an error
               occurs while listening.

       listen_context
               User-specified context information that is returned as a part of all
               connection requests through the pfn_cm_req_cb routine.  The context is
               also returned through the error and destroy callbacks.

       ph_cm_listen
               [out] Upon successful completion of this call, this references a handle
               to the listen request.  This handle may be used to cancel the listen
               operation.

 RETURN VALUES
       IB_SUCCESS
               The listen request was successfully registered with the connection
               manager.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the listen request information, error callback function,
               or listen handle was not provided.

       IB_INVALID_SETTING
               The class version specified in the listen request is not supported by
               connection manager or the listen request is not unique.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the listen request.

       IB_INVALID_GUID
               A channel adapter or port GUID is not wildcarded and no channel adapter
               or port in the system was found for the specified GUID.

       IB_INVALID_LID
               The lid is not wildcarded and is not within the lid range for the port
               specified in the listen request information.

       IB_INVALID_PKEY
               The pkey is not wildcarded and is not a valid pkey for the port
               specified in the listen request information.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine directs the access layer to route connection requests
       matching the specified connection parameters to the client.  Clients
       listen for connections matching a particular service ID, and may optionally
       direct their listen request towards a specific channel adapter, port, or
       LID.

       If local configuration changes occur that invalidate a listen request, the
       specified error callback will be invoked.  Invalidated listen requests
       should be canceled by the user.  An example of a configuration change that
       invalidates listen requests is a LID change for directed listens.  The
       listen error callback will be invoked within the context of a system
       thread.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo46">ib_cm_listen_t</a>, <a href="#robo139">ib_pfn_listen_err_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo46">[Structures]<a name="Access20Layer2fib5fcm5flisten5ft">
Access Layer/ib_cm_listen_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_listen_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Request to listen for incoming connection attempts.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo45">ib_cm_listen</a>
{
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      svc_id;

        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      ca_guid;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      lid;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      pkey;

        uint8_t* __ptr64                        p_compare_buffer;
        uint8_t                                         compare_offset;
        uint8_t                                         compare_length;

        <a href="#robo134">ib_pfn_cm_req_cb_t</a>                      pfn_cm_req_cb;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for ud qp_type only */
        const void* __ptr64                     sidr_context;

}       <strong>ib_cm_listen_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_id
               The identifier of the service to register for incoming connection
               requests.

       ca_guid
               Directs the communication manager to register the listen only
               with the specified channel adapter.  This should be set to IB_ALL_CAS
               if the listen is not directed to a particular channel adapter.

       port_guid
               Directs the communication manager to register the listen only
               with the specified port.  This should be set to IB_ALL_PORTS
               if the listen is not directed to a particular port.

       lid
               Directs the communication manager to register the listen only
               with the specified LID.  This should be set to IB_ALL_LIDS
               if the listen is not directed to a particular LID.

       pkey
               Directs the communication manager to register the listen only with
               the specified pkey value.  This should be set to IB_ALL_PKEYS
               iv the listen is not directed to a particular partition.

       p_compare_buffer
               An optionally provided buffer that will be used to match incoming
               connection requests with a registered service.  Use of this buffer
               permits multiple services to listen on the same service ID as long as
               they provide different compare buffers.  Incoming requests will
               be matched against the compare buffer.

       compare_offset
               An offset into the user-defined data area of a connection request
               which contains the start of the data that will be compared against.
               The offset must be the same for all requests using the same service ID.

       compare_length
               Specifies the size of the compare buffer in bytes.  The length must
               be the same for all requests using the same service ID.

       pfn_cm_req_cb
               References a user-provided callback that will be invoked whenever a
               connection request is received.

       qp_type
               Indicates the CM service type.

       pfn_cm_mra_cb
               References a user-provided callback that will be invoked when
               a message received acknowledgement is received.

       pfn_cm_rej_cb
               References a user-provided callback that will be invoked if the
               connection is rejected by the remote end-point.

       sidr_context
               sidr specific context for listens. This context is passed back in
               the <a href="#robo134">ib_pfn_cm_req_cb_t</a> callback.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Users fill out this structure when listening on a service ID with the
       local communication manager.  The communication manager will use the given
       service ID and compare buffer to route connection requests to the
       appropriate client.  Users may direct listens requests on a particular
       channel adapter, port, or LID.

       Message received acknowledgement (MRA) callbacks will not be invoked
       until a connection request has been replied to.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo107">ib_listen_info_t</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo131">ib_pfn_cm_mra_cb_t</a>,
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo47">[Functions]<a name="Access20Layer2fib5fcm5fmra">
Access Layer/ib_cm_mra</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_mra</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notifies the remote end-point of a connection or load alternate path
       request that the request message has been received, but additional
       processing is required.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_mra</strong>(
        IN              const   ib_cm_handle_t                          h_cm,
        IN              const   <a href="#robo49">ib_cm_mra_t</a>* const                      p_cm_mra );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm
               [in] A handle to the connection request, connection reply, or load
               alternate path request that should receive the message received
               acknowledgement message.  This is the h_cm_req, h_cm_rep, or
               h_cm_lap handle provided through the <a href="#robo134">ib_pfn_cm_req_cb_t</a>,
               <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, or <a href="#robo130">ib_pfn_cm_lap_cb_t</a> callback, respectively.

       p_cm_mra
               [in] Contains the message received acknowledgement data to return to
               the requesting end-point.

 RETURN VALUES
       IB_SUCCESS
               The message receive acknowledge was sent successfully.

       IB_INVALID_HANDLE
               The connection manager reply handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the message receive acknowledge information was not
               provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The class version is not supported by connection manager or the
               specified private data length is invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the message receive acknowledge.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the access layer acknowledging a connection or
       load alternate path message.  It should be invoked by a client if the
       client is unable to respond to a request within a specified timeout,
       in order to prevent the remote end-point from timing out.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo49">ib_cm_mra_t</a>
</pre>
</span>
<hr />

<h2><a name="robo48">[Structures]<a name="Access20Layer2fib5fcm5fmra5frec5ft">
Access Layer/ib_cm_mra_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_mra_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Message received acknowledgement information returned to the user through
       a callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_mra_rec
{
        const uint8_t* __ptr64          p_mra_pdata;

        ib_qp_handle_t                          h_qp;
        const void* __ptr64                     qp_context;

}       <strong>ib_cm_mra_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_mra_pdata
               A reference to user-defined private data sent as part of the MRA.

       h_qp
               The queue pair handle associated with a connection request.

       qp_context
               The queue pair context associated with a connection request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo47">ib_cm_mra</a>, <a href="#robo131">ib_pfn_cm_mra_cb_t</a>, <a href="#robo122">ib_mra_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo49">[Structures]<a name="Access20Layer2fib5fcm5fmra5ft">
Access Layer/ib_cm_mra_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_mra_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection message received acknowledgement information used to
       indicate that a connection request, reply, or load alternate path
       has been received.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo47">ib_cm_mra</a>
{
        uint8_t                                         svc_timeout;

        const uint8_t* __ptr64          p_mra_pdata;
        uint8_t                                         mra_length;

}       <strong>ib_cm_mra_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_timeout
               Indicates the amount of time that the local service requires to
               complete processing of the previously received message.

       p_mra_pdata
               Optional user-defined private data sent as part of the message
               received acknowledgement.

       mra_length
               Defines the size of the user-defined private data.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo47">ib_cm_mra</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>,
       <a href="#robo122">ib_mra_pdata_t</a>
</pre>
</span>
<hr />

<h2><a name="robo50">[Functions]<a name="Access20Layer2fib5fcm5frej">
Access Layer/ib_cm_rej</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rej</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Rejects a connection request from a remote end-point.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_rej</strong>(
        IN              const   ib_cm_handle_t                          h_cm,
        IN              const   <a href="#robo52">ib_cm_rej_t</a>* const                      p_cm_rej );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm
               [in] A handle to the connection request or reply being rejected.
               This is the h_cm_req or h_cm_rep handle provided through the
               <a href="#robo134">ib_pfn_cm_req_cb_t</a> or <a href="#robo133">ib_pfn_cm_rep_cb_t</a> callback, respectively.

       p_cm_rej
               [in] Contains the connection rejection information to return to the
               connecting end-point.

 RETURN VALUES
       IB_SUCCESS
               The connection reject was initiated.

       IB_INVALID_HANDLE
               The connection manager handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the reject information was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the access layer rejecting a connection
       and notifying the remote end-point.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, <a href="#robo52">ib_cm_rej_t</a>
</pre>
</span>
<hr />

<h2><a name="robo51">[Structures]<a name="Access20Layer2fib5fcm5frej5frec5ft">
Access Layer/ib_cm_rej_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rej_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection rejection information returned to the user through their
       rejection callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rej_rec
{
        <a href="./ib_types_h.html#robo198">ib_rej_status_t</a>                         rej_status;
        const uint8_t* __ptr64          p_ari;
        uint8_t                                         ari_length;

        const uint8_t* __ptr64          p_rej_pdata;

        ib_qp_handle_t                          h_qp;
        const void* __ptr64                     qp_context;

}       <strong>ib_cm_rej_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       rej_status
               The reason for the connection rejection.

       p_ari
               Additional rejection information.  The data referenced by this field
               is dependent on the rej_status and is defined by the Infiniband
               specification.

       ari_length
               Length of valid data provided in the p_ari buffer.

       p_rej_pdata
               A reference to user-defined private data sent as part of the connection
               request reply.

       h_qp
               The queue pair handle associated with a connection request.

       qp_context
               The queue pair context associated with a connection request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo50">ib_cm_rej</a>, <a href="#robo132">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo198">ib_rej_status_t</a>, <a href="#robo14">ib_ari_t</a>, <a href="#robo197">ib_rej_pdata_t</a>,
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo52">[Structures]<a name="Access20Layer2fib5fcm5frej5ft">
Access Layer/ib_cm_rej_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rej_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to reject a connection request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo50">ib_cm_rej</a>
{
        <a href="./ib_types_h.html#robo198">ib_rej_status_t</a>                         rej_status;

        <a href="#robo14">ib_ari_t</a>* __ptr64                       p_ari;
        uint8_t                                         ari_length;
        const uint8_t* __ptr64          p_rej_pdata;
        uint8_t                                         rej_length;

}       <strong>ib_cm_rej_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       rej_status
               The reason for the connection rejection.

       p_ari
               Additional rejection information.  The data referenced by this field
               is dependent on the rej_status and is defined by the Infiniband
               specification.

       ari_length
               Length of valid data provided in the p_ari buffer.

       p_rej_pdata
               A reference to user-defined private data sent as part of the
               reject message.

       rej_length
               Defines the size of the user-defined private data.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo50">ib_cm_rej</a>, <a href="#robo132">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo198">ib_rej_status_t</a>, <a href="#robo14">ib_ari_t</a>, <a href="#robo197">ib_rej_pdata_t</a>
</pre>
</span>
<hr />

<h2><a name="robo53">[Functions]<a name="Access20Layer2fib5fcm5frep">
Access Layer/ib_cm_rep</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rep</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Sends a reply to a connection request, indicating that the connection
       has been accepted.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_rep</strong>(
        IN              const   ib_cm_handle_t                          h_cm_req,
        IN              const   <a href="#robo55">ib_cm_rep_t</a>* const                      p_cm_rep );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_req
               [in] A handle to the connection request being replied to.  This handle
               is provided by the access layer through the <a href="#robo134">ib_pfn_cm_req_cb_t</a>
               callback.

       p_cm_rep
               [in] Contains reply information to return to the initiator of the
               connection request.

 RETURN VALUES
       IB_SUCCESS
               The connection reply was initiated.

       IB_INVALID_HANDLE
               The connection manager request handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the reply information was not provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The connect reply information contains one or more of the following
               errors:
                 - The class version, queue pair type, or path is not supported by
                       connection manager.
                 - The private data length exceeds the value allowed by the connection
                       class version.
                 - The primary path is not on the same channel adapter as the queue
                       pair.
                 - The primary and alternate paths are on different channel adapters.
                 - The primary and alternate paths specify different MTUs.
                 - A primary or alternate path record packet lifetime is out of range.
                 - A primary or alternate path record pkey is out of range.
                 - The specified private data length is invalid.

       IB_INVALID_QP_HANDLE
               The queue pair handle specified in the reply was invalid.

       IB_INVALID_QP_STATE
               The queue pair was in an invalid state to perform the operation.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the connect reply.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the access layer replying to a connection
       request from a remote node.  This call results in sending a response
       to the requesting node that the request has been accepted.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo55">ib_cm_rep_t</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo54">[Structures]<a name="Access20Layer2fib5fcm5frep5frec5ft">
Access Layer/ib_cm_rep_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rep_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection request reply information returned to the user through their
       connection reply callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rep_rec
{
        const uint8_t* __ptr64          p_rep_pdata;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        ib_cm_handle_t                          h_cm_rep;
        /* valid for rc, uc & rd qp_type only */
        const void* __ptr64                     qp_context;
        uint8_t                                         resp_res;
        boolean_t                                       flow_ctrl;
        <a href="./ib_types_h.html#robo13">ib_apr_status_t</a>                         apr_status;

        /* valid for ud qp_type only */
        const void* __ptr64                     sidr_context;
        ib_sidr_status_t                        status;
        <a href="./ib_types_h.html#robo408">ib_net32_t</a>                                      remote_qp;
        <a href="./ib_types_h.html#robo408">ib_net32_t</a>                                      remote_qkey;
        <a href="./ib_types_h.html#robo353">ib_class_port_info_t</a>            class_info;

}       <strong>ib_cm_rep_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_rep_pdata
               A reference to user-defined private data sent as part of the connection
               request reply.

       qp_type
               Indicates the CM service type.

       h_cm_rep
               The handle to the communication manager reply.  This handle is used
               to issue a ready to use message or to reject the connection.

       h_qp
               The handle to the queue pair associated with a connection request.

       qp_context
               The queue pair context associated with a connection request.

       resp_res
               The maximum number of RDMA read/atomic operations from the recipient
               that the requestor supports on the connection.  This may be less than
               the init_depth specified in the call to <a href="#robo56">ib_cm_req</a>.  The local queue
               pair will be configured with this value unless the connection is
               rejected.

       flow_ctrl
               Indicates if the remote CA implements hardware end-to-end flow control.

       apr_status
               Indicates whether the alternate path information was accepted.

       h_al
               The AL handle on which the SIDR request was issued.

       sidr_context
               The sidr_context used in <a href="#robo56">ib_cm_req</a>.

       status
               Status of the request made previously using <a href="#robo56">ib_cm_req</a>.

       remote_qp
               Identifies the destination queue pair number.

       remote_qkey
               Identifies the destination qkey.

       class_info
               Identifies the class_port_info returned if status was not successful.
               This field has no value if status is successful.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, ib_cm_status_t, <a href="#robo201">ib_rep_pdata_t</a>
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>, ib_sidr_status_t
</pre>
</span>
<hr />

<h2><a name="robo55">[Structures]<a name="Access20Layer2fib5fcm5frep5ft">
Access Layer/ib_cm_rep_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rep_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection reply information used when establishing a connection.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo53">ib_cm_rep</a>
{
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        const uint8_t* __ptr64          p_rep_pdata;
        uint8_t                                         rep_length;

        ib_qp_handle_t                          h_qp;
        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for rc, uc & rd qp_type only */
        <a href="./ib_types_h.html#robo5">ib_access_t</a>                                     access_ctrl;
        uint32_t                                        sq_depth;
        uint32_t                                        rq_depth;

        uint8_t                                         init_depth;
        uint8_t                                         target_ack_delay;
        <a href="#robo40">ib_cm_failover_t</a>                        failover_accepted;
        boolean_t                                       flow_ctrl;
        uint8_t                                         rnr_nak_timeout;
        uint8_t                                         rnr_retry_cnt;

        <a href="#robo132">ib_pfn_cm_rej_cb_t</a>                      pfn_cm_rej_cb;
        <a href="#robo131">ib_pfn_cm_mra_cb_t</a>                      pfn_cm_mra_cb;
        <a href="#robo135">ib_pfn_cm_rtu_cb_t</a>                      pfn_cm_rtu_cb;
        <a href="#robo130">ib_pfn_cm_lap_cb_t</a>                      pfn_cm_lap_cb;
        <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>                     pfn_cm_dreq_cb;

        <a href="./ib_types_h.html#robo185">ib_recv_wr_t</a>* __ptr64                   p_recv_wr;
        <a href="./ib_types_h.html#robo185">ib_recv_wr_t</a>* __ptr64 *__ptr64  pp_recv_failure;

        /*valid for ud qp_type only */
        ib_sidr_status_t                        status;
        <a href="./ib_types_h.html#robo353">ib_class_port_info_t</a>            class_info;

}       <strong>ib_cm_rep_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       p_rep_pdata
               Optional user-defined private data sent as part of the connection
               reply.

       rep_length
               Defines the size of the user-defined private data.

       qp_type
               Indicates the CM service type.

       h_qp
               A handle to the queue pair to use in the connection. For SIDR, h_qp
               is valid only if sidr status is IB_SIDR_SUCCESS.

       access_ctrl
               Indicates the type of access permitted on the local QP.

       sq_depth
               The maximum number of outstanding send operations that the local
               QP needs to support.

       rq_depth
               The maximum number of outstanding receive operations that the local
               QP needs to support.

       init_depth
               The maximum number of outstanding RDMA read/atomic operations the
               sender of the reply will have outstanding to the remote QP.

       target_ack_delay
               The time that the remote QP should wait to receive an ACK from the
               local QP.

       failover_accepted
               Status indicating if the fail over path was accepted by the sender
               of the reply.

       flow_ctrl
               Indicates whether the local CA supports end-to-end flow control.

       rnr_nak_timeout
               The time to wait before retrying a packet after receiving a RNR NAK.

       rnr_retry_cnt
               The number of times that the local QP should retry a send operation
               after receiving an RNR NACK before reporting an error.

       pfn_cm_rtu_cb
               References a user-defined callback that will be invoked when
               a connection is ready to use for send operations.

       pfn_cm_lap_cb
               References a user-defined callback that will be invoked when
               a load alternate path request is received for the connecting
               queue pair or end-to-end context.

       pfn_cm_dreq_cb
               References a user-defined callback that will be invoked when
               a disconnect request is received is for the connecting
               queue pair or end-to-end context.

       p_recv_wr
               A reference to the head of the work request list to be initially
               posted to the receive queue.  Providing this list closes a potential
               race condition between sending a CM REP message and posting receives.
               Use of this field is optional.

       pp_recv_failure
               If the post receive operation failed, this references the work
               request in the p_recv_wr list where the first failure occurred.
               This field is required only if p_recv_wr is used.

       status
               sidr status value returned back to a previously received REQ.

       class_info
               The contents of this field are valid only if status is IB_SIDR_REDIRECT.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo53">ib_cm_rep</a>, <a href="./ib_types_h.html#robo5">ib_access_t</a>, <a href="#robo40">ib_cm_failover_t</a>, <a href="#robo201">ib_rep_pdata_t</a>
       <a href="#robo135">ib_pfn_cm_rtu_cb_t</a>, <a href="#robo130">ib_pfn_cm_lap_cb_t</a>, <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>,
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo56">[Functions]<a name="Access20Layer2fib5fcm5freq">
Access Layer/ib_cm_req</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_req</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Issues a connection request to a specified end-point.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_req</strong>(
        IN              const   <a href="#robo58">ib_cm_req_t</a>* const                      p_cm_req );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_req
               [in] Information describing the type of connection and the remote
               endpoint for the connection.

 RETURN VALUES
       IB_SUCCESS
               The connection request was initiated.

       IB_INVALID_PARAMETER
               A reference to the connect request information was not provided.

       IB_INVALID_SETTING
               The connect request information contains one or more of the following
               errors:
                 - The class version, queue pair type, or path is not supported by
                       connection manager.
                 - The private data length exceeds the value allowed by the specified
                       connection class version.
                 - The primary path is not on the same channel adapter as the queue
                       pair.
                 - The primary and alternate paths are on different channel adapters.
                 - The primary and alternate paths specify different MTUs.
                 - A primary or alternate path record packet lifetime is out of range.
                 - A primary or alternate path record pkey is out of range.

       IB_INVALID_QP_HANDLE
               The queue pair handle specified in the connect request was invalid.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_STATE
               The queue pair or end-to-end context is already connected.

       IB_INVALID_QP_STATE
               The queue pair was in an invalid state to perform the operation.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to initiate the connect request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine issues a connection request through the communication
       manager to a specified end-point.  The p_cm_req parameter contains
       details needed to form the connection.  The connection request will
       match with a remote <a href="#robo45">ib_cm_listen</a> or <strong>ib_cm_req</strong> connection request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo58">ib_cm_req_t</a>, <a href="#robo45">ib_cm_listen</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo57">[Structures]<a name="Access20Layer2fib5fcm5freq5frec5ft">
Access Layer/ib_cm_req_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_req_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection request information returned to the user through their
       connection request callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#pragma warning(disable:4324)
typedef struct _ib_cm_req_rec
{
        const void* __ptr64                     context;
        ib_cm_handle_t                          h_cm_req;
        ib_listen_handle_t                      h_cm_listen;

        const uint8_t* __ptr64          p_req_pdata;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for rc, uc & rd qp_type only */
        uint8_t                                         resp_res;
        boolean_t                                       flow_ctrl;
        uint8_t                                         rnr_retry_cnt;
        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>                           primary_path;
        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>                           alt_path;

        /* valid for ud qp_type only */
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      pkey;
        const void* __ptr64                     sidr_context;

}       <strong>ib_cm_req_rec_t</strong>;
#pragma warning(default:4324)
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       context
               For peer-to-peer connections, this is the queue pair context associated
               with a connection request.  For listens, this is the listen context
               specified through the <a href="#robo45">ib_cm_listen</a> routine.

       h_cm_req
               The handle to the communication manager request.  This handle is used
               to reply to the or reject the connection.

       h_cm_listen
               For connection request callbacks initiated in response to an
               <a href="#robo45">ib_cm_listen</a> call, this is a handle to the listen request.  This
               handle is provided to the user to avoid a race condition between
               the return of the <a href="#robo45">ib_cm_listen</a> routine and the notification of a
               connection request.

       p_req_pdata
               A reference to user-defined private data sent as part of the connection
               request.

       qp_type
               Indicates the CM service type.

       resp_res
               The maximum number of RDMA read/atomic operations from the recipient
               that the requestor supports on the connection.  The init_depth
               specified in the call to <a href="#robo53">ib_cm_rep</a> must be less than or equal to
               this value.

       flow_ctrl
               Indicates if the remote CA implements hardware end-to-end flow control.

       rnr_retry_cnt
               Requested number of RNR NAK retries to perform before generating a
               local error.

       primary_path
               The path record to use for the primary connection.

       alt_path
               The path record to use for the alternate connection.

       pkey
               The pkey used in the user's request.

       sidr_context
               The sidr_context used in <a href="#robo45">ib_cm_listen</a>.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo45">ib_cm_listen</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>,
       <a href="./ib_types_h.html#robo5">ib_access_t</a>, <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>, <a href="#robo203">ib_req_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo58">[Structures]<a name="Access20Layer2fib5fcm5freq5ft">
Access Layer/ib_cm_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection request information used to establish a new connection.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo56">ib_cm_req</a>
{
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      svc_id;

        <a href="#robo7">ib_al_flags_t</a>                           flags;
        uint8_t                                         max_cm_retries;

        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>* __ptr64          p_primary_path;

        <a href="#robo133">ib_pfn_cm_rep_cb_t</a>                      pfn_cm_rep_cb;

        const uint8_t* __ptr64          p_req_pdata;
        uint8_t                                         req_length;

        <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>                            qp_type;

        /* valid for rc, uc & rd qp_type only */
        ib_qp_handle_t                          h_qp;

        uint8_t* __ptr64                        p_compare_buffer;
        uint8_t                                         compare_offset;
        uint8_t                                         compare_length;

        uint8_t                                         resp_res;
        uint8_t                                         init_depth;
        uint8_t                                         remote_resp_timeout;
        boolean_t                                       flow_ctrl;
        uint8_t                                         local_resp_timeout;
        uint8_t                                         rnr_nak_timeout;
        uint8_t                                         rnr_retry_cnt;
        uint8_t                                         retry_cnt;

        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>* __ptr64          p_alt_path OPTIONAL;

        <a href="#robo134">ib_pfn_cm_req_cb_t</a>                      pfn_cm_req_cb;
        <a href="#robo131">ib_pfn_cm_mra_cb_t</a>                      pfn_cm_mra_cb;
        <a href="#robo132">ib_pfn_cm_rej_cb_t</a>                      pfn_cm_rej_cb;

        /* valid for ud qp_type only */
        ib_al_handle_t                          h_al;
        const void* __ptr64                     sidr_context;
        uint32_t                                        timeout_ms;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      pkey;

}       <strong>ib_cm_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_id
               The ID of the remote service to which the connection request is
               being made.

       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       max_cm_retries
               The maximum number of times that either CM should resend a connection
               establishment message.

       p_primary_path
               Path information over which to establish the primary connection.

       pfn_cm_rep_cb
               References a user-provided callback that will be invoked when
               a reply to the connection request is received.

       p_req_pdata
               Optional user-defined private data sent as part of the connection
               request.

       req_length
               Defines the size of the user-defined private data.

       qp_type
               Indicates the CM service type.

       h_qp
               A handle to the queue pair to use in the connection.

       p_compare_buffer
               An optionally provided buffer that will be used to match incoming
               connection requests with a registered service.  Use of this buffer
               permits multiple services to connect using the same service ID as
               long as they provide different compare buffers.  Incoming requests
               will be matched against the compare buffer.  Valid for peer-to-peer
               connection requests only.

       compare_offset
               An offset into the user-defined data area of a connection request
               which contains the start of the data that will be compared against.
               The offset must be the same for all requests using the same service ID.
               Valid for peer-to-peer connection requests only.

       compare_length
               Specifies the size of the compare buffer in bytes.  The length must
               be the same for all requests using the same service ID.  Valid for
               peer-to-peer connection requests only.

       resp_res
               The maximum number of outstanding RDMA read/atomic operations the
               requestor supports from the remote QP.

       init_depth
               The maximum number of outstanding RDMA read/atomic operations the
               requestor will have outstanding to the remote QP.

       remote_resp_timeout
               The time within which the remote CM should transmit a response to
               the sender.  This value is expressed as
               4.096 * (2 ^ local_resp_timeout) microseconds.

       flow_ctrl
               Indicates whether the local CA supports end-to-end flow control.

       local_resp_timeout
               The time that the remote CM should wait to receive a response from
               the local CM.  This value is expressed as
               4.096 * (2 ^ local_resp_timeout) microseconds.

       rnr_nak_timeout
               The time to wait before retrying a packet after receiving a RNR NAK.
               This value is defined in section 9.7.5.2.8 of the IB Spec, table 45.

       rnr_retry_cnt
               The number of times that the local QP should retry a send operation
               after receiving an RNR NACK before reporting an error.

       retry_cnt
               The number of times that a QP should retry a send operation before
               reporting an error.

       p_alt_path
               Optional path information that will be used as the alternate
               connection path in the case of failure.

       pfn_cm_req_cb
               References a user-provided callback that will be invoked when
               a request for a connection is received.  This is required for peer-to
               peer connection requests, and must be NULL for client/server
               connection requests.

       pfn_cm_mra_cb
               References a user-provided callback that will be invoked when
               a message received acknowledgement is received.

       pfn_cm_rej_cb
               References a user-provided callback that will be invoked if the
               connection is rejected by the remote end-point.

       sidr_context
               The user-defined sidr context information that will be passed back in a
               <a href="#robo56">ib_cm_req</a> callback.

       timeout_ms
               Timeout value in milli-seconds for the REQ to expire.  The CM will add
               twice packet lifetime to this value to determine the actual timeout
               value used.

       pkey
               pkey to be used as part of the request. This field is only valid for
               IB_MCLASS_CM_VER_2 clients.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo134">ib_pfn_cm_req_cb_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, <a href="#robo131">ib_pfn_cm_mra_cb_t</a>,
       <a href="#robo132">ib_pfn_cm_rej_cb_t</a>, <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>, <a href="#robo203">ib_req_pdata_t</a>, <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo59">[Functions]<a name="Access20Layer2fib5fcm5frtu">
Access Layer/ib_cm_rtu</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rtu</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Sends a ready to use message for a connection request, indicating that
       the connection has been accepted and is ready for use.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_cm_rtu</strong>(
        IN              const   ib_cm_handle_t                          h_cm_rep,
        IN              const   <a href="#robo61">ib_cm_rtu_t</a>* const                      p_cm_rtu );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cm_rep
               [in] A handle to the connection reply being responded to.  This handle
               is provided by the access layer through the <a href="#robo133">ib_pfn_cm_rep_cb_t</a>
               callback.

       p_cm_rtu
               [in] Contains ready to use information to return to the sender of the
               connection reply.

 RETURN VALUES
       IB_SUCCESS
               The connection ready to use was initiated.

       IB_INVALID_HANDLE
               The connection manager reply handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the ready to use information was not provided.

       IB_INVALID_STATE
               The current connection state does not allow sending this message.

       IB_INVALID_SETTING
               The specified queue pair attributes were invalid or the private data
               length exceeds the value allowed by the specified connection class
               version.

       IB_UNSUPPORTED
               The specified queue pair access control was not supported.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to send the ready to use response.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the access layer marking a connection as ready
       to use and notifying the remote end-point.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo55">ib_cm_rep_t</a>, <a href="#robo133">ib_pfn_cm_rep_cb_t</a>, <a href="#robo61">ib_cm_rtu_t</a>
</pre>
</span>
<hr />

<h2><a name="robo60">[Structures]<a name="Access20Layer2fib5fcm5frtu5frec5ft">
Access Layer/ib_cm_rtu_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rtu_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection ready to use message information returned to the user through
       their ready to use callback.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cm_rtu_rec
{
        const uint8_t* __ptr64          p_rtu_pdata;

        ib_qp_handle_t                          h_qp;
        const void* __ptr64                     qp_context;

}       <strong>ib_cm_rtu_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_rtu_pdata
               A reference to user-defined private data sent as part of the ready
               to use message.

       h_qp
               The queue pair handle associated with the connection request.

       qp_context
               The queue pair context associated with the connection request.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo59">ib_cm_rtu</a>, <a href="#robo135">ib_pfn_cm_rtu_cb_t</a>, ib_cm_status_t, <a href="#robo206">ib_rtu_pdata_t</a>,
       <a href="./ib_types_h.html#robo170">ib_qp_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo61">[Structures]<a name="Access20Layer2fib5fcm5frtu5ft">
Access Layer/ib_cm_rtu_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cm_rtu_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Connection ready to use information used when establishing a connection.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _<a href="#robo59">ib_cm_rtu</a>
{
        <a href="./ib_types_h.html#robo5">ib_access_t</a>                                     access_ctrl;
        uint32_t                                        sq_depth;
        uint32_t                                        rq_depth;

        const uint8_t* __ptr64          p_rtu_pdata;
        uint8_t                                         rtu_length;

        <a href="#robo127">ib_pfn_cm_apr_cb_t</a>                      pfn_cm_apr_cb;
        <a href="#robo129">ib_pfn_cm_dreq_cb_t</a>                     pfn_cm_dreq_cb;

}       <strong>ib_cm_rtu_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       access_ctrl
               Indicates the type of access permitted on the local QP.

       sq_depth
               The maximum number of outstanding send operations that the local
               QP needs to support.  This field should be set to zero if the CA
               does not support changing the work request depth after the QP is
               created.

       rq_depth
               The maximum number of outstanding receive operations that the local
               QP needs to support.  This field should be set to zero if the CA
               does not support changing the work request depth after the QP is
               created.

       p_rtu_pdata
               Optional user-defined private data sent as part of the connection
               ready to use message.

       rtu_length
               Defines the size of the user-defined private data.

       pfn_cm_apr_cb
               References a user-defined callback that will be invoked when an
               alternate path response is received for the connecting queue pair
               or end-to-end context.

       pfn_cm_dreq_cb
               References a user-defined callback that will be invoked when a
               disconnect request is received is for the connecting queue pair
               or end-to-end context.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo59">ib_cm_rtu</a>, <a href="./ib_types_h.html#robo5">ib_access_t</a>, <a href="#robo206">ib_rtu_pdata_t</a>
</pre>
</span>
<hr />

<h2><a name="robo63">[Structures]<a name="Access20Layer2fib5fcq5fcreate5ft">
Access Layer/ib_cq_create_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_cq_create_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Attributes used to initialize a completion queue at creation time.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_cq_create
{
        uint32_t                                                                size;
        <a href="#robo136">ib_pfn_comp_cb_t</a>                                                pfn_comp_cb;
        cl_waitobj_handle_t                                             h_wait_obj;

}       <strong>ib_cq_create_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       size
               Specifies the maximum number of work completions that may be on the
               completion queue.  If the creation call is successful, the actual
               size of the completion queue will be returned.  The actual size of
               the CQ will be greater than or equal to the requested size.

       pfn_comp_cb
               A callback that is invoked whenever a signaled completion occurs on
               the completion queue.  This field is mutually exclusive with the
               p_event field.

       h_wait_obj
               A wait object that is triggered whenever a signaled completion occurs
               on the completion queue.  This field is mutually exclusive with the
               pfn_comp_cb field and is only valid for user-mode clients.  The wait
               object must be ready for use when the call to <a href="#robo65">ib_create_cq</a> is invoked.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Clients must specify either an event or a callback when creating a
       completion queue.  When a signaled completion occurs on the completion
       queue, the client will be notified through the callback or by
       signaling the specified event.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo136">ib_pfn_comp_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo64">[Functions]<a name="Access20Layer2fib5fcreate5fav">
Access Layer/ib_create_av</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_av</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates an address vector.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_av</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo17">ib_av_attr_t</a>* const                     p_av_attr,
                OUT                     ib_av_handle_t* const           ph_av );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an allocated protection domain that the address
               vector will be associated with.

       p_av_attr
               [in] Attributes for the newly created address vector.

       ph_av
               [out] Upon successful completion of this call, this references a
               handle to the newly created address vector.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the address vector attributes or handle was not
               provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the address vector.

       IB_INVALID_PORT
               The port number supplied, through the address vector attributes,
               was invalid for the given channel adapter.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the address vector.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine creates an address vector.  Clients specify the attributes
       of the address vector through the p_av_attr parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo172">ib_query_av</a>, <a href="#robo115">ib_modify_av</a>, <a href="#robo75">ib_destroy_av</a>
</pre>
</span>
<hr />

<h2><a name="robo65">[Functions]<a name="Access20Layer2fib5fcreate5fcq">
Access Layer/ib_create_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates a completion queue and returns its handle to the user.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_cq</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN      OUT                     <a href="#robo63">ib_cq_create_t</a>* const           p_cq_create,
        IN              const   void* const                                     cq_context,
        IN              const   <a href="#robo138">ib_pfn_event_cb_t</a>                       pfn_cq_event_cb OPTIONAL,
                OUT                     ib_cq_handle_t* const           ph_cq );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to an open channel adapter.

       p_cq_create
               [in] Attributes necessary to allocate and initialize the
               completion queue.

       cq_context
               [in] A user-specified context associated with the completion queue.

       pfn_cq_event_cb
               [in] User-specified error callback routine invoked after an
               asynchronous event has occurred on the completion queue.

       ph_cq
               [out] Upon successful completion of this call, this references a
               handle to the newly created completion queue.

 RETURN VALUES
       IB_SUCCESS
               The completion queue was successfully created.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the completion queue attributes or handle was not
               provided.

       IB_INVALID_SETTING
               The specified attributes that should be used to create the completion
               queue are invalid.  Both completion callback and wait object
               information were supplied or are missing.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the completion queue.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the completion queue.

       IB_INVALID_CQ_SIZE
               The requested size of the completion queue was larger than the
               maximum supported by the associated channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine allocates a completion queue on the specified channel
       adapter.  If the completion queue cannot be allocated, an error is
       returned.  When creating the completion queue, users associate a context
       with the completion queue.  This context is returned to the user through
       the completion and asynchronous event callbacks.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo175">ib_query_cq</a>, <a href="#robo117">ib_modify_cq</a>, <a href="#robo76">ib_destroy_cq</a>, <a href="#robo63">ib_cq_create_t</a>, <a href="#robo138">ib_pfn_event_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo66">[Functions]<a name="Access20Layer2fib5fcreate5fioc">
Access Layer/ib_create_ioc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_ioc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates an instance of an I/O controller.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_ioc</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN              const   <a href="./ib_types_h.html#robo388">ib_ioc_profile_t</a>* const         p_ioc_profile,
                OUT                     ib_ioc_handle_t* const          ph_ioc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to an opened channel adapter.  The controller will be
               created to be exposed through the given adapter.

       p_ioc_profile
               [in] I/O controller profile information.

       ph_ioc
               [out] Upon successful completion of this call, this references a
               handle to the created I/O controller.  This handle may be used to
               add service entries to the controller and register it.

 RETURN VALUES
       IB_SUCCESS
               The I/O controller was successfully created.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the I/O controller profile information or handle
               was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the I/O controller.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine creates an I/O controller.  Once created, services may be
       added to the controller before being registered with the local device
       manager.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo77">ib_destroy_ioc</a>, <a href="#robo6">ib_add_svc_entry</a>, <a href="#robo186">ib_reg_ioc</a>, <a href="./ib_types_h.html#robo388">ib_ioc_profile_t</a>
</pre>
</span>
<hr />

<h2><a name="robo67">[Functions]<a name="Access20Layer2fib5fcreate5fmad5fpool">
Access Layer/ib_create_mad_pool</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_mad_pool</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates a pool of MAD elements for use sending and receive management
       datagrams.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_mad_pool</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   size_t                                          min,
        IN              const   size_t                                          max,
        IN              const   size_t                                          grow_size,
                OUT                     ib_pool_handle_t* const         ph_pool );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       min
               [in] The minimum number of MAD elements to create in the pool.

       max
               [in] The maximum number of MAD elements that will be created by the
               pool.  If max is set to 0, the pool will continue to grow as long
               as system resources are available.

       grow_size
               [in] The number of MAD elements to add to the pool when growing it.
               If set to 0, the pool will not grow beyond the number specified
               at creation.  This value must be greater than 0, if min is set to 0.

       ph_pool
               [out] On successful completion of this call, this returns a handle to
               the newly created pool.

 RETURN VALUES
       IB_SUCCESS
               The MAD pool was created successfully.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the pool handle was not provided.

       IB_INVALID_SETTING
               The maximum number of MAD elements was non-zero and less than the
               minimum number of MAD elements.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the MAD pool.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine creates a pool of MAD elements.  The elements may be used
       to send and receive MADs on alias and MAD type QPs.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo78">ib_destroy_mad_pool</a>, <a href="#robo89">ib_get_mad</a>, <a href="#robo164">ib_put_mad</a>, <a href="#robo187">ib_reg_mad_pool</a>,
       <a href="#robo71">ib_dereg_mad_pool</a>
</pre>
</span>
<hr />

<h2><a name="robo68">[Functions]<a name="Access20Layer2fib5fcreate5fmw">
Access Layer/ib_create_mw</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_mw</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates a memory window associated with the specified protection domain.
       Newly created windows are not bound to any specific memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_mw</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
                OUT                     net32_t* const                          p_rkey,
                OUT                     ib_mw_handle_t* const           ph_mw );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an existing protection domain that the memory window
               should be created within.

       p_rkey
               [out] The current rkey associated with the memory window.  This key is
               used to bind the window to a registered memory region.

       ph_mw
               [out] Upon successful completion of this call, this references a handle
               to the memory window.  This handle is used to bind and destroy
               the window.

 RETURN VALUES
       IB_SUCCESS
               The memory window was successfully created.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the memory window rkey or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the memory window.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the memory window.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine creates an unbound memory window associated with a specified
       protection domain.  The memory window cannot be used for data transfer
       operations until being bound to a registered memory region.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo79">ib_destroy_mw</a>, <a href="#robo177">ib_query_mw</a>, <a href="#robo18">ib_bind_mw</a>
</pre>
</span>
<hr />

<h2><a name="robo69">[Functions]<a name="Access20Layer2fib5fcreate5fqp">
Access Layer/ib_create_qp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_create_qp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Creates a queue pair and returns its handle to the user.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_create_qp</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo166">ib_qp_create_t</a>* const           p_qp_create,
        IN              const   void* const                                     qp_context,
        IN              const   <a href="#robo138">ib_pfn_event_cb_t</a>                       pfn_qp_event_cb OPTIONAL,
                OUT                     ib_qp_handle_t* const           ph_qp );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] This is a handle to a protection domain associated with the queue
               pair.

       p_qp_create
               [in] Attributes necessary to allocate and initialize the queue pair.

       qp_context
               [in] A user-specified context information associated with the
               queue pair.

       pfn_qp_event_cb
               [in] User-specified error callback routine invoked after an
               asynchronous event has occurred on the queue pair.

       ph_qp
               [out] Upon successful completion of this call, this references a
               handle to the newly created queue pair.

 RETURN VALUES
       IB_SUCCESS
               The queue pair was successfully created.

       IB_INVALID_PD_HANDLE
               The protection domain to associate with the queue pair was invalid.

       IB_INVALID_PARAMETER
               A reference to the queue pair attributes or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the queue pair.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the queue pair.

       IB_INVALID_CQ_HANDLE
               The send or receive completion queue to associate with the queue pair
               was invalid.

       IB_INVALID_SETTING
               The specified queue pair creation attributes are invalid.

       IB_UNSUPPORTED
               The specified queue pair type was not supported by the channel adapter.

       IB_INVALID_MAX_WRS
               The requested maximum send or receive work request depth could not be
               supported.

       IB_INVALID_MAX_SGE
               The requested maximum number of scatter-gather entries for the send or
               receive queue could not be supported.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine allocates a queue pair with the specified attributes.  If
       the queue pair cannot be allocated, an error is returned.  When creating
       the queue pair, users associate a context with the queue pair.  This
       context is returned to the user through the asynchronous event callback
       if an event occurs.

       This routine is used to create queue pairs of type:

       IB_QPT_RELIABLE_CONN
       IB_QPT_UNRELIABLE_CONN
       IB_QPT_UNRELIABLE_DGRM
       IB_QPT_MAD

       Callers of <strong>ib_create_qp</strong> should call <a href="#robo100">ib_init_dgrm_svc</a> if the queue pair
       is of type IB_QPT_UNRELIABLE_DGRM or IB_QPT_MAD before sending or
       receiving data.  IB_QPT_RELIABLE_CONN, IB_QPT_UNRELIABLE_CONN type
       queue pairs should be used by the connection establishment process
       before data may be sent or received on the QP.

       This call does not return the QP attributes as MAD QPs do not support
       such an operation.  This is a minor specification deviation.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo178">ib_query_qp</a>, <a href="#robo118">ib_modify_qp</a>, <a href="#robo80">ib_destroy_qp</a>, <a href="#robo56">ib_cm_req</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo59">ib_cm_rtu</a>
       <a href="#robo100">ib_init_dgrm_svc</a>, <a href="./ib_types_h.html#robo166">ib_qp_create_t</a>, <a href="#robo138">ib_pfn_event_cb_t</a>, <a href="./ib_types_h.html#robo165">ib_qp_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo70">[Functions]<a name="Access20Layer2fib5fdealloc5fpd">
Access Layer/ib_dealloc_pd</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dealloc_pd</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Deallocates a protection domain.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_dealloc_pd</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an allocated protection domain.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the protection
               domain has been successfully destroyed.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call deallocates a protection domain and releases all associated
       resources, including queue pairs and registered memory regions.  Since
       callbacks may be outstanding against one of protection domain's related
       resources at the time the deallocation call is invoked, this call operates
       asynchronously.  The user will be notified through a callback once the
       deallocation call completes, indicating that no additional callbacks
       will be invoked for a related resource.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo8">ib_alloc_pd</a>
</pre>
</span>
<hr />

<h2><a name="robo71">[Functions]<a name="Access20Layer2fib5fdereg5fmad5fpool">
Access Layer/ib_dereg_mad_pool</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dereg_mad_pool</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Deregisters a MAD pool from a protection domain.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_dereg_mad_pool</strong>(
        IN              const   ib_pool_key_t                           pool_key );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       pool_key
               [in] Key to the MAD pool to deregister.  The specified pool must
               have been registered with a protection domain through a call to
               <a href="#robo187">ib_reg_mad_pool</a>.

 RETURN VALUES
       IB_SUCCESS
               The MAD pool was successfully deregistered from the protection domain.

       IB_INVALID_PARAMETER
               The MAD pool key was invalid.

       IB_RESOURCE_BUSY
               One or more MAD elements were removed from the MAD pool using the
               specified pool key, and were not returned.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function deregisters a MAD pool with a protection domain.  After
       successful completion of this call, the MAD elements of the associated
       pool are no longer usable on the protection domain.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo67">ib_create_mad_pool</a>, <a href="#robo78">ib_destroy_mad_pool</a>, <a href="#robo187">ib_reg_mad_pool</a>
</pre>
</span>
<hr />

<h2><a name="robo72">[Functions]<a name="Access20Layer2fib5fdereg5fmr">
Access Layer/ib_dereg_mr</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dereg_mr</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Deregisters a registered memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_dereg_mr</strong>(
        IN              const   ib_mr_handle_t                          h_mr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mr
               [in] A handle to a registered memory region that will be unregistered.

 RETURN VALUES
       IB_SUCCESS
               The memory region was successfully deregistered.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_RESOURCE_BUSY
               The memory region has memory windows bound to it.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine deregisters a memory region with a channel adapter.  The
       region may be deregistered only if there are no memory  windows or
       existing shared memory regions currently bound to the region.  Work
       requests referencing this region when it is deregistered will fail
       with a WRS_LOCAL_PROTECTION_ERR error.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo189">ib_reg_mem</a>, <a href="#robo190">ib_reg_phys</a>, <a href="#robo192">ib_reg_shared</a>
</pre>
</span>
<hr />

<h2><a name="robo73">[Functions]<a name="Access20Layer2fib5fdereg5fpnp">
Access Layer/ib_dereg_pnp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dereg_pnp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to cancel notification of local events or I/O controller
       assignments.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_dereg_pnp</strong>(
        IN              const   ib_pnp_handle_t                         h_pnp,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pnp
               [in] A handle returned as a result of an <a href="#robo191">ib_reg_pnp</a> operation.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the PnP
               registration has been successfully deregistered.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine cancels a pending PnP operation.  To avoid a race condition
       canceling a request at the same time a notification callback is in
       progress, the cancel operation operates asynchronously.  For additional
       details see <a href="#robo137">ib_pfn_destroy_cb_t</a>.

 RETURN VALUES
       IB_SUCCESS
               The PnP deregistration was initiated.

       IB_INVALID_HANDLE
               The PnP handle was invalid.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo191">ib_reg_pnp</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo74">[Functions]<a name="Access20Layer2fib5fdereg5fsvc">
Access Layer/ib_dereg_svc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dereg_svc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Remove a service as being registered with the subnet administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_dereg_svc</strong>(
        IN              const   ib_reg_svc_handle_t                     h_reg_svc,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_reg_svc
               [in] A handle to a registered service.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the service
               has been deregistered.

 RETURN VALUES
       IB_SUCCESS
               The service deregistration was initiated.

       IB_INVALID_HANDLE
               The registered service handle was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine deregisters a service with the subnet administrator.
       To avoid a race condition deregistering a service at the same time
       the registration completion callback is in progress, the deregister
       operation operates asynchronously.  For additional details see
       <a href="#robo137">ib_pfn_destroy_cb_t</a>.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo194">ib_reg_svc</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo75">[Functions]<a name="Access20Layer2fib5fdestroy5fav">
Access Layer/ib_destroy_av</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_av</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Destroys an existing address vector.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_av</strong>(
        IN              const   ib_av_handle_t                          h_av );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_av
               [in] A handle to an existing address vector.

 RETURN VALUES
       IB_SUCCESS
               The address vector was successfully destroyed.

       IB_INVALID_AV_HANDLE
               The address vector handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine destroys an existing address vector.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo64">ib_create_av</a>
</pre>
</span>
<hr />

<h2><a name="robo76">[Functions]<a name="Access20Layer2fib5fdestroy5fcq">
Access Layer/ib_destroy_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Destroys a completion queue.  Once destroyed, no further access to the
       completion queue is possible.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an existing completion queue.

       pfn_destroy_cb
               [in] A user-provided callback that is invoked after the
               completion queue has been successfully destroyed.

 RETURN VALUES
       IB_SUCCESS
               The destroy request was registered.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call destroys an existing completion queue.  Since callbacks may be
       outstanding against the completion queue at the time the destroy operation
       is invoked, the this call operates asynchronously.  The user will be
       notified through a callback once the destroy operation completes,
       indicating that no additional callbacks will be invoked for the specified
       completion queue.

       If there are still queue pairs associated with the completion queue when
       this function is invoked, the destroy operation will fail with status
       IB_RESOURCE_BUSY.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo77">[Functions]<a name="Access20Layer2fib5fdestroy5fioc">
Access Layer/ib_destroy_ioc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_ioc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Destroys an instance of an I/O controller.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_ioc</strong>(
        IN              const   ib_ioc_handle_t                         h_ioc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ioc
               [in] A handle to an existing I/O controller.

 RETURN VALUES
       IB_SUCCESS
               The I/O controller was successfully destroyed.

       IB_INVALID_HANDLE
               The I/O controller handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Once an I/O controller is destroyed, it is no longer reported by the
       local device manager as an exported device.  This routine automatically
       removes all services associated with the controller.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo66">ib_create_ioc</a>
</pre>
</span>
<hr />

<h2><a name="robo78">[Functions]<a name="Access20Layer2fib5fdestroy5fmad5fpool">
Access Layer/ib_destroy_mad_pool</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_mad_pool</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Destroys a MAD pool and all associated resources.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_mad_pool</strong>(
        IN              const   ib_pool_handle_t                        h_pool );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pool
               [in] A handle to a MAD pool allocated through the <a href="#robo67">ib_create_mad_pool</a>
               routine.

 RETURN VALUES
       IB_SUCCESS
               The MAD pool was successfully destroyed.

       IB_INVALID_HANDLE
               The MAD pool handle was invalid.

       IB_RESOURCE_BUSY
               One or more MAD elements have not been returned to the MAD pool.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call destroys a MAD pool and all resources allocated by the pool.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo67">ib_create_mad_pool</a>, <a href="#robo89">ib_get_mad</a>, <a href="#robo164">ib_put_mad</a>
</pre>
</span>
<hr />

<h2><a name="robo79">[Functions]<a name="Access20Layer2fib5fdestroy5fmw">
Access Layer/ib_destroy_mw</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_mw</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Destroys a memory window.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_mw</strong>(
        IN              const   ib_mw_handle_t                          h_mw );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mw
               [in] A handle to an existing memory window.

 RETURN VALUES
       IB_SUCCESS
               The memory window was successfully destroyed.

       IB_INVALID_MW_HANDLE
               The memory window handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine deallocates a window entry created via a <a href="#robo68">ib_create_mw</a>.
       Once this operation is complete, future accesses to the window will fail.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo68">ib_create_mw</a>
</pre>
</span>
<hr />

<h2><a name="robo80">[Functions]<a name="Access20Layer2fib5fdestroy5fqp">
Access Layer/ib_destroy_qp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_destroy_qp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Release a queue pair.  Once destroyed, no further access to this
       queue pair is possible.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_destroy_qp</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an existing queue pair.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the queue pair
               has been successfully destroyed.

 RETURN VALUES
       IB_SUCCESS
               The destroy request was registered.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call destroys an existing queue pair.  Since callbacks may be
       outstanding against the queue pair at the time the destroy operation is
       invoked, the this call operates asynchronously.  The user will be notified
       through a callback once the destroy operation completes, indicating that
       no additional callbacks will be invoked for the specified queue pair.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_create_qp</a>
</pre>
</span>
<hr />

<h2><a name="robo81">[Definitions]<a name="Access20Layer2fib5fdevice5fattr5fmask5ft">
Access Layer/ib_device_attr_mask_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_device_attr_mask_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Used to specify desired attributes of a device or port.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#define         IB_DEV_PORT_ACTIVE              0x1
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_DEV_PORT_ACTIVE
               Specifies that a port state should be active.  Applies only to port
               GUIDs.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo88">ib_get_guid</a>
</pre>
</span>
<hr />

<h2><a name="robo82">[Structures]<a name="Access20Layer2fib5fdgrm5finfo5ft">
Access Layer/ib_dgrm_info_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dgrm_info_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information specified when initializing a datagram queue pair before its
       first use.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_dgrm_info
{
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;
        uint32_t                                        qkey;
        uint16_t                                        pkey_index;

}       <strong>ib_dgrm_info_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       port_guid
               Specifies the port that the datagram service will use.  This field
               applies only to IB_QPT_UNRELIABLE_DGRM and IB_QPT_MAD QP types.

       qkey
               Specifies the qkey that the queue pair will use.  Incoming messages
               must have a matching qkey for the message to be accepted by the
               receiving QP.

       pkey_index
               Specifies the pkey associated with this queue pair.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo100">ib_init_dgrm_svc</a>
</pre>
</span>
<hr />

<h2><a name="robo83">[Structures]<a name="Access20Layer2fib5fdrep5fpdata5ft">
Access Layer/ib_drep_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_drep_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a reply to a disconnection request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_drep_pdata
{
        uint8_t                                         data[IB_DREP_PDATA_SIZE];

}       <strong>ib_drep_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo84">[Structures]<a name="Access20Layer2fib5fdreq5fpdata5ft">
Access Layer/ib_dreq_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_dreq_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a disconnection request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_dreq_pdata
{
        uint8_t                                         data[IB_DREQ_PDATA_SIZE];

}       <strong>ib_dreq_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo85">[Functions]<a name="Access20Layer2fib5fforce5fapm">
Access Layer/ib_force_apm</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_force_apm</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine indicates that a queue pair should immediately migrate to its
       alternate path.  All future data transfers will occur over the new path.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_force_apm</strong>(
        IN              const   ib_qp_handle_t                          h_qp );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to the queue pair to migrate.

 RETURN VALUES
       IB_SUCCESS
               The queue pair or end-to-end context was successfully modified.

       IB_INVALID_PARAMETER
               Neither or both of the queue pair or the end-to-end context handles
               were valid.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the modify the queue pair or end-to-end context.

       IB_UNSUPPORTED
               The requested modification was not supported.

       IB_INVALID_QP_STATE
               The queue pair was in an invalid state for the requested operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       For this routine to operate correctly, the specified queue pair must have
       an existing alternate path loaded.  If an alternate path is not loaded, or
       has not yet been armed, this call will fail.

       Use of this call results in additional data transfers that occur on the
       given queue pair using the alternate path.  Once this call completes, a
       new alternate path may be loaded using the <a href="#robo42">ib_cm_lap</a> call.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>
</pre>
</span>
<hr />

<h2><a name="robo86">[Functions]<a name="Access20Layer2fib5fget5fca5fby5fgid">
Access Layer/ib_get_ca_by_gid</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_ca_by_gid</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns the GUID of a channel adapter contain the given port GID.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_ca_by_gid</strong>(
        IN                              ib_al_handle_t                          h_al,
        IN              const   <a href="./ib_types_h.html#robo370">ib_gid_t</a>* const                         p_gid,
                OUT                     <a href="./ib_types_h.html#robo409">ib_net64_t</a>* const                       p_ca_guid );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an opened instance of the access layer.

       p_gid
               [in] A port GID.

       p_ca_guid
               [out] A GUID to the CA that contains the port matching the user-
               specified GID.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the port GID or CA GUID was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_NOT_FOUND
               No channel adapters in the system contain the specifed port GID.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns a CA GUID that contains the user-specified port GID.
       If no channel adapters in the system contain the port GID, the call will
       return IB_NOT_FOUND.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="#robo124">ib_open_ca</a>, <a href="#robo87">ib_get_ca_guids</a>
</pre>
</span>
<hr />

<h2><a name="robo87">[Functions]<a name="Access20Layer2fib5fget5fca5fguids">
Access Layer/ib_get_ca_guids</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_ca_guids</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns a list of GUIDS for all channel adapter currently available in
       the system.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_ca_guids</strong>(
        IN                              ib_al_handle_t                          h_al,
                OUT                     <a href="./ib_types_h.html#robo409">ib_net64_t</a>* const                       p_guid_array OPTIONAL,
        IN      OUT                     size_t* const                           p_guid_cnt );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an opened instance of the access layer.

       p_guid_array
               [out] An array of GUIDs provided by the user and filled out by the
               access layer.  If this parameter is NULL, the access layer will return
               the number of entries in the array necessary to retrieve the GUID list.

       p_guid_cnt
               [in/out] On input, this specifies the number of entries in the
               GUID array.

               On output, the access layer will set this to the number of valid
               entries in the p_guid_array or the minimum number of entries needed
               in the GUID array in order to return all channel adapter GUIDs.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the GUID count was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns a list of GUIDs for all available channel adapters.
       When called, the access layer will examine p_guid_cnt to determine the
       number of entries available in the p_guid_array.  If the count is too
       small, the function will return IB_INSUFFICIENT_MEMORY, and set p_guid_cnt
       to the number of needed entries.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="#robo124">ib_open_ca</a>
</pre>
</span>
<hr />

<h2><a name="robo88">[Functions]<a name="Access20Layer2fib5fget5fguid">
Access Layer/ib_get_guid</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_guid</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns a GUID for a device or port that matches the user-specified
       attributes.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_guid</strong>(
        IN                              ib_al_handle_t                          h_al,
        IN              const   uint32_t                                        index,
        IN              const   <a href="#robo150">ib_pnp_class_t</a>                          device_type,
        IN              const   uint64_t                                        attr_mask,
                OUT                     <a href="./ib_types_h.html#robo409">ib_net64_t</a>* const                       p_guid );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an opened instance of the access layer.

       index
               [in] Specifies the location of the device or port.  Users specify this
               value to iterate through all devices or ports on the system.  If set
               to IB_ANY_INDEX, then the first device or port matching the given
               attributes will be returned.

       device_type
               [in] Indicates the type of device to retrieve the GUID for.

       attr_mask
               [in] Specifies a set of attributes that the given device or port
               must have for a successful match to occur.

       p_guid
               [out] On successful return, this parameter will reference the GUID
               of the device or port that contains the specified attributes.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_SETTING
               The specified device type is invalid.

       IB_INVALID_PARAMETER
               No p_guid parameter was specified.

       IB_NO_MATCH
               The device or port at the specified index does not have the given
               attributes.

       IB_INVALID_INDEX
               No device or port exists for the specified index.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns a GUID for a device or port that matches the
       user-specified attributes.  If index is IB_ANY_INDEX, then the first
       device or port matching the given attributes is returned if a match is
       found.  If no match is found, the call will return IB_NO_MATCH.  If a
       valid index is specified, then the device or port located at that index
       will be examined to see if it has the given attributes.  If the device
       or port with those attributes is found, its GUID is returned.

       This routine may be used to locate a device or port with a given set
       of attributes, or iterate through all devices or ports on the system.
       The specified index values are set by the access layer, but the index
       associated with a GUID may change if devices are removed from the system.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="#robo150">ib_pnp_class_t</a>, <a href="#robo87">ib_get_ca_guids</a>, <a href="#robo174">ib_query_ca_by_guid</a>
</pre>
</span>
<hr />

<h2><a name="robo89">[Functions]<a name="Access20Layer2fib5fget5fmad">
Access Layer/ib_get_mad</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_mad</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Obtains a MAD element from the pool.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_mad</strong>(
        IN              const   ib_pool_key_t                           pool_key,
        IN              const   size_t                                          buf_size,
                OUT                     <a href="#robo110">ib_mad_element_t</a>                        **pp_mad_element );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       pool_key
               [in] Key for the pool to obtain a MAD element for the desired
               protection domain.

       buf_size
               [in] The size of the buffer referenced by the MAD element.

       pp_mad_element
               [out] Upon successful completion of this call, this references
               the returned MAD element.

 RETURN VALUES
       IB_SUCCESS
               The MAD element was successfully retrieved from the MAD pool.

       IB_INVALID_PARAMETER
               The MAD pool key was invalid or a reference to the MAD element
               pointer was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to obtain the MAD element.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to grow and register the MAD pool.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function obtains a MAD element containing a data segment
       that references a data buffer for the given pool key.  The data buffer
       referenced by the MAD element is zeroed before being returned to the
       user.

       It is recommended that elements retrieved from a MAD pool for use on
       the receive queue of a MAD QP have a buffer size of 256 bytes.

       For MADs being sent, buf_size should be set to the size of the relevant
       data sent as part of the MAD, and should not include any padding needed
       to make the MAD size a multiple of 256 bytes.  For most MADs, buf_size
       may be set equal to the size of the MAD header plus the amount of user
       data transfered as part of the MAD.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo164">ib_put_mad</a>, <a href="#robo207">ib_send_mad</a>, <a href="#robo110">ib_mad_element_t</a>
</pre>
</span>
<hr />

<h2><a name="robo90">[Functions]<a name="Access20Layer2fib5fget5fmad5fbuf">
Access Layer/ib_get_mad_buf</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_mad_buf</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns a pointer to the MAD buffer associated with a MAD element.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#pragma warning(push)
#pragma warning(disable: 4244 ) 
AL_INLINE void* AL_API
<strong>ib_get_mad_buf</strong>(
        IN              const   <a href="#robo110">ib_mad_element_t</a>* const         p_mad_element )
{
        CL_ASSERT( p_mad_element );
        return( p_mad_element->p_mad_buf );
}
#pragma warning (pop)
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_mad_element
               [in] A pointer to a MAD element.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Returns a pointer to the MAD buffer associated with a MAD element.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo110">ib_mad_element_t</a>
</pre>
</span>
<hr />

<h2><a name="robo91">[Functions]<a name="Access20Layer2fib5fget5fport5fby5fgid">
Access Layer/ib_get_port_by_gid</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_port_by_gid</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns the GUID of a port that contains the given port GID.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_port_by_gid</strong>(
        IN                              ib_al_handle_t                          h_al,
        IN              const   <a href="./ib_types_h.html#robo370">ib_gid_t</a>* const                         p_gid,
                OUT                     <a href="./ib_types_h.html#robo409">ib_net64_t</a>* const                       p_port_guid );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an opened instance of the access layer.

       p_gid
               [in] A port GID.

       p_port_guid
               [out] A GUID to the port that contains the matching user-
               specified GID.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the port GID or port GUID was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_NOT_FOUND
               No channel adapters in the system contain the specifed port GID.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns a port GUID that contains the user-specified port GID.
       If no channel adapters in the system contain the port GID, the call will
       return IB_NOT_FOUND.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="#robo124">ib_open_ca</a>, <a href="#robo87">ib_get_ca_guids</a>
</pre>
</span>
<hr />

<h2><a name="robo92">[Functions]<a name="Access20Layer2fib5fget5fquery5fnode5frec">
Access Layer/ib_get_query_node_rec</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_query_node_rec</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Retrieves a node record result from a MAD returned by a call to
       <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_INLINE ib_node_record_t* AL_API
<strong>ib_get_query_node_rec</strong>(
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_result_mad,
        IN                              uint32_t                                        result_index )
{
        <a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>             *p_sa_mad;

        CL_ASSERT( p_result_mad );
        p_sa_mad = (<a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>*)<a href="#robo90">ib_get_mad_buf</a>( p_result_mad );
        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == <a href="./ib_types_h.html#robo251">IB_MAD_ATTR_NODE_RECORD</a> );

        return( (ib_node_record_t*)<a href="#robo95">ib_get_query_result</a>( p_result_mad,
                result_index ) );
}
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_result_mad
               [in] This is a reference to the MAD returned as a result of the
               query.

       result_index
               [in] A zero-based index indicating which result to return.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call returns a pointer to the start of a node record result from
       a call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>, <a href="#robo110">ib_mad_element_t</a>, <a href="#robo95">ib_get_query_result</a>, ib_node_record_t
</pre>
</span>
<hr />

<h2><a name="robo93">[Functions]<a name="Access20Layer2fib5fget5fquery5fpath5frec">
Access Layer/ib_get_query_path_rec</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_query_path_rec</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Retrieves a path record result from a MAD returned by a call to
       <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_INLINE <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>* AL_API
<strong>ib_get_query_path_rec</strong>(
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_result_mad,
        IN                              uint32_t                                        result_index )
{
        <a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>             *p_sa_mad;

        CL_ASSERT( p_result_mad );
        p_sa_mad = (<a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>*)<a href="#robo90">ib_get_mad_buf</a>( p_result_mad );
        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == <a href="./ib_types_h.html#robo254">IB_MAD_ATTR_PATH_RECORD</a> );

        return( (<a href="./ib_types_h.html#robo441">ib_path_rec_t</a>*)<a href="#robo95">ib_get_query_result</a>( p_result_mad, result_index ) );
}
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_result_mad
               [in] This is a reference to the MAD returned as a result of the
               query.

       result_index
               [in] A zero-based index indicating which result to return.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call returns a pointer to the start of a path record result from
       a call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>, <a href="#robo110">ib_mad_element_t</a>, <a href="#robo95">ib_get_query_result</a>, <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo94">[Functions]<a name="Access20Layer2fib5fget5fquery5fportinfo5frec">
Access Layer/ib_get_query_portinfo_rec</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_query_portinfo_rec</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Retrieves a port info record result from a MAD returned by a call to
       <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_INLINE ib_portinfo_record_t* AL_API
<strong>ib_get_query_portinfo_rec</strong>(
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_result_mad,
        IN                              uint32_t                                        result_index )
{
        <a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>             *p_sa_mad;

        CL_ASSERT( p_result_mad );
        p_sa_mad = (<a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>*)<a href="#robo90">ib_get_mad_buf</a>( p_result_mad );
        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == <a href="./ib_types_h.html#robo260">IB_MAD_ATTR_PORTINFO_RECORD</a> );

        return( (ib_portinfo_record_t*)<a href="#robo95">ib_get_query_result</a>( p_result_mad,
                result_index ) );
}
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_result_mad
               [in] This is a reference to the MAD returned as a result of the
               query.

       result_index
               [in] A zero-based index indicating which result to return.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call returns a pointer to the start of a port info record result from
       a call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>, <a href="#robo110">ib_mad_element_t</a>, <a href="#robo95">ib_get_query_result</a>, ib_portinfo_record_t
</pre>
</span>
<hr />

<h2><a name="robo95">[Functions]<a name="Access20Layer2fib5fget5fquery5fresult">
Access Layer/ib_get_query_result</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_query_result</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Retrieves a result structure from a MAD returned by a call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_INLINE void* AL_API
<strong>ib_get_query_result</strong>(
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_result_mad,
        IN                              uint32_t                                        result_index )
{
        <a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>             *p_sa_mad;

        CL_ASSERT( p_result_mad );
        p_sa_mad = (<a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>*)<a href="#robo90">ib_get_mad_buf</a>( p_result_mad );
        CL_ASSERT( p_sa_mad );
        CL_ASSERT( ib_get_attr_size( p_sa_mad->attr_offset ) * (result_index + 1) +
                IB_SA_MAD_HDR_SIZE <= p_result_mad->size );

        return( p_sa_mad->data +
                (ib_get_attr_size( p_sa_mad->attr_offset ) * result_index) );
}
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_result_mad
               [in] This is a reference to the MAD returned as a result of the
               query.

       result_index
               [in] A zero-based index indicating which result to return.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call returns a pointer to the start of a result structure from a call
       to <a href="#robo171">ib_query</a>().  The type of result structure must be known to the user
       either through the user's context or the query_type returned as part of
       the <a href="#robo179">ib_query_rec_t</a> structure.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>, <a href="#robo110">ib_mad_element_t</a>
</pre>
</span>
<hr />

<h2><a name="robo96">[Functions]<a name="Access20Layer2fib5fget5fquery5fsvc5frec">
Access Layer/ib_get_query_svc_rec</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_query_svc_rec</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Retrieves a service record result from a MAD returned by a call to
       <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_INLINE ib_service_record_t* AL_API
<strong>ib_get_query_svc_rec</strong>(
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_result_mad,
        IN                              uint32_t                                        result_index )
{
        <a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>             *p_sa_mad;

        CL_ASSERT( p_result_mad );
        p_sa_mad = (<a href="./ib_types_h.html#robo466">ib_sa_mad_t</a>*)<a href="#robo90">ib_get_mad_buf</a>( p_result_mad );
        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == <a href="./ib_types_h.html#robo264">IB_MAD_ATTR_SERVICE_RECORD</a> );

        return( (ib_service_record_t*)<a href="#robo95">ib_get_query_result</a>( p_result_mad,
                result_index ) );
}
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_result_mad
               [in] This is a reference to the MAD returned as a result of the
               query.

       result_index
               [in] A zero-based index indicating which result to return.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call returns a pointer to the start of a service record result from
       a call to <a href="#robo171">ib_query</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>, <a href="#robo110">ib_mad_element_t</a>, <a href="#robo95">ib_get_query_result</a>, ib_service_record_t
</pre>
</span>
<hr />

<h2><a name="robo97">[Functions]<a name="Access20Layer2fib5fget5fspl5fqp">
Access Layer/ib_get_spl_qp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_get_spl_qp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Create a special QP or QP alias.  This call provides access to queue
       pairs 0 and 1, and the raw queue pair types.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_get_spl_qp</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid,
        IN              const   <a href="./ib_types_h.html#robo166">ib_qp_create_t</a>* const           p_qp_create,
        IN              const   void* const                                     qp_context,
        IN              const   <a href="#robo138">ib_pfn_event_cb_t</a>                       pfn_qp_event_cb OPTIONAL,
                OUT                     ib_pool_key_t* const            p_pool_key OPTIONAL,
                OUT                     ib_qp_handle_t* const           ph_qp );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] This is a handle to a protection domain associated with the queue
               pair.  This must be a protection domain alias for aliased QP types.

       port_guid
               [in] The port GUID that the special QP will be associated with.

       p_qp_create
               [in] Attributes necessary to allocate and initialize the queue pair.

       qp_context
               [in] A user-specified context information associated with the
               queue pair.

       pfn_qp_ervent_cb
               [in] User-specified error callback routine invoked after an
               asynchronous event has occurred on the queue pair.

       p_pool_key
               [in] A key to a pool of MAD elements that are used to send MADs.
               This key is only valid for aliased QP types.

       ph_qp
               [out] Upon successful completion of this call, this references a
               handle to the newly created queue pair.

 RETURN VALUES
       IB_SUCCESS
               The queue pair was successfully created.

       IB_INVALID_PD_HANDLE
               The protection domain to associate with the queue pair was invalid.

       IB_INVALID_PORT
               The port number supplied was invalid for the given channel adapter.

       IB_INVALID_PARAMETER
               A reference to the queue pair attributes or handle was not provided.

       IB_INVALID_PERMISSION
               The calling process does not have sufficient privilege to create the
               requested queue pair type.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to create the queue pair.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to create the queue pair.

       IB_INVALID_CQ_HANDLE
               The send or receive completion queue to associate with the queue pair
               was invalid.

       IB_INVALID_SETTING
               The specified queue pair type was invalid.

       IB_UNSUPPORTED
               The specified queue pair type was not supported by the channel adapter.

       IB_INVALID_MAX_WRS
               The requested maximum send or receive work request depth could not be
               supported.

       IB_INVALID_MAX_SGE
               The requested maximum number of scatter-gather entries for the send or
               receive queue could not be supported.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine allocates a queue pair with the specified attributes.  If
       the queue pair cannot be allocated, an error is returned.  When creating
       the queue pair, users associate a context with the queue pair.  This
       context is returned to the user through the asynchronous event callback
       if an event occurs.

       This routine is used to create queue pairs of type:

       IB_QPT_QP0
       IB_QPT_QP1
       IB_QPT_RAW_IPV6
       IB_QPT_RAW_ETHER
       IB_QPT_QP0_ALIAS
       IB_QPT_QP1_ALIAS

       Callers of <strong>ib_get_spl_qp</strong> should call <a href="#robo100">ib_init_dgrm_svc</a> if the queue pair is
       of type IB_QPT_QP0, IB_QPT_QP1, IB_QPT_RAW_IPV6, IB_QPT_RAW_ETHER before
       sending or receiving data.  MADs may be sent on aliased QPs on the
       successful return of this routine.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo178">ib_query_qp</a>, <a href="#robo118">ib_modify_qp</a>, <a href="#robo80">ib_destroy_qp</a>, <a href="#robo89">ib_get_mad</a>
       <a href="#robo100">ib_init_dgrm_svc</a>, <a href="./ib_types_h.html#robo166">ib_qp_create_t</a>, <a href="#robo138">ib_pfn_event_cb_t</a>, <a href="./ib_types_h.html#robo165">ib_qp_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo98">[Structures]<a name="Access20Layer2fib5fgid5fpair5ft">
Access Layer/ib_gid_pair_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_gid_pair_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Source and destination GIDs.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_gid_pair
{
        <a href="./ib_types_h.html#robo370">ib_gid_t</a>                                        src_gid;
        <a href="./ib_types_h.html#robo370">ib_gid_t</a>                                        dest_gid;

}       <strong>ib_gid_pair_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       src_gid
               Source GID of a path.

       dest_gid
               Destination GID of a path.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo370">ib_gid_t</a>
</pre>
</span>
<hr />

<h2><a name="robo99">[Structures]<a name="Access20Layer2fib5fguid5fpair5ft">
Access Layer/ib_guid_pair_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_guid_pair_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Source and destination GUIDs.  These may be port or channel adapter
       GUIDs, depending on the context in which this structure is used.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_guid_pair
{
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      src_guid;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      dest_guid;

}       <strong>ib_guid_pair_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       src_guid
               Source GUID of a path.

       dest_guid
               Destination GUID of a path.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.  The given
       GUID pair may belong to either ports or channel adapters.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_guid_t
</pre>
</span>
<hr />

<h2><a name="robo100">[Functions]<a name="Access20Layer2fib5finit5fdgrm5fsvc">
Access Layer/ib_init_dgrm_svc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_init_dgrm_svc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Initializes a datagram queue pair for use.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_init_dgrm_svc</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN              const   <a href="#robo82">ib_dgrm_info_t</a>* const           p_dgrm_info OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an existing queue pair.

       p_dgrm_info
               [in] References information needed to configure the queue pair for
               use sending and receiving datagrams.  This field is optional for
               IB_QPT_QP0, IB_QPT_QP1 queue pair types and is not used for
               IB_QPT_RAW_IPV6, and IB_QPT_RAW_ETHER queue pair types.

 RETURN VALUES
       IB_SUCCESS
               The datagram queue pair was initialized successfully.

       IB_INVALID_QP_HANDLE
               The datagram queue pair handle was invalid.

       IB_INVALID_PARAMETER
               The queue pair handle was not created as a datagram queue pair type
               or a reference to the datagram service information was not provided.

       IB_INVALID_QP_STATE
               The queue pair was in an invalid state for the requested operation.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to initialize the datagram queue pair.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call binds the queue pair to a given port and transitions its state
       to ready to send and receive data.  A queue pair must be initialized
       before it can be used to send and receive datagrams.

       This routine is used to initialize queue pairs of type:

       IB_QPT_QP0
       IB_QPT_QP1
       IB_QPT_MAD
       IB_QPT_RAW_IPV6
       IB_QPT_RAW_ETHER
       IB_QPT_UNRELIABLE_DGRM

       For IB_QPT_MAD type queue pairs, receive buffers are automatically posted
       by the access layer, however, users must call <a href="#robo188">ib_reg_mad_svc</a> to receive
       MADs.  Received MAD elements must be returned to the access layer through
       the <a href="#robo164">ib_put_mad</a>() call.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_create_qp</a>, <a href="#robo97">ib_get_spl_qp</a>, <a href="#robo82">ib_dgrm_info_t</a>, <a href="#robo188">ib_reg_mad_svc</a>
</pre>
</span>
<hr />

<h2><a name="robo102">[Functions]<a name="Access20Layer2fib5fjoin5fmcast">
Access Layer/ib_join_mcast</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_join_mcast</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Attaches a queue pair to a multicast group.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_join_mcast</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN              const   <a href="#robo114">ib_mcast_req_t</a>* const           p_mcast_req );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an unreliable datagram queue pair that will join the
               multicast group.

       p_mcast_req
               [in] Specifies the multicast group to join.

 RETURN VALUES
       IB_SUCCESS
               The join multicast group request has been initiated.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the multicast group request information was not
               provided.

       IB_INVALID_SERVICE_TYPE
               The queue pair configuration does not support this type of service.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to join the multicast group.

       IB_INVALID_GUID
               No port was found for the port_guid specified in the request.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.

       IB_INVALID_PKEY
               The pkey specified in the multicast join request does not match the
               pkey of the queue pair.

       IB_INVALID_PORT
               The port GUID specified in the multicast join request does not match
               the port of the queue pair.

       IB_ERROR
               An error occurred while performing the multicast group join operation.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available to complete
               the request.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to complete the request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine results in the specified queue pair joining a multicast
       group.  If the multicast group does not already exist, it will be created
       at the user's option.  Information about the multicast group is returned
       to the user through a callback specified through the p_mcast_req
       parameter.

       If the specified queue pair is already a member of a multicast group when
       this call is invoked, an error will occur if there are conflicting
       membership requirements.  The QP is restricted to being bound to a single
       port_guid and using a single pkey.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo104">ib_leave_mcast</a>, <a href="#robo114">ib_mcast_req_t</a>, <a href="#robo69">ib_create_qp</a>, <a href="#robo100">ib_init_dgrm_svc</a>
</pre>
</span>
<hr />

<h2><a name="robo103">[Structures]<a name="Access20Layer2fib5flap5fpdata5ft">
Access Layer/ib_lap_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_lap_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a load alternate path message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_lap_pdata
{
        uint8_t                                         data[IB_LAP_PDATA_SIZE];

}       <strong>ib_lap_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo104">[Functions]<a name="Access20Layer2fib5fleave5fmcast">
Access Layer/ib_leave_mcast</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_leave_mcast</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Removes a queue pair from a multicast group.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_leave_mcast</strong>(
        IN              const   ib_mcast_handle_t                       h_mcast,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mcast
               [in] A handle to a joined multicast group.

       pfn_destroy_cb
               [in] An optional user-specified callback that is invoked after the
               leave request has completed.

 RETURN VALUES
       IB_SUCCESS
               The leave multicast group request has been initiated.

       IB_INVALID_MCAST_HANDLE
               The multicast group handle was invalid.

       IB_ERROR
               An error occurred while performing the multicast group leave operation.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine detaches a queue pair from a multicast group and removes
       it as a member of the group with the subnet administrator.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo102">ib_join_mcast</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo105">[Structures]<a name="Access20Layer2fib5flid5fpair5ft">
Access Layer/ib_lid_pair_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_lid_pair_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Source and destination LIDs.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_lid_pair
{
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      src_lid;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      dest_lid;

}       <strong>ib_lid_pair_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       src_lid
               Source LID of a path.

       dest_lid
               Destination LID of a path.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to describe the endpoints of a path.
</pre>
</span>
<hr />

<h2><a name="robo106">[Structures]<a name="Access20Layer2fib5flisten5ferr5frec5ft">
Access Layer/ib_listen_err_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_listen_err_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information returned to the user when an error occurs on a listen request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_listen_err_rec
{
        void* __ptr64                                                           listen_context;
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                                                         reason;
        ib_listen_handle_t                                                      h_cm_listen;

}       <strong>ib_listen_err_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       listen_context
               User-defined context information associated with the listen request
               through the <a href="#robo45">ib_cm_listen</a> call.

       reason
               A status that identifies the reason for error being reported.

       h_cm_listen
               The handle for the listen request.  This handle will match the handle
               returned by <a href="#robo45">ib_cm_listen</a> call.  It is provided in case an error event
               occurs before a client's call to <a href="#robo45">ib_cm_listen</a> can return.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo139">ib_pfn_listen_err_cb_t</a>, <a href="./ib_types_h.html#robo9">ib_api_status_t</a>
</pre>
</span>
<hr />

<h2><a name="robo107">[Definitions]<a name="Access20Layer2fib5flisten5finfo5ft">
Access Layer/ib_listen_info_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_listen_info_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       <a href="./ib_types_h.html#robo2">Constants</a> used to specify directed listen requests.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#define IB_ALL_CAS                                              0
#define IB_ALL_PORTS                                    0
#define IB_ALL_LIDS                                             0
#define IB_ALL_PKEYS                                    0
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo45">ib_cm_listen</a>, <a href="#robo46">ib_cm_listen_t</a>
</pre>
</span>
<hr />

<h2><a name="robo109">[Functions]<a name="Access20Layer2fib5flocal5fmad">
Access Layer/ib_local_mad</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_local_mad</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Request that a locally received MAD be processed by the channel adapter
       on which it was received.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_local_mad</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN              const   uint8_t                                         port_num,
        IN              const   void* const                                     p_mad_in,
                OUT                     void*                                           p_mad_out );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to the channel adapter that should process the MAD.
               This must be the same adapter that the MAD was received on.

       port_num
               [in] The port number to which this request is directed.

       p_mad_in
               [in] Pointer to a management datagram (MAD) structure containing
               the command to be processed.

       p_mad_out
               [out] References a MAD that should contain the response to the
               received input MAD specified through the p_mad_in parameter.

 RETURN VALUES
       IB_SUCCESS
               The local MAD was processed successfully.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INVALID_PORT
               The port number was invalid.

       IB_INVALID_PARAMETER
               A reference to the MAD input or MAD output buffer was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call is provided to support SMA and GSA implementations above the
       verbs interface on ports that the access layer has disabled.  This routine
       is used to perform local operations by the channel adapter.  On successful
       return, the provide output MAD should be used when sending a response.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo173">ib_query_ca</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo110">[Structures]<a name="Access20Layer2fib5fmad5felement5ft">
Access Layer/ib_mad_element_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mad_element_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to submit a work request to a management datagram (MAD)
       queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_mad_element
{
        struct _ib_mad_element* __ptr64 p_next;
        const void* __ptr64                     context1;
        const void* __ptr64                     context2;

        /* Request/completion data. */
        <a href="./ib_types_h.html#robo396">ib_mad_t</a>* __ptr64                       p_mad_buf;
        uint32_t                                        size;
        uint32_t                                        immediate_data;
        <a href="./ib_types_h.html#robo408">ib_net32_t</a>                                      remote_qp;

        /* Send request information. */
        ib_av_handle_t                          h_av;
        <a href="./ib_types_h.html#robo208">ib_send_opt_t</a>                           send_opt;
        <a href="./ib_types_h.html#robo408">ib_net32_t</a>                                      remote_qkey;
        boolean_t                                       resp_expected;
        uint32_t                                        timeout_ms;
        uint32_t                                        retry_cnt;
        uint8_t                                         rmpp_version;

        /* Completion information. */
        <a href="./ib_types_h.html#robo219">ib_wc_status_t</a>                          status;
        boolean_t                                       grh_valid;
        <a href="./ib_types_h.html#robo373">ib_grh_t</a>* __ptr64                       p_grh;

        /* Completed receive data or send request information if h_av is NULL. */
        uint32_t                                        recv_opt;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      remote_lid;
        uint8_t                                         remote_sl;
        uint16_t                                        pkey_index;
        uint8_t                                         path_bits;

        /* Transaction completion data. */
        void* __ptr64                           send_context1;
        void* __ptr64                           send_context2;

}       <strong>ib_mad_element_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_next
               A pointer used to chain MAD elements together.  This value is
               set to NULL to mark the end of the chain.

       context1
               User-defined context information associated with the datagram.

       context2
               User-defined context information associated with the datagram.

       p_buffer
               The local data buffer contain the MAD.

       size
               The size of the MAD referenced by p_buffer.

       immediate_data
               32-bit field sent or received as part of a datagram message.
               This field is valid for send operations if the send_opt
               IB_SEND_OPT_IMMEDIATE flag has been set.  This field is valid
               on received datagram completions if the recv_opt
               IB_RECV_OPT_IMMEDIATE flag is set.

       remote_qp
               Identifies the destination queue pair of a datagram send operation or
               the source queue pair of a received datagram.

       h_av
               An address vector that specifies the path information used to route
               the outbound datagram to the destination queue pair.  This handle may
               be NULL when sending a directed route SMP or if the access layer
               should create the address vector for the user.

       send_opt
               Optional send control parameters.  The following options are valid:
               IB_SEND_OPT_IMMEDIATE and IB_SEND_OPT_SOLICITED.  IB_SEND_OPT_FENCE
               is only valid on MAD QPs.

       remote_qkey
               The qkey for the destination queue pair.

       resp_expected
               This field is used to indicate that the submitted operation expects
               a response.  When set, the access layer will retry this send operation
               until the corresponding response is successfully received, or the
               request times out.  Send operations for which a response is expected
               will always be completed by the access layer before the corresponding
               received response.

       timeout_ms
               Specifies the number of milliseconds to wait for a response to
               a request until retrying or timing out the request.  This field is
               ignored if resp_expected is set to FALSE.

       retry_cnt
               Specifies the number of times that the request will be retried
               before failing the request.  This field is ignored if resp_expected
               is set to FALSE.

       rmpp_version
               Indicates the version of the RMPP protocol to use when sending this
               MAD.  For MADs posted to MAD services of type IB_MAD_SVC_DEFAULT,
               setting this field to 0 disables RMPP on user-defined management
               classes or invokes the default RMPP version for well-defined management
               classes, if appropriate.  For MADs posted to MAD services of type
               IB_MAD_SVC_RMPP, setting this field to 0 disables RMPP on the sent
               MAD.  Note that if the RMPP header exists, but the RMPP protocol is
               not activated for this MAD, the user must ensure that the RMPP header
               has been zeroed.  This field is intended to help support backwards
               compatibility.

       status
               The result of the MAD work request.

       grh_valid
               A flag indicating whether the p_grh reference is valid.

       p_grh
               A reference to the global route header information.

       recv_opt
               Indicates optional fields valid as part of a work request that
               completed on an unreliable datagram queue pair.

       remote_lid
               The source LID of the received datagram.

       remote_sl
               The service level used by the source of the received datagram.

       pkey_index
               This is valid only for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.
               For received datagrams, this field contains the pkey index for
               the source queue pair.  For send operations, this field contains
               the pkey index to use when posting the send work request. 

       path_bits
               The portion of the remote_lid that may be changed to vary the path
               through the subnet to the remote port.

       send_context1
               If this datagram was received as a response to a sent datagram, this
               field contains the context1 value of the send operation.  If this is
               an unsolicited receive, this field will be 0.

       send_context2
               If this datagram was received as a response to a sent datagram, this
               field contains the context2 value of the send operation.  If this is
               an unsolicited receive, this field will be 0.

       remote_qp
               Identifies the source queue pair of a received datagram.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The format of data sent over the fabric is expected to be in the form
       of a MAD.  MADs are expected to match the format defined by the
       Infiniband specification and must be in network-byte order when posted
       to a MAD service.

       This structure is received to notify a user that a datagram has been
       received for a registered management class.  Information of the source
       of the data is provided, along with the data buffer.

       The MAD element structure is defined such that a received MAD element
       may be re-used as a sent response.  In such cases, the h_av field may be
       NULL.  The address vector will be created and destroyed by the access
       layer.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo89">ib_get_mad</a>, <a href="#robo164">ib_put_mad</a>, <a href="#robo207">ib_send_mad</a>, <a href="./ib_types_h.html#robo108">ib_local_ds_t</a>, <a href="./ib_types_h.html#robo208">ib_send_opt_t</a>,
       ib_pfn_mad_recv_cb_t, <a href="#robo90">ib_get_mad_buf</a>
</pre>
</span>
<hr />

<h2><a name="robo111">[Structures]<a name="Access20Layer2fib5fmad5fsvc5ft">
Access Layer/ib_mad_svc_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mad_svc_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to request management datagram support with a queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_mad_svc
{
        void                                            *mad_svc_context;
        <a href="#robo140">ib_pfn_mad_comp_cb_t</a>            pfn_mad_send_cb;
        <a href="#robo140">ib_pfn_mad_comp_cb_t</a>            pfn_mad_recv_cb;

        boolean_t                                       support_unsol;
        uint8_t                                         mgmt_class;
        uint8_t                                         mgmt_version;
        boolean_t                                       method_array[IB_MAX_METHODS];

        <a href="#robo112">ib_mad_svc_type_t</a>                       svc_type;

}       <strong>ib_mad_svc_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       mad_svc_context
               User-defined context that is returned by the access layer through
               the pfn_mad_send_cb and pfn_mad_recv_cb.

       pfn_mad_send_cb
               A send callback that is invoked to notify the user that a send
               operation has completed for a sent MAD.

       pfn_mad_recv_cb
               A receive callback that is invoked to notify the user that a MAD
               has been received.

       support_unsol
               If set to TRUE, this field indicates that the registering client
               supports processing unsolicited MADs.  Unsolicited MADs are
               received MADs that do not have the response bit set.  If set to TRUE,
               the following fields are required (must be non-zero): mgmt_class,
               mgmt_version, and method_array.

       mgmt_version
               Indicates which version of a management class the client requires
               support for.  The access layer distinguishes between clients
               requiring different versions of the same management class.
               This field is ignored if the support_unsol field is set to FALSE.

       mgmt_class
               Indicates the management class that should be supported by the
               access layer.  This field is ignored if the support_unsol field is
               set to FALSE.

       method_array
               An array of 127 entries specifying which methods are supported by
               a client when receiving unsolicited MADs.  Each index corresponds to
               a single method, and each entry in the array indicates if the method
               is supported by the client.  This field is ignored if the
               support_unsol field is set to FALSE.

       svc_type
               Indicates the type of services that should be provided by the MAD
               service.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Clients use this structure to define which management datagram methods
       they support, and the type of support required for each.  A received MAD
       is distinguished by the access layer based on the following three fields:
       management class, management version, and method.

       Specific combinations of class, version, and method may be registered
       for unsolicited MADs only once.  The access layer supports multiple
       clients registering for unsolicited MADs as long as they do not share the
       same methods, class, or version.

       The svc_type field can be set by a client to indicate that the access
       layer should invoke RMPP for the specified management class of MADs.  If
       set to IB_MAD_SVC_DEFAULT, the access layer will automatically invoke RMPP
       for well known MAD classes (those defined by the 1.1 version of the
       InfiniBand specification).  The svc_type field is intended to be used by
       clients sending and receiving vendor specific management class requiring
       RMPP and clients providing their own MAD services.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo188">ib_reg_mad_svc</a>, ib_pfn_mad_send_cb_t, ib_pfn_mad_recv_cb_t,
       <a href="#robo112">ib_mad_svc_type_t</a>
</pre>
</span>
<hr />

<h2><a name="robo112">[Definitions]<a name="Access20Layer2fib5fmad5fsvc5ftype5ft">
Access Layer/ib_mad_svc_type_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mad_svc_type_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Indicates the type of services provided by a MAD service.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef enum _ib_mad_svc_type
{
        IB_MAD_SVC_DEFAULT = 0,
        IB_MAD_SVC_RMPP,
        IB_MAD_SVC_RAW

}       <strong>ib_mad_svc_type_t</strong>;
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_MAD_SVC_DEFAULT
               Indicates that the access layer will provide all necessary services,
               including retransmissions and RMPP for well-defined management classes.

       IB_MAD_SVC_RMPP
               Indicates that the MAD service requires retransmissions and the RMPP
               header is available on all MADs.  (The RMPP protocol will be activated
               on a per send basis.)  This service type should be used for
               user-defined management classes requiring RMPP.

       IB_MAD_SVC_RAW
               Specifies that the MAD service will not perform retransmissions or
               perform RMPP.  All MADs received or sent on a MAD service of this type
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This enum is used to define the types of MAD services available to users.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo111">ib_mad_svc_t</a>, <a href="#robo188">ib_reg_mad_svc</a>
</pre>
</span>
<hr />

<h2><a name="robo113">[Structures]<a name="Access20Layer2fib5fmcast5frec5ft">
Access Layer/ib_mcast_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mcast_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information returned as a result of joining a multicast group.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_mcast_rec
{
        const void* __ptr64                     mcast_context;
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         status;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      error_status;

        ib_mcast_handle_t                       h_mcast;
        <a href="./ib_types_h.html#robo401">ib_member_rec_t</a>* __ptr64        p_member_rec;

}       <strong>ib_mcast_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       mcast_context
               User-defined context information associated with the multicast join
               request.

       status
               Indicates the success of the multicast group join operation.

       error_status
               Provide additional error information that was provided by the SA.
               This field is only valid if status is set to IB_REMOTE_ERROR.

       h_mcast
               Upon successful completion of a multicast join, this references a
               handle to the multicast group.  This handle is used to leave the
               multicast group.

       p_member_rec
               References a member record that provides information about the
               multicast group.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to a client through a callback to notify them
       of the result of a multicast join operation.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo102">ib_join_mcast</a>, <a href="#robo141">ib_pfn_mcast_cb_t</a>, <a href="#robo104">ib_leave_mcast</a>
</pre>
</span>
<hr />

<h2><a name="robo114">[Structures]<a name="Access20Layer2fib5fmcast5freq5ft">
Access Layer/ib_mcast_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mcast_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to join a multicast group.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_mcast_req
{
        boolean_t                                       create;
        <a href="./ib_types_h.html#robo401">ib_member_rec_t</a>                         member_rec;

        const void* __ptr64                     mcast_context;
        <a href="#robo141">ib_pfn_mcast_cb_t</a>                       pfn_mcast_cb;

        uint32_t                                        timeout_ms;
        uint32_t                                        retry_cnt;
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;
        uint16_t                                        pkey_index;

}       <strong>ib_mcast_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       create
               Indicates that the multicast group should be created if it does not
               already exist.

       member_rec
               Specifies the membership information of the multicast group to join
               or create.  The mgid and join state (scope_state) fields of the
               member record must be set.  In addition, if create is set to TRUE,
               the following fields must also be set: qkey, tclass, service level
               and flow label (sl_flow_hop), and pkey.  All other fields are ignored
               by the access layer.

       mcast_context
               User-defined context information associated with the join request.
               This context is returned to the user through the function specified
               by the pfn_mcast_cb field.

       pfn_mcast_cb
               A user-defined callback that is invoked upon completion of the
               join request.

       timeout_ms
               Specifies the number of milliseconds to wait for a response for
               the join request until retrying or timing out the request.

       retry_cnt
               Specifies the number of times that the join request will be retried
               before failing the request.

       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       port_guid
               Indicates the port that will join the multicast group.  The QP
               specified as part of the ib_join_mast call will bind to this port.

       pkey_index
               Specifies the pkey associated with this queue pair.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used when joining an existing multicast group or
       creating a new multicast group.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo102">ib_join_mcast</a>, <a href="#robo141">ib_pfn_mcast_cb_t</a>, <a href="./ib_types_h.html#robo370">ib_gid_t</a>
</pre>
</span>
<hr />

<h2><a name="robo115">[Functions]<a name="Access20Layer2fib5fmodify5fav">
Access Layer/ib_modify_av</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_modify_av</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing address vector.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_modify_av</strong>(
        IN              const   ib_av_handle_t                          h_av,
        IN              const   <a href="./ib_types_h.html#robo17">ib_av_attr_t</a>* const                     p_av_attr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_av
               [in] A handle to an existing address vector.

       p_av_attr
               [in] The new attributes to use when modifying the address vector.

 RETURN VALUES
       IB_SUCCESS
               The address vector was successfully modified.

       IB_INVALID_AV_HANDLE
               The address vector handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the address vector attributes structure was not
               provided.

       IB_INVALID_PORT
               The port number supplied, through the address vector attributes,
               was invalid for the given channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine modifies the attributes of an existing address vector.
       The new attributes are specified through the p_av_attr parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo64">ib_create_av</a>, <a href="#robo75">ib_destroy_av</a>
</pre>
</span>
<hr />

<h2><a name="robo116">[Functions]<a name="Access20Layer2fib5fmodify5fca">
Access Layer/ib_modify_ca</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_modify_ca</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes and violation counters associated with a port.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_modify_ca</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
        IN              const   uint8_t                                         port_num,
        IN              const   <a href="./ib_types_h.html#robo21">ib_ca_mod_t</a>                                     ca_mod,
        IN              const   <a href="./ib_types_h.html#robo159">ib_port_attr_mod_t</a>* const       p_port_attr_mod );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] A handle to an opened channel adapter.

       port_num
               [in] An index to the port that is being modified.  The port_num matches
               the index of the port as returned through the <a href="#robo173">ib_query_ca</a> call.

       ca_mod
               [in] A mask of the attributes and counters to modify.

       p_port_attr_mod
               [in] A list of the specific port attribute information to modify.  For
               the access layer to modify an attribute, its corresponding bit must be
               set in the ca_mod parameter.

 RETURN VALUES
       IB_SUCCESS
               The attributes were successfully modified.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INVALID_PORT
               The port number supplied was invalid for the given channel adapter.

       IB_INVALID_PARAMETER
               The supplied ca_mod mask is invalid or a reference to the port
               attribute information was not provided.

       IB_UNSUPPORTED
               The optional qkey and pkey violation counters are not supported by
               this channel adapter, but an attempt was made to modify them.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This call sets the attributes for a port in its associated PORT_INFO
       structure.  It will also reset pkey and qkey violation counters.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo124">ib_open_ca</a>, <a href="#robo173">ib_query_ca</a>, <a href="#robo28">ib_close_ca</a>, <a href="./ib_types_h.html#robo21">ib_ca_mod_t</a>, <a href="./ib_types_h.html#robo159">ib_port_attr_mod_t</a>
</pre>
</span>
<hr />

<h2><a name="robo117">[Functions]<a name="Access20Layer2fib5fmodify5fcq">
Access Layer/ib_modify_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_modify_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes associated with a completion queue, allowing the
       completion queue to be resized.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_modify_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        IN      OUT                     uint32_t* const                         p_size );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] A handle to an existing completion queue.

       p_size
               [in/out] Specifies the new size of the completion queue.  If the
               modify call is successful, the actual size of the completion queue
               will be returned.  The actual size of the CQ will be greater than or
               equal to the requested size.

 RETURN VALUES
       IB_SUCCESS
               The completion queue was successfully modified.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the completion queue size was not provided.

       IB_INVALID_CQ_SIZE
               The requested size of the completion queue was larger than the
               maximum supported by the associated channel adapter.

       IB_OVERFLOW
               The specified size of the completion queue is smaller than the number
               of work completions currently on the completion queue.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to modify the completion queue.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine allows a client to modify the size of a completion queue.
       If the new size is larger than what the associated channel adapter can
       support, an error is returned.  If the completion queue has valid
       completion entries on it and the requested size is smaller than the
       number of entries, an overflow error is returned and the modify
       operation is aborted.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>
</pre>
</span>
<hr />

<h2><a name="robo118">[Functions]<a name="Access20Layer2fib5fmodify5fqp">
Access Layer/ib_modify_qp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_modify_qp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_modify_qp</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN              const   <a href="./ib_types_h.html#robo167">ib_qp_mod_t</a>* const                      p_qp_mod );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an existing queue pair.

       p_qp_mod
               [in] The new attributes to use when modifying the queue pair.

 RETURN VALUES
       IB_SUCCESS
               The queue pair was successfully modified.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the queue pair attributes was not provided.

       IB_INVALID_SETTING
               The specified queue pair attributes were invalid.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the modify the queue pair.

       IB_UNSUPPORTED
               The requested modification was not supported.

       IB_INVALID_QP_STATE
               The queue pair was in an invalid state for the requested operation.

       IB_INVALID_PKEY
               The specified pkey was not valid.

       IB_INVALID_APM_STATE
               The specified automatic path migration state was not valid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine modifies the attributes of an existing queue pair and
       transitions it to a new state.  The new state and attributes are
       specified through the p_qp_mod parameter.  Upon successful completion,
       the queue pair is in the requested state.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_create_qp</a>, <a href="#robo80">ib_destroy_qp</a>, <a href="./ib_types_h.html#robo167">ib_qp_mod_t</a>
</pre>
</span>
<hr />

<h2><a name="robo122">[Structures]<a name="Access20Layer2fib5fmra5fpdata5ft">
Access Layer/ib_mra_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_mra_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a message receipt acknowledgement.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_mra_pdata
{
        uint8_t                                         data[IB_MRA_PDATA_SIZE];

}       <strong>ib_mra_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo123">[Functions]<a name="Access20Layer2fib5fopen5fal">
Access Layer/ib_open_al</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_open_al</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine opens an instance of the access layer for the user and
       returns its handle.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_open_al</strong>(
                OUT                     ib_al_handle_t* const           ph_al );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       ph_al
               [in] Upon successful completion of this call, this parameter will
               reference a handle to the access layer.

 RETURN VALUES
       IB_SUCCESS
               The access layer was opened successfully.

       IB_INVALID_PARAMETER
               A reference to the access layer handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function opens an instance of the access layer.  An instance of the
       access layer is required before allocating additional resources from the
       access layer or a channel adapter.  If successful, a handle to the access
       layer is returned.  User-mode clients should not call <strong>ib_open_al</strong> from the
       module initialization routine.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo27">ib_close_al</a>
</pre>
</span>
<hr />

<h2><a name="robo124">[Functions]<a name="Access20Layer2fib5fopen5fca">
Access Layer/ib_open_ca</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_open_ca</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Opens a channel adapter for additional access.  A channel adapter must
       be opened before consuming resources on that adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_open_ca</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      ca_guid,
        IN              const   <a href="#robo138">ib_pfn_event_cb_t</a>                       pfn_ca_event_cb OPTIONAL,
        IN              const   void* const                                     ca_context,
                OUT                     ib_ca_handle_t* const           ph_ca );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] The handle to an open instance of AL.

       ca_guid
               [in] The GUID of the channel adapter to open.

       pfn_ca_event_cb
               [in] A user-specified callback that is invoked after an
               asynchronous event has occurred on the channel adapter.

       ca_context
               [in] A client-specified context to associate with this opened instance
               of the channel adapter.  This context is returned to the user when
               invoking asynchronous callbacks referencing this channel adapter.

       ph_ca
               [out] Upon successful completion of this call, this references a
               handle to the opened channel adapter.

 RETURN VALUES
       IB_SUCCESS
               The operation was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_GUID
               No channel adapter in the system was found for the specified ca_guid.

       IB_INVALID_PARAMETER
               A reference to the CA handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to open the channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       When successful, this routine returns a handle to an open instance of a CA.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo173">ib_query_ca</a>, <a href="#robo116">ib_modify_ca</a>, <a href="#robo28">ib_close_ca</a>, <a href="#robo138">ib_pfn_event_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo126">[Functions]<a name="Access20Layer2fib5fpeek5fcq">
Access Layer/ib_peek_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_peek_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns the number of entries currently on the completion queue.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_peek_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        OUT                             uint32_t* const                         p_n_cqes );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] Handle to the completion queue to peek.

       p_n_cqes
               [out] Upon successful completion of this call, contains the number
               of completion queue entries currently on the completion queue.

 RETURN VALUES
       IB_SUCCESS
               The peek operation completed successfully.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the completion queue entry count was not provided.

       IB_UNSUPPORTED
               This operation is not supported by the channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The value returned is a snapshot of the number of compleiton queue
       entries curently on the completion queue.  Support for this operation
       is optional by a channel adapter vendor.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo158">ib_poll_cq</a>, <a href="#robo182">ib_rearm_cq</a>, <a href="#robo183">ib_rearm_n_cq</a>
</pre>
</span>
<hr />

<h2><a name="robo127">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fapr5fcb5ft">
Access Layer/ib_pfn_cm_apr_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_apr_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a load
       alternate path response message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_apr_cb_t</strong>)(
        IN                              <a href="#robo30">ib_cm_apr_rec_t</a>                         *p_cm_apr_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_apr_rec
               [in] Load alternate path response information sent by the remote side.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a load alternate path
       response.  If a response is not received within the specified timeout
       period, this callback will be invoked with the status set to IB_CM_TIMEOUT.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo29">ib_cm_apr</a>, <a href="#robo30">ib_cm_apr_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo128">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fdrep5fcb5ft">
Access Layer/ib_pfn_cm_drep_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_drep_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a disconnect
       reply message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_drep_cb_t</strong>)(
        IN                              <a href="#robo35">ib_cm_drep_rec_t</a>                        *p_cm_drep_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_drep_rec
               [in] Disconnect reply information returned to the user.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a disconnect reply.  If
       no reply was received within the specified timeout period, this callback
       will be invoked with the status set to IB_CM_TIMEOUT.

       In the kernel, this callback is typically invoked from within a
       tasklet, depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo37">ib_cm_dreq</a>, <a href="#robo34">ib_cm_drep</a>, <a href="#robo35">ib_cm_drep_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo129">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fdreq5fcb5ft">
Access Layer/ib_pfn_cm_dreq_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_dreq_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a disconnect
       request message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_dreq_cb_t</strong>)(
        IN                              <a href="#robo38">ib_cm_dreq_rec_t</a>                        *p_cm_dreq_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_dreq_rec
               [in] Disconnect request information returned to the user.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a disconnect request.
       Users must call <a href="#robo34">ib_cm_drep</a> to respond to the disconnect request.  After
       this callback returns, the queue pair associated with the connection is
       transitioned to the time-wait state and is no longer usable for sending
       and receiving data.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo45">ib_cm_listen</a>, <a href="#robo34">ib_cm_drep</a>, <a href="#robo38">ib_cm_dreq_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo130">[Functions]<a name="Access20Layer2fib5fpfn5fcm5flap5fcb5ft">
Access Layer/ib_pfn_cm_lap_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_lap_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a load
       alternate path message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_lap_cb_t</strong>)(
        IN                              <a href="#robo43">ib_cm_lap_rec_t</a>                         *p_cm_lap_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_lap_rec
               [in] Load alternate path information sent by the remote side.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a load alternate path
       request.  Users must call <a href="#robo29">ib_cm_apr</a> to respond to the load alternate
       path request from within this callback.  The <a href="#robo29">ib_cm_apr</a> call is used
       to accept or reject the load alternate path request.

       In the kernel, this callback is typically invoked from within a
       tasklet, depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo42">ib_cm_lap</a>, <a href="#robo29">ib_cm_apr</a>, <a href="#robo43">ib_cm_lap_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo131">[Functions]<a name="Access20Layer2fib5fpfn5fcm5fmra5fcb5ft">
Access Layer/ib_pfn_cm_mra_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_mra_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a message
       received acknowledgement.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_mra_cb_t</strong>)(
        IN                              <a href="#robo48">ib_cm_mra_rec_t</a>                         *p_cm_mra_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_mra_rec
               [in] Message received acknowledgement information received from the
               remote side.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user that their request was
       successfully received, but additional processing is required.  This
       callback may be invoked after calling <a href="#robo56">ib_cm_req</a> or <a href="#robo53">ib_cm_rep</a>

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo48">ib_cm_mra_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo132">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frej5fcb5ft">
Access Layer/ib_pfn_cm_rej_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_rej_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection
       rejection message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_rej_cb_t</strong>)(
        IN                              <a href="#robo51">ib_cm_rej_rec_t</a>                         *p_cm_rej_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_rej_rec
               [in] Connection rejection information returned to the user.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user that a connection has been
       rejected.  This routine may be invoked after calling <a href="#robo56">ib_cm_req</a> or
       <a href="#robo53">ib_cm_rep</a>.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo59">ib_cm_rtu</a>, <a href="#robo50">ib_cm_rej</a>, <a href="#robo51">ib_cm_rej_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo133">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frep5fcb5ft">
Access Layer/ib_pfn_cm_rep_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_rep_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection
       request reply message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_rep_cb_t</strong>)(
        IN                              <a href="#robo54">ib_cm_rep_rec_t</a>                         *p_cm_rep_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_rep_rec
               [in] Connection request reply information returned to the user,
               indicating the remote connection data.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a connection request reply.
       This routine is invoked after calling <a href="#robo56">ib_cm_req</a>.  Users must call
       <a href="#robo59">ib_cm_rtu</a> to accept the connection or <a href="#robo50">ib_cm_rej</a> to reject the connection
       from the callback.

       Users may also call <a href="#robo47">ib_cm_mra</a> to acknowledge the connection request reply
       and prevent the remote side from timing out the connection request.  The
       <a href="#robo47">ib_cm_mra</a> routine should be invoked if the user requires substantial
       processing time to process the connection request reply.

       If a reply is not received within the specified timeout period,
       this callback will be invoked with the status set to IB_CM_TIMEOUT.  Users
       may call <a href="#robo50">ib_cm_rej</a> to notify the remote side that the connection request
       is being rejected due to a timeout.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo45">ib_cm_listen</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo50">ib_cm_rej</a>, <a href="#robo47">ib_cm_mra</a>, <a href="#robo50">ib_cm_rej</a>,
       <a href="#robo54">ib_cm_rep_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo134">[Functions]<a name="Access20Layer2fib5fpfn5fcm5freq5fcb5ft">
Access Layer/ib_pfn_cm_req_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_req_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection
       request message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_req_cb_t</strong>)(
        IN                              <a href="#robo57">ib_cm_req_rec_t</a>                         *p_cm_req_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_req_rec
               [in] Connection request information returned to the user, indicating
               the parameters for the connection.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user of a connection request.  This
       routine is invoked for peer to peer connection request calls to <a href="#robo56">ib_cm_req</a>
       and for calls to <a href="#robo45">ib_cm_listen</a>.  Users must call <a href="#robo53">ib_cm_rep</a> to accept the
       connection or <a href="#robo50">ib_cm_rej</a> to reject the connection from the callback.

       Users may also call <a href="#robo47">ib_cm_mra</a> to acknowledge the connection request and
       prevent the remote side from timing out the connection request.  The
       <a href="#robo47">ib_cm_mra</a> routine should be invoked if the user requires substantial
       processing time to process the connection request.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo56">ib_cm_req</a>, <a href="#robo45">ib_cm_listen</a>, <a href="#robo53">ib_cm_rep</a>, <a href="#robo47">ib_cm_mra</a>, <a href="#robo50">ib_cm_rej</a>, <a href="#robo57">ib_cm_req_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo135">[Functions]<a name="Access20Layer2fib5fpfn5fcm5frtu5fcb5ft">
Access Layer/ib_pfn_cm_rtu_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_cm_rtu_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after receiving a connection
       ready to use message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_cm_rtu_cb_t</strong>)(
        IN                              <a href="#robo60">ib_cm_rtu_rec_t</a>                         *p_cm_rtu_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_cm_rtu_rec
               [in] Connection ready to use information returned to the user.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked to notify the user that a connection is ready
       to use.  This routine is invoked after calling <a href="#robo53">ib_cm_rep</a>.  If a ready to
       use message is not received within the specified timeout period, this
       callback will be invoked with the status set to IB_CM_TIMEOUT.

       This callback will be invoked before a user is notified of any completions
       that has occurred on the associated queue pair.

       In the kernel, this callback is typically invoked from within a tasklet,
       depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo53">ib_cm_rep</a>, <a href="#robo60">ib_cm_rtu_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo136">[Functions]<a name="Access20Layer2fib5fpfn5fcomp5fcb5ft">
Access Layer/ib_pfn_comp_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_comp_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Completion callback provided by a client.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_comp_cb_t</strong>)(
        IN              const   ib_cq_handle_t                          h_cq,
        IN                              void                                            *cq_context );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] Handle for the completion queue on which the completion occurred.

       cq_context
               [in] User-specified context for the completion queue on which the
               completion occurred.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function is invoked upon completion of a work request on a queue pair
       associated with the completion queue.  The context associated with the
       completion queue on which the completion occurred is return to the client
       through the callback.

       In the kernel, this callback is usually invoked using a tasklet, dependent
       on the implementation of the underlying verbs provider driver.
</pre>
</span>
<hr />

<h2><a name="robo137">[Functions]<a name="Access20Layer2fib5fpfn5fdestroy5fcb5ft">
Access Layer/ib_pfn_destroy_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_destroy_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Asynchronous callback invoked after a resource has been successfully
       destroyed.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_destroy_cb_t</strong>)(
        IN                              void                                            *context );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       context
               [in] User-specified context associated with the resource being
               destroyed.  The context for the resource is usually set during the
               object's creation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback notifies a client that a resource has been successfully
       destroyed.  It is used to indicate that all pending callbacks associated
       with the resource have completed, and no additional events will be
       generated for that resource.

       This callback is invoked within a system thread context in the kernel.

       If the user specifies <a href="#robo216">ib_sync_destroy</a> as the asynchronous callback, then
       the object being destroyed will be destroyed synchronously.  This may 
       result in the calling thread blocking while outstanding callbacks complete.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo216">ib_sync_destroy</a>
</pre>
</span>
<hr />

<h2><a name="robo138">[Functions]<a name="Access20Layer2fib5fpfn5fevent5fcb5ft">
Access Layer/ib_pfn_event_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_event_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after an asynchronous event
       has occurred on an allocated resource.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_event_cb_t</strong>)(
        IN                              <a href="#robo15">ib_async_event_rec_t</a>            *p_event_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_event_rec
               [in] Information returned to the user, indicating the type of
               event and the associated user context.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked within a system thread context in the kernel.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo15">ib_async_event_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo139">[Functions]<a name="Access20Layer2fib5fpfn5flisten5ferr5fcb5ft">
Access Layer/ib_pfn_listen_err_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_listen_err_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       A user-specified callback that is invoked after an error has occurred on
       a listen request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_listen_err_cb_t</strong>)(
        IN                              <a href="#robo106">ib_listen_err_rec_t</a>                     *p_listen_err_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_listen_err_rec
               [in] Error information returned to the user, indicating the reason
               for the error and associated context information.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This callback is invoked within a system thread context in the kernel.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       p_listen_err_rec
</pre>
</span>
<hr />

<h2><a name="robo140">[Functions]<a name="Access20Layer2fib5fpfn5fmad5fcomp5fcb5ft">
Access Layer/ib_pfn_mad_comp_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_mad_comp_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback used to notify the user of a completion for a
       sent or received datagram.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_mad_comp_cb_t</strong>)(
        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
        IN                              void                                            *mad_svc_context,
        IN                              <a href="#robo110">ib_mad_element_t</a>                        *p_mad_element );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mad_svc
               [in] Handle to the MAD service on which the completion occured.

       mad_svc_context
               [in] User-defined context information associated with the MAD service
               on which the completion occurred.

       p_mad_element
               [in] References information on the completed MAD request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function is invoked upon completion of a sent or receive MAD.
       It is separate from the normal completion callbacks in order to allow
       the access layer to perform post processing on the MAD, such as
       segmentation and reassembly, and retransmissions if a response was
       expected.

       The mad element returned through this call should be returned to its MAD
       pool after completion processing on the MAD has concluded.  Completed
       receive MAD elements should not be reposted to the receive queue of a
       MAD QP.

       In the kernel, this callback is typically invoked from within a
       tasklet, depending on the implementation of the verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo207">ib_send_mad</a>, <a href="#robo188">ib_reg_mad_svc</a>
</pre>
</span>
<hr />

<h2><a name="robo141">[Functions]<a name="Access20Layer2fib5fpfn5fmcast5fcb5ft">
Access Layer/ib_pfn_mcast_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_mcast_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a multicast join request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_mcast_cb_t</strong>)(
        IN                              <a href="#robo113">ib_mcast_rec_t</a>                          *p_mcast_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_mcast_rec
               [in] References the result of the join operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The callback is used to notify a client of the result of a multicast
       join request.

       This callback is invoked within a system thread context in the kernel.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo102">ib_join_mcast</a>, <a href="#robo113">ib_mcast_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo142">[Functions]<a name="Access20Layer2fib5fpfn5fpnp5fcb5ft">
Access Layer/ib_pfn_pnp_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_pnp_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of the addition
       or removal of a channel adapter, a port up or down event, port changes,
       and the assignment of an I/O controller to a local port.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef <a href="./ib_types_h.html#robo9">ib_api_status_t</a>
(AL_API * __ptr64 <strong>ib_pfn_pnp_cb_t</strong>)(
        IN                              <a href="#robo156">ib_pnp_rec_t</a>                            *p_pnp_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_pnp_rec
               [in] A reference to a plug and play record.  The plug and play
               record contains details about the type of local event that has
               occurred, along with the relevant device information.

 RETURN VALUES
       IB_SUCCESS
               Indicates to the PnP manager that the callback client requires it
               to maintain a context for this event.

       Other
               Indicates to the PnP manager that the callback client does not need
               a context for this event.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The callback is used to notify users of local events that have occurred
       on a given channel adapter.  Information about the type of event that
       occurred along with the associated device is returned to the user through
       the p_pnp_rec parameter.

       Users register for plug and play changes by requesting notification from
       the access layer.  Users may register for notifications either by directly
       invoking the appropriate function in the access layer, or indirectly by
       adding the necessary registration data to the access layer device file.

       This callback is invoked from within a system thread context.

       If the callback returns a status other than IB_SUCCESS, no further
       callback for related events will be delivered.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo156">ib_pnp_rec_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo199">ib_reject_ioc</a>
</pre>
</span>
<hr />

<h2><a name="robo143">[Functions]<a name="Access20Layer2fib5fpfn5fquery5fcb5ft">
Access Layer/ib_pfn_query_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_query_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a subnet administrator
       query.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_query_cb_t</strong>)(
        IN                              <a href="#robo179">ib_query_rec_t</a>                          *p_query_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_query_rec
               [in] This is a reference to a structure containing the result of the
               query.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine is invoked to notify a client of the result of a subnet
       administration query.  The p_query_rec parameter references the result
       of the query and, in the case of a successful query, any information
       returned by the subnet administrator.

       In the kernel, this callback is usually invoked using a tasklet, dependent
       on the implementation of the underlying verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo179">ib_query_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo144">[Functions]<a name="Access20Layer2fib5fpfn5freg5fsvc5fcb5ft">
Access Layer/ib_pfn_reg_svc_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_reg_svc_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of the result
       of a service registration attempt.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_reg_svc_cb_t</strong>)(
        IN                              <a href="#robo195">ib_reg_svc_rec_t</a>                        *p_reg_svc_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_reg_svc_rec
               [in] References the result of the service registration attempt.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The callback is used to notify a client of the result of a service
       registration attempt with the subnet administrator.

       In the kernel, this callback is usually invoked using a tasklet, dependent
       on the implementation of the underlying verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo194">ib_reg_svc</a>, <a href="#robo195">ib_reg_svc_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo145">[Functions]<a name="Access20Layer2fib5fpfn5freport5fcb5ft">
Access Layer/ib_pfn_report_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_report_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback that is invoked to notify a client of an event
       that has occurred on the fabric.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_report_cb_t</strong>)(
        IN                              <a href="#robo202">ib_report_rec_t</a>                         *p_report_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_report_rec
               [in] A reference to an event report.  The report contains
               details about the type of event that has occurred, along with the
               relevant device information.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       The callback is used to notify users of remote events that have been seen
       by a specified class manager.  Information about the type of event that
       occurred along with the associated device is returned to the user through
       the p_report_rec parameter.

       Users register for device changes by subscribing with a class manager.
       Users may subscribe for events either by directly invoking the
       appropriate function in the access layer, or indirectly by adding the
       necessary registration data to the access layer device file.

       This callback is invoked from within a system thread context.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo202">ib_report_rec_t</a>, <a href="#robo215">ib_subscribe</a>, <a href="#robo217">ib_unsubscribe</a>
</pre>
</span>
<hr />

<h2><a name="robo146">[Functions]<a name="Access20Layer2fib5fpfn5fsub5fcb5ft">
Access Layer/ib_pfn_sub_cb_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pfn_sub_cb_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined callback invoked on completion of a subscription request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef void
(AL_API * __ptr64 <strong>ib_pfn_sub_cb_t</strong>)(
        IN                              <a href="#robo213">ib_sub_rec_t</a>                            *p_sub_rec );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_sub_rec
               [in] This is a reference to a structure containing the result of the
               subscription request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine is invoked to notify a client of the result of a
       subscription request with a class manager.  If the subscription request
       was successful, the client will receive future notifications of the
       subscribed event from the class manager.

       This callback will always be invoked before a client receives information
       reported on a subscribed event that has occurred.

       In the kernel, this callback is usually invoked using a tasklet, dependent
       on the implementation of the underlying verbs provider driver.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo215">ib_subscribe</a>, <a href="#robo213">ib_sub_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo149">[Structures]<a name="Access20Layer2fib5fpnp5fca5frec5ft">
Access Layer/ib_pnp_ca_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_ca_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ca_rec
{
        <a href="#robo156">ib_pnp_rec_t</a>                            pnp_rec;
        <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>* __ptr64           p_ca_attr;

}       <strong>ib_pnp_ca_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_rec
               Structure describing the plug and play event being reported.

       p_ca_attr
               Attributes of the channel adapter that has experienced the event.
               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE
               events.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition
       or the removal of a channel adapter.

       The context field is NULL unless a context value has already been set
       by the user.

       Context values can be changed by updating the appropriate field
       and will be take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.

       Recipients of CA-related PnP events should cast the <a href="#robo156">ib_pnp_rec_t</a> structure
       returned in the PnP callback to this type to access CA-specific information.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo150">[Definitions]<a name="Access20Layer2fib5fpnp5fclass5ft">
Access Layer/ib_pnp_class_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_class_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Specifies the class of plug and play events that are being subscribed for.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#define IB_PNP_CA                                               0x00000001
#define IB_PNP_PORT                                             0x00000002
#define IB_PNP_IOU                                              0x00000004
#define IB_PNP_IOC                                              0x00000008

#define IB_PNP_FLAG_REG_SYNC                    0x40000000
#define IB_PNP_FLAG_REG_COMPLETE                0x80000000
#define IB_PNP_FLAG_MASK                                0xF0000000
#define IB_PNP_CLASS_MASK                               0x000000FF

typedef uint32_t        <strong>ib_pnp_class_t</strong>;
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_PNP_CA
               Value used to register for local channel adapter events.  These
                events include the addition or removal of a local channel adapter.

       IB_PNP_PORT
               Value used to register for local port events.  These events include
               local port up or down events and port LID or Pkey changes.

       IB_PNP_IOU
               Value used to register for I/O unit PnP events.  I/O unit events
               include notifications of I/O unit assignment to and dissociation from
               the local host.

       IB_PNP_IOC
               Value used to register for an I/O controller PnP event.  I/O controller
               events include notification of an I/O controller assignment to a local
               port and indication that an I/O controller dissociation has occurred.

       IB_PNP_FLAG_REG_SYNC
               Flag that is ORed with the PnP Class to control behavior of the
               ib_pnp_reg call.  When set, ib_pnp_reg returns after client has
               received all events for the current state of the system.

       IB_PNP_FLAG_REG_COMPLETE
               Flag that is ORed with the PnP Class to control whether an event
               is generated to indicate that a client has received all events for the
               current state of the system.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       When registering for PnP notification, a client specifies the class of
       local events that the client wishes to be notified of.  For example to
       request notification of events on a port, a client would use IB_PNP_PORT.
       To be notified of the assignment of an I/O controller, a client would use
       IB_PNP_IOC.

       The PnP APIs do not support registration for multiple event classes at
       a time.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_pfn_pnp_cb_t</a>, <a href="#robo145">ib_pfn_report_cb_t</a>, <a href="#robo156">ib_pnp_rec_t</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo151">[Definitions]<a name="Access20Layer2fib5fpnp5fevent5ft">
Access Layer/ib_pnp_event_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_event_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Indicates the type of plug and play event that has occurred.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>#define IB_PNP_EVENT_PATH                               0x00000800
#define IB_PNP_EVENT_ADD                                0x00001000
#define IB_PNP_EVENT_REMOVE                             0x00002000
#define IB_PNP_EVENT_CHANGE                             0x00004000
#define IB_PNP_EVENT_INIT                               0x00008000
#define IB_PNP_EVENT_ARMED                              0x00010000
#define IB_PNP_EVENT_ACTIVE                             0x00020000
#define IB_PNP_EVENT_DOWN                               0x00040000
#define IB_PNP_EVENT_PKEY                               0x00080000
#define IB_PNP_EVENT_SM                                 0x00100000
#define IB_PNP_EVENT_GID                                0x00200000
#define IB_PNP_EVENT_LID                                0x00400000
#define IB_PNP_EVENT_SUBNET                             0x00800000

#define IB_PNP_CA_ADD                                   (IB_PNP_CA | IB_PNP_EVENT_ADD)
#define IB_PNP_CA_REMOVE                                (IB_PNP_CA | IB_PNP_EVENT_REMOVE)

#define IB_PNP_PORT_ADD                                 (IB_PNP_PORT | IB_PNP_EVENT_ADD)
#define IB_PNP_PORT_REMOVE                              (IB_PNP_PORT | IB_PNP_EVENT_REMOVE)
#define IB_PNP_PORT_INIT                                (IB_PNP_PORT | IB_PNP_EVENT_INIT)
#define IB_PNP_PORT_ARMED                               (IB_PNP_PORT | IB_PNP_EVENT_ARMED)
#define IB_PNP_PORT_ACTIVE                              (IB_PNP_PORT | IB_PNP_EVENT_ACTIVE)
#define IB_PNP_PORT_DOWN                                (IB_PNP_PORT | IB_PNP_EVENT_DOWN)
#define IB_PNP_PKEY_CHANGE                              (IB_PNP_PORT | IB_PNP_EVENT_PKEY)
#define IB_PNP_SM_CHANGE                                (IB_PNP_PORT | IB_PNP_EVENT_SM)
#define IB_PNP_GID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_GID)
#define IB_PNP_LID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_LID)
#define IB_PNP_SUBNET_TIMEOUT_CHANGE    (IB_PNP_PORT | IB_PNP_EVENT_SUBNET)

#define IB_PNP_IOU_ADD                                  (IB_PNP_IOU | IB_PNP_EVENT_ADD)
#define IB_PNP_IOU_REMOVE                               (IB_PNP_IOU | IB_PNP_EVENT_REMOVE)
#define IB_PNP_IOC_ADD                                  (IB_PNP_IOC | IB_PNP_EVENT_ADD)
#define IB_PNP_IOC_REMOVE                               (IB_PNP_IOC | IB_PNP_EVENT_REMOVE)
#define IB_PNP_IOC_PATH_ADD                             (IB_PNP_IOC | IB_PNP_EVENT_PATH | \
                                                                                IB_PNP_EVENT_ADD)
#define IB_PNP_IOC_PATH_REMOVE                  (IB_PNP_IOC | IB_PNP_EVENT_PATH | \
                                                                                IB_PNP_EVENT_REMOVE)

#define IB_PNP_REG_COMPLETE                             IB_PNP_FLAG_REG_COMPLETE

typedef uint32_t        <strong>ib_pnp_event_t</strong>;
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_PNP_CA_ADD
               Indicates that a new channel adapter has been added.

       IB_PNP_CA_REMOVE
               Indicates that a channel adapter has been removed.

       IB_PNP_PORT_ADD
               Indicates that a new port has been added.  This callback will always
               be followed by a callback to indicate the actual port state to allow
               clients to use the PnP callbacks to drive their state machine.

       IB_PNP_PORT_REMOVE
               Indicates that a port has been removed.
               A CA remove event will trigger this event first.

       IB_PNP_PORT_INIT
               Indicates that a port is in the IB_LINK_INIT state.

       IB_PNP_PORT_ARMED
               Indicates that a port is in the IB_LINK_ARMED state.

       IB_PNP_PORT_ACTIVE
               Indicates that a port is in the IB_LINK_ACTIVE state.

       IB_PNP_PORT_DOWN
               Indicates that a port down event has occurred.

       IB_PNP_PKEY_CHANGE
               Indicates that port Pkey change has ocurred.

       IB_PNP_SM_CHANGE
               Indicates that the SM assignment for a port has changed.

       IB_PNP_GID_CHANGE
               Indicates that the GID assignment for a port has changed.

       IB_PNP_LID_CHANGE
               Indicates that the LID or LMC assignment for a port has changed.

       IB_PNP_SUBNET_TIMEOUT_CHANGE
               Indicates that the subnet timeout assignment for a port has changed.

       IB_PNP_IOU_ADD
               Indicates that an I/O unit assignment has occured.

       IB_PNP_IOU_REMOVE
               Indicates that an I/O unit disassociation has occured.

       IB_PNP_IOC_ADD
               Indicates that an I/O controller assignment has occurred.

       IB_PNP_IOC_REMOVE
               Indicates that an I/O controller dissociation has occurred.
               A port down event will trigger this event first.

       IB_PNP_IOC_PATH_ADD
               Indicates that a new path to an I/O controller is available.

       IB_PNP_IOC_PATH_REMOVE
               Indiactes that a path to an I/O controller is no longer avaialble.

       IB_PNP_REG_COMPLETE
               Indicates that all events associated with a <a href="#robo191">ib_reg_pnp</a> call have been
               reported to the user.  The user's state of the system is now in
               sync with that of the access layer.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>               The Access Layer maintains a queue of client PnP registrations.
               Using this queue, PnP events are reported to clients in a specific
               order.  CA add, port add, and IOC add events are reported from the
               head of the queue, while CA remove, port remove, and IOC remove events
               are reported from the tail.  Clients are responsible for performing
               registrations in the proper sequence to ensure that PnP event
               notifiations occur in the desired order.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_pfn_pnp_cb_t</a>, <a href="#robo145">ib_pfn_report_cb_t</a>, <a href="#robo156">ib_pnp_rec_t</a>, <a href="#robo150">ib_pnp_class_t</a>
</pre>
</span>
<hr />

<h2><a name="robo152">[Structures]<a name="Access20Layer2fib5fpnp5fioc5fpath5frec5ft">
Access Layer/ib_pnp_ioc_path_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_ioc_path_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,
       and I/O controller events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ioc_path_rec
{
        <a href="#robo156">ib_pnp_rec_t</a>                            pnp_rec;
        net64_t                                         ca_guid;
        net64_t                                         port_guid;
        <a href="./ib_types_h.html#robo441">ib_path_rec_t</a>                           path;

}       <strong>ib_pnp_ioc_path_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_rec
               Structure describing the plug and play event being reported.

       ca_guid
               GUID of the local HCA through which the I/O controller is accessible.
               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.

       port_guid
               GUID of the local HCA port through which the I/O controller is
               accessible.  Valid only for IB_PNP_IOC_PATH_ADD and
               IB_PNP_IOC_PATH_REMOVE events.

       p_path
               Path record that provides connectivity with a given I/O controller.
               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition
       and removal of a path to an I/O controller.  I/O controller path
       notifications are only delivered with respect to a previously reported
       I/O controller.

       The context field is NULL unless a context value has already been set
       by the user.

       Context values can be changed by updating the appropriate field
       and will be take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.  Context is maintained between port down and subsequent port up
       events provided that the channel adapter is not removed.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo153">[Structures]<a name="Access20Layer2fib5fpnp5fioc5frec5ft">
Access Layer/ib_pnp_ioc_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_ioc_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,
       and I/O controller events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_ioc_rec
{
        <a href="#robo156">ib_pnp_rec_t</a>                            pnp_rec;
        net64_t                                         ca_guid;
        ib_ioc_info_t                           info;
        <a href="./ib_types_h.html#robo481">ib_svc_entry_t</a>                          svc_entry_array[1];

}       <strong>ib_pnp_ioc_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_rec
               Structure describing the plug and play event being reported.

       ca_guid
               GUID of the local HCA through which the I/O controller is accessible.
               Valid only for IB_PNP_IOC_ADD events.

       p_ioc_info
               The I/O controller information for an assigned controller, including
               information for the I/O unit.  Valid only for IB_PNP_IOC_ADD events.

       svc_entry_array
               If an I/O controller is being reported, this will reference an array
               of service entries associated with the I/O controller.  The actual
               number of entries in the array may be determined by examining the
               svc_entries field in the I/O controller profile.  Valid only for
               IB_PNP_IOC_ADD events.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition
       and removal of an I/O controller.

       The context field is NULL unless a context value has already been set
       by the user.

       Context values can be changed by updating the appropriate field
       and will be take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.  Context is maintained between port down and subsequent port up
       events provided that the channel adapter is not removed.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo154">[Structures]<a name="Access20Layer2fib5fpnp5fiou5frec5ft">
Access Layer/ib_pnp_iou_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_iou_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local I/O unit events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_iou_rec
{
        <a href="#robo156">ib_pnp_rec_t</a>                            pnp_rec;
        net64_t                                         ca_guid;
        net64_t                                         chassis_guid;
        uint8_t                                         slot;
        net32_t                                         vend_id;
        net16_t                                         dev_id;
        net32_t                                         revision;
        char                                            desc[IB_NODE_DESCRIPTION_SIZE + 1];

}       <strong>ib_pnp_iou_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_rec
               Structure describing the plug and play event being reported.

       ca_guid
               GUID of the local HCA through which the I/O unit is accessible.  Valid
               only for IB_PNP_IOU_ADD events.

       chassis guid
               GUID of the chassis in which an I/O unit is installed.  Valid only for
               IB_PNP_IOU_ADD events.

       slot
               Chassis slot number in which an I/O unit is installed.  Valid only for
               IB_PNP_IOU_ADD events.

       guid
               GUID of an I/O unit from which one or more I/O controllers are assigned
               to this host.  Valid only for IB_PNP_IOU_ADD events.

       vend_id
               Vendor ID of an I/O unit from which one or more I/O controllers are
               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.

       dev_id
               Device ID of an I/O unit from which one or more I/O controllers are
               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.

       revision
               Revision of an I/O unit from which one or more I/O controllers are
               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.

       desc
               Node description string for an I/O unit from which one or more I/O
               controllers are assigned to this host.  Valid only for IB_PNP_IOU_ADD
               events.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of the addition
       and removal of an I/O Unit.

       The context field is NULL unless a context value has already been set
       by the user.

       Context values can be changed by updating the appropriate field
       and will be take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.  Context is maintained between port down and subsequent port up
       events provided that the channel adapter is not removed.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo155">[Structures]<a name="Access20Layer2fib5fpnp5fport5frec5ft">
Access Layer/ib_pnp_port_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_port_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local port events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_port_rec
{
        <a href="#robo156">ib_pnp_rec_t</a>                            pnp_rec;
        <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>* __ptr64           p_ca_attr;
        <a href="./ib_types_h.html#robo160">ib_port_attr_t</a>* __ptr64         p_port_attr;

}       <strong>ib_pnp_port_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_rec
               Structure describing the plug and play event being reported.

       p_ca_attr
               Attributes of the channel adapter that has experienced the event.
               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE
               events.

       p_port_attr
               Attributes of the port that has experienced the event.  Valid only
               for IB_PNP_PORT_UP, IB_PNP_PORT_DOWN, IB_PNP_PKEY_CHANGE, and
               IB_PNP_IOC_ADD events.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of port events.

       The context field is NULL unless a context value has already been set
       by the user.

       Context values can be changed by updating the appropriate field
       and will be take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.  Context is maintained between port down and subsequent port up
       events provided that the channel adapter is not removed.

       Recipients of port related PnP events should cast the <a href="#robo156">ib_pnp_rec_t</a> structure
       returned in the PnP callback to this type to access port specific information.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo156">[Structures]<a name="Access20Layer2fib5fpnp5frec5ft">
Access Layer/ib_pnp_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Notification information used to describe local channel adapter, port,
       and I/O controller events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_rec
{
        <a href="#robo151">ib_pnp_event_t</a>                          pnp_event;

        ib_pnp_handle_t                         h_pnp;
        ib_pnp_handle_t                         h_ioc_event;

        void* __ptr64                           pnp_context;
        void* __ptr64                           context;

        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      guid;

}       <strong>ib_pnp_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_event
               Describes the type of plug and play event that is being reported.

       h_pnp
               A handle to the notification registration for which this PnP record
               was generated.  This handle will match the handle returned through
               an <a href="#robo191">ib_reg_pnp</a> call.  It is provided in case a PnP notification event
               occurs before a client's call to <a href="#robo191">ib_reg_pnp</a> can return.  This handle
               may be used to cancel further notification of PnP events.

       h_ioc_event
               A handle that is unique to an I/O controller assignment event.
               This handle is used to reject the assignment of an I/O controller
               from within the <a href="#robo142">ib_pfn_pnp_cb_t</a> callback.  Valid for IB_PNP_IOC_ADD
               events only.

       pnp_context
               User-defined context information specified when registering for
               notification of the event.  See the notes section below for
               more details.

       context
               This field references a user-specified context on which the event
               occurred.  See the notes section below for more details.

       guid
               The GUID of the adapter, port, IOU, or IOC for which
               the PnP event occurred.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of: the addition
       of a channel adapter, the removal of a channel adapter, a port up or down
       event, a port pkey change, and I/O controller addition and removal events.

       The context field is NULL unless a context value has already been set
       by the user.

       The context value can be changed by updating its field
       and will take effect once the notification callback returns.

       Once a device has been removed, all context associated with that device
       is lost.  Context is maintained between port down and subsequent port up
       events provided that the channel adapter is not removed.

       I/O controller path notifications are only delivered with respect to a
       previously reported I/O controller.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo123">ib_open_al</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>,
       ib_ioc_info_t, <a href="#robo199">ib_reject_ioc</a>, <a href="#robo151">ib_pnp_event_t</a>
</pre>
</span>
<hr />

<h2><a name="robo157">[Structures]<a name="Access20Layer2fib5fpnp5freq5ft">
Access Layer/ib_pnp_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_pnp_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to register for notification of local and I/O
       controller assignment events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_pnp_req
{
        <a href="#robo150">ib_pnp_class_t</a>                          pnp_class;
        const void                                      *pnp_context;
        <a href="#robo142">ib_pfn_pnp_cb_t</a>                         pfn_pnp_cb;

}       <strong>ib_pnp_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       pnp_class
               Specifies the class of PnP events that the client wishes to be
               notified of.

       pnp_context
               User-defined context information associated with this notification.
               The context data is returned to the user as a part of their PnP
               notification callback.

       pfn_pnp_cb
               User-defined callback function that is invoked to notify the user of
               the occurrance of a plug and play event.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used when requesting notification of local events from
       the access layer.  The class of PnP events which to be notified of is
       specified through the pnp_class field.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo150">ib_pnp_class_t</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>, <a href="#robo191">ib_reg_pnp</a>, <a href="#robo156">ib_pnp_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo158">[Functions]<a name="Access20Layer2fib5fpoll5fcq">
Access Layer/ib_poll_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_poll_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Checks a completion queue for completed work requests.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_poll_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        IN      OUT                     <a href="./ib_types_h.html#robo220">ib_wc_t</a>** const                         pp_free_wclist,
                OUT                     <a href="./ib_types_h.html#robo220">ib_wc_t</a>** const                         pp_done_wclist );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] A handle to a completion queue to check for completions on.

       pp_free_wclist
               [in/out] On input, a list of work completion structures provided by
               the client.  These are used to report completed work requests through
               the pp_done_wclist.

               On output, this contains the list of work completions structures for
               which no work completion was found.

       pp_done_wclist
               [out] A list of work completions retrieved from the completion queue.

 RETURN VALUES
       IB_SUCCESS
               The poll operation completed successfully.  If the work completion
               structures referenced by the pp_free_wclist list is empty there are
               potentially more completions available to retrieve.

       IB_INVALID_PARAMETER
               A reference to the free or done work completion list was not provided.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.

       IB_NOT_FOUND
               No completed work requests were removed from the completion queue.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine retrieves completed work requests from the specified
       completion queue.  This call will retrieve all completed requests,
       up to to the number of work completion structures referenced by the
       pp_free_wclist.  Completed requests will be returned through the
       pp_done_wclist parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo163">ib_post_send</a>, <a href="#robo162">ib_post_recv</a>, <a href="#robo18">ib_bind_mw</a>, <a href="./ib_types_h.html#robo220">ib_wc_t</a>
</pre>
</span>
<hr />

<h2><a name="robo162">[Functions]<a name="Access20Layer2fib5fpost5frecv">
Access Layer/ib_post_recv</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_post_recv</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine posts a work request to the receive queue of a queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_post_recv</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN                              <a href="./ib_types_h.html#robo185">ib_recv_wr_t</a>* const                     p_recv_wr,
                OUT                     <a href="./ib_types_h.html#robo185">ib_recv_wr_t</a>                            **pp_recv_failure OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] The queue pair to which this work request is being submitted.

       p_recv_wr
               [in] A reference to the head of the work request list.

       pp_recv_failure
               [out] If the post receive operation failed, this references the work
               request in the p_recv_wr list where the first failure occurred.
               This parameter may be NULL if only a single work request is being
               posted to the QP.

 RETURN VALUES
       IB_SUCCESS
               All work requests were successfully posted.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the receive work request list was not provided.

       IB_INSUFFICIENT_RESOURCES
               The number of posted work requests exceed the current depth available
               on the receive queue.

       IB_INVALID_WR_TYPE
               The work request type was invalid.

       IB_INVALID_QP_STATE
               The current queue pair state does not allow posting receives.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine posts a work request to the receive queue of a queue pair.
       The type of work to perform is defined by the p_recv_wr parameter.  This
       call is used to post data buffers to receive incoming message sends.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo185">ib_recv_wr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo163">[Functions]<a name="Access20Layer2fib5fpost5fsend">
Access Layer/ib_post_send</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_post_send</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine posts a work request to the send queue of a queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_post_send</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN                              <a href="./ib_types_h.html#robo209">ib_send_wr_t</a>* const                     p_send_wr,
                OUT                     <a href="./ib_types_h.html#robo209">ib_send_wr_t</a>                            **pp_send_failure OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] The queue pair to which this work request is being submitted.

       p_send_wr
               [in] A reference to the head of the work request list.

       pp_send_failure
               [out] If the post send operation failed, this references the work
               request in the p_send_wr list where the first failure occurred.
               This parameter may be NULL if only a single work request is being
               posted to the QP.

 RETURN VALUES
       IB_SUCCESS
               All work requests were successfully posted.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the send work request list was not provided.

       IB_INSUFFICIENT_RESOURCES
               The number of posted work requests exceed the current depth available
               on the send queue.

       IB_INVALID_WR_TYPE
               The work request type was invalid.

       IB_INVALID_QP_STATE
               The current queue pair state does not allow posting sends.

       IB_INVALID_MAX_SGE
               The number of work request scatter gather elements exceed the queue
               pair configuration.

       IB_UNSUPPORTED
               The requested operation is not supported by the channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine posts a work request to the send queue of a queue pair.
       The type of work to perform is defined by the p_send_wr parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="./ib_types_h.html#robo209">ib_send_wr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo164">[Functions]<a name="Access20Layer2fib5fput5fmad">
Access Layer/ib_put_mad</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_put_mad</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns a list of MAD elements to the pool.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_put_mad</strong>(
        IN              const   <a href="#robo110">ib_mad_element_t</a>*                       p_mad_element_list );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       p_mad_element_list
               [in] A pointer to a list of MAD elements.

 RETURN VALUES
       IB_SUCCESS
               The list of MAD elements was successfully returned to the MAD pool.

       IB_INVALID_PARAMETER
               A reference to the MAD element list was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function returns a list of MAD elements to the pool.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo89">ib_get_mad</a>, <a href="#robo110">ib_mad_element_t</a>
</pre>
</span>
<hr />

<h2><a name="robo171">[Functions]<a name="Access20Layer2fib5fquery">
Access Layer/ib_query</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to request an access layer provided query of the subnet
       administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="#robo180">ib_query_req_t</a>* const           p_query_req,
                OUT                     ib_query_handle_t* const        ph_query OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       p_query_req
               [in] Specifies the type of query that the access layer should perform,
               along with information needed to process the completed query.

       ph_query
               [out] Pointer to a query handle that can be used to cancel the query.

 RETURN VALUES
       IB_SUCCESS
               The subnet administrator query was initiated.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the query request was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_INVALID_GUID
               No port was found for the port_guid specified in the request.

       IB_ERROR
               An invalid query_type was specified in the request.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine directs the access layer to initiate a query to the subnet
       administrator for desired information.  The access layer will issue the
       query, collect the results, and report them to the client through a user-
       specified callback.  The access layer is responsible for retrying the
       operation as directed by the client.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo23">ib_cancel_query</a>, <a href="#robo180">ib_query_req_t</a>
</pre>
</span>
<hr />

<h2><a name="robo172">[Functions]<a name="Access20Layer2fib5fquery5fav">
Access Layer/ib_query_av</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_av</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns the attributes of an address vector.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_av</strong>(
        IN              const   ib_av_handle_t                          h_av,
                OUT                     <a href="./ib_types_h.html#robo17">ib_av_attr_t</a>* const                     p_av_attr,
                OUT                     ib_pd_handle_t* const           ph_pd );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_av
               [in] A handle to an existing address vector.

       p_av_attr
               [out] Upon successful completion, the structure referenced by this
               parameter contains the attributes of the specified address vector.

       ph_pd
               [out] Upon successful completion, this references a handle to the
               protection domain associated with the address vector.

 RETURN VALUES
       IB_SUCCESS
               The attributes were returned successfully.

       IB_INVALID_AV_HANDLE
               The address vector handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the address vector attributes structure or protection
               domain handle was not provided.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo64">ib_create_av</a>, <a href="#robo115">ib_modify_av</a>, <a href="#robo75">ib_destroy_av</a>, <a href="./ib_types_h.html#robo17">ib_av_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo173">[Functions]<a name="Access20Layer2fib5fquery5fca">
Access Layer/ib_query_ca</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_ca</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Queries the attributes of an opened channel adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_ca</strong>(
        IN              const   ib_ca_handle_t                          h_ca,
                OUT                     <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>* const                     p_ca_attr OPTIONAL,
        IN      OUT                     uint32_t* const                         p_size );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ca
               [in] The handle to an open channel adapter.

       p_ca_attr
               [out] A reference to a buffer where the channel adapter attributes,
               including port attribute information will be copied.  If this parameter
               is NULL, then the required buffer size needed to return all of the CA
               attribute information is returned through the p_size parameter.  The
               <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a> structure for the specified channel adapter is stored
               at the top of the buffer.

       p_size
               [in/out] On input, this references the size of the data buffer
               referenced by the p_ca_attr parameter.

               On output, the number of bytes used or needed to copy all CA
               attribute information.

 RETURN VALUES
       IB_SUCCESS
               The attributes were returned successfully.

       IB_INVALID_CA_HANDLE
               The channel adapter handle was invalid.

       IB_INSUFFICIENT_MEMORY
               The size of the p_ca_attr buffer, specified through p_size, is
               insufficient to store all of the CA attribute information.

       IB_INVALID_PARAMETER
               A reference to the size was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns information about the specified channel adapter,
       including port attributes.  The amount of information returned through
       this call is variable sized.  Users may obtain the size of the data
       buffer required to obtain the CA attributes by calling this function
       with p_ca_attr set to NULL.  The access layer will then return the
       necessary size in the variable referenced by the p_size parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo124">ib_open_ca</a>, <a href="#robo174">ib_query_ca_by_guid</a>, <a href="#robo116">ib_modify_ca</a>, <a href="#robo28">ib_close_ca</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo174">[Functions]<a name="Access20Layer2fib5fquery5fca5fby5fguid">
Access Layer/ib_query_ca_by_guid</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_ca_by_guid</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Queries the attributes of an opened channel adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_ca_by_guid</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      ca_guid,
                OUT                     <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>* const                     p_ca_attr OPTIONAL,
        IN      OUT                     uint32_t* const                         p_size );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] The handle to an open instance of AL.

       ca_guid
               [in] The GUID of the channel adapter to query.

       p_ca_attr
               [out] A reference to a buffer where the channel adapter attributes,
               including port attribute information will be copied.  If this parameter
               is NULL, then the required buffer size needed to return all of the CA
               attribute information is returned through the p_size parameter.  The
               <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a> structure for the specified channel adapter is stored
               at the top of the buffer.

       p_size
               [in/out] On input, this references the size of the data buffer
               referenced by the p_ca_attr parameter.

               On output, the number of bytes used or needed to copy all CA
               attribute information.

 RETURN VALUES
       IB_SUCCESS
               The attributes were returned successfully.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_GUID
               No channel adapter in the system was found for the specified ca_guid.

       IB_INSUFFICIENT_MEMORY
               The size of the p_ca_attr buffer, specified through p_size, is
               insufficient to store all of the CA attribute information.

       IB_INVALID_PARAMETER
               A reference to the size was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns information about the specified channel adapter,
       including port attributes.  The amount of information returned through
       this call is variable sized.  Users may obtain the size of the data
       buffer required to obtain the CA attributes by calling this function
       with p_ca_attr set to NULL.  The access layer will then return the
       necessary size in the variable referenced by the p_size parameter.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo124">ib_open_ca</a>, <a href="#robo173">ib_query_ca</a>, <a href="#robo116">ib_modify_ca</a>, <a href="#robo28">ib_close_ca</a>, <a href="./ib_types_h.html#robo20">ib_ca_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo175">[Functions]<a name="Access20Layer2fib5fquery5fcq">
Access Layer/ib_query_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Returns information about the specified completion queue.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_cq</strong>(
        IN              const   ib_cq_handle_t          h_cq,
        OUT             uint32_t* const                         p_size );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] A handle to an existing completion queue.

       p_size
               [out] Upon successful completion of this call, contains the actual
               size of the completion queue.

 RETURN VALUES
       IB_SUCCESS
               The completion queue was successfully queried.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the completion queue size was not provided.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>
</pre>
</span>
<hr />

<h2><a name="robo176">[Functions]<a name="Access20Layer2fib5fquery5fmr">
Access Layer/ib_query_mr</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_mr</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Query the current attributes of a memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_mr</strong>(
        IN              const   ib_mr_handle_t                          h_mr,
                OUT                     <a href="./ib_types_h.html#robo119">ib_mr_attr_t</a>* const                     p_mr_attr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mr
               [in] A handle to a registered memory region.

       p_mr_attr
               [out] A reference to a structure where the registered memory attributes
               will be copied.

 RETURN VALUES
       IB_SUCCESS
               The memory region attributes were returned successfully.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the memory region attributes was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns information about the specified registered memory
       region.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo72">ib_dereg_mr</a>, <a href="#robo189">ib_reg_mem</a>, <a href="#robo192">ib_reg_shared</a>, <a href="./ib_types_h.html#robo119">ib_mr_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo177">[Functions]<a name="Access20Layer2fib5fquery5fmw">
Access Layer/ib_query_mw</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_mw</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Query the current attributes of a memory window.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_mw</strong>(
        IN              const   ib_mw_handle_t                          h_mw,
                OUT                     ib_pd_handle_t* const           ph_pd,
                OUT                     net32_t* const                          p_rkey );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mw
               [in] A handle to an existing memory window.

       ph_pd
               [out] Upon successful completion of this call, this will reference
               the protection domain associated with this memory window.

       p_rkey
               [out] Upon successful completion of this call, this will reference
               the current rkey associated with this memory window.

 RETURN VALUES
       IB_SUCCESS
               The memory window attributes were returned successfully.

       IB_INVALID_MW_HANDLE
               The memory window handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the protection domain handle or rkey was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns information about the specified memory window.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo68">ib_create_mw</a>
</pre>
</span>
<hr />

<h2><a name="robo178">[Functions]<a name="Access20Layer2fib5fquery5fqp">
Access Layer/ib_query_qp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_qp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Query the current attributes of the queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_query_qp</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
                OUT                     <a href="./ib_types_h.html#robo165">ib_qp_attr_t</a>* const                     p_qp_attr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to an existing queue pair.

       p_qp_attr
               [out] Upon successful completion of this call, the structure
               referenced by this parameter contains the attributes of the specified
               quere pair.

 RETURN VALUES
       IB_SUCCESS
               The queue pair attributes were returned successfully.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the queue pair attributes structure was not provided.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine returns information about the specified queue pair.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_create_qp</a>, <a href="#robo118">ib_modify_qp</a>, <a href="./ib_types_h.html#robo165">ib_qp_attr_t</a>
</pre>
</span>
<hr />

<h2><a name="robo179">[Structures]<a name="Access20Layer2fib5fquery5frec5ft">
Access Layer/ib_query_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Contains the results of a subnet administration query.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_query_rec
{
        const void* __ptr64                     query_context;
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         status;

        <a href="#robo181">ib_query_type_t</a>                         query_type;
        uint32_t                                        result_cnt;
        <a href="#robo110">ib_mad_element_t</a>* __ptr64       p_result_mad;

}       <strong>ib_query_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       query_context
               User-defined context information associated with the query through
               the ib_reg_query call.

       status
               Indicates the success of the query operation.

       query_type
               Indicates the type of query for which the results are being returned.
               This matches the query_type specified through the ib_reg_query call.

       result_cnt
               The number of result structures that were returned by the query.

       p_result_mad
               For queries returning IB_SUCCESS or IB_REMOTE_ERROR, this references
               the MAD returned by the subnet administrator containing the list
               of results or the returned error code.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       A query result structure is returned to a client through their
       <a href="#robo143">ib_pfn_query_cb_t</a> routine to notify them of the results of a subnet
       administration query.  If the query was successful or received an error
       from the subnet administrator, p_result_mad will reference a MAD element
       containing the results.  The MAD referenced by p_result_mad is owned by
       the user and remains available even after their callback returns.  Users
       must call <a href="#robo164">ib_put_mad</a>() to return the MAD element back to the access layer
       when they are done accessing the results.

       To retrieve individual result structures from the p_result_mad, users
       may call <a href="#robo95">ib_get_query_result</a>().
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo171">ib_query</a>, <a href="#robo143">ib_pfn_query_cb_t</a>, <a href="./ib_types_h.html#robo9">ib_api_status_t</a>, <a href="#robo164">ib_put_mad</a>, <a href="#robo110">ib_mad_element_t</a>
       ib_query_status_t, <a href="#robo181">ib_query_type_t</a>, <a href="#robo95">ib_get_query_result</a>
</pre>
</span>
<hr />

<h2><a name="robo180">[Structures]<a name="Access20Layer2fib5fquery5freq5ft">
Access Layer/ib_query_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to request an access layer provided query of the subnet
       administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_query_req
{
        <a href="#robo181">ib_query_type_t</a>                         query_type;
        const void* __ptr64                     p_query_input;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;

        uint32_t                                        timeout_ms;
        uint32_t                                        retry_cnt;
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        const void* __ptr64                     query_context;
        <a href="#robo143">ib_pfn_query_cb_t</a>                       pfn_query_cb;

}       <strong>ib_query_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       query_type
               Indicates the type of query that the access layer should perform.

       p_query_input
               A pointer to the input for the query.  The data referenced by this
               structure is dependent on the type of query being requested and is
               determined by the specified query_type.

       port_guid
               Directs the query to use the specified port.  The request will
               contact the management entity reachable through the given port.

       timeout_ms
               Specifies the number of milliseconds to wait for a response for
               this query until retrying or timing out the request.

       retry_cnt
               Specifies the number of times that the query will be retried before
               failing the request.

       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       query_context
               User-defined context information associated with this query.  The
               context data is returned to the user as a part of their query
               callback.

       pfn_query_cb
               A user-defined callback that is invoked upon completion of the query.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used when requesting an access layer provided query
       of the subnet administrator.  Clients specify the type of query through
       the query_type field.  Based on the type of query, the p_query_input
       field is set to reference the appropriate data structure.

       The information referenced by the p_query_input field is one of the
       following:

               -- a NULL terminated service name
               -- a service id
               -- a single GUID
               -- a pair of GUIDs specified through an <a href="#robo99">ib_guid_pair_t</a> structure
               -- a pair of GIDs specified through an <a href="#robo98">ib_gid_pair_t</a> structure
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo181">ib_query_type_t</a>, <a href="#robo143">ib_pfn_query_cb_t</a>, <a href="#robo99">ib_guid_pair_t</a>,
       <a href="#robo98">ib_gid_pair_t</a>
</pre>
</span>
<hr />

<h2><a name="robo181">[Definitions]<a name="Access20Layer2fib5fquery5ftype5ft">
Access Layer/ib_query_type_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_definitions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_query_type_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Abstracted queries supported by the access layer.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef enum _ib_query_type
{
        IB_QUERY_USER_DEFINED,

        IB_QUERY_ALL_SVC_RECS,
        IB_QUERY_SVC_REC_BY_NAME,
        IB_QUERY_SVC_REC_BY_ID,

        IB_QUERY_CLASS_PORT_INFO,

        IB_QUERY_NODE_REC_BY_NODE_GUID,
        IB_QUERY_PORT_REC_BY_LID,

        IB_QUERY_VLARB_BY_LID_PORT_BLOCK,
        IB_QUERY_SLVL_BY_LID_AND_PORTS,

        IB_QUERY_PATH_REC_BY_PORT_GUIDS,
        IB_QUERY_PATH_REC_BY_GIDS,
        IB_QUERY_PATH_REC_BY_LIDS,

}       <strong>ib_query_type_t</strong>;
</pre>
</span><p><strong>VALUES</strong></p>
<span class="VALUES"><pre>       IB_QUERY_USER_DEFINED
               Query the SA based on user-defined input.  Queries of this type
               should reference an <a href="#robo218">ib_user_query_t</a> structure as input into the
               query.

       IB_QUERY_SVC_REC_BY_NAME
               Query for service records based on the service name.  Queries of
               this type should reference an ib_svc_name_t structure as input
               into the query.

       IB_QUERY_SVC_REC_BY_ID
               Query for service records based on the service ID.  Queries of
               this type should reference an <a href="./ib_types_h.html#robo409">ib_net64_t</a> value that indicates the
               ID of the service being requested.

       IB_QUERY_NODE_REC_BY_NODE_GUID
               Query for node information based on the node's GUID.  Queries of
               this type should reference an <a href="./ib_types_h.html#robo409">ib_net64_t</a> value that indicates the
               GUID of the node being requested.

       IB_QUERY_PORT_REC_BY_LID
               Query for port information based on the port's base LID.  Queries of
               this type should reference an <a href="./ib_types_h.html#robo407">ib_net16_t</a> value that indicates the
               base LID of the port being requested.

       IB_QUERY_PATH_REC_BY_PORT_GUIDS
               Query for path records between the specified pair of port GUIDs.
               Queries of this type should reference an <a href="#robo99">ib_guid_pair_t</a> structure
               that indicates the GUIDs of the path being requested.

       IB_QUERY_PATH_REC_BY_GIDS
               Query for path records between the specified pair of port GIDs.
               Queries of this type should reference an <a href="#robo98">ib_gid_pair_t</a> structure
               that indicates the GIDs of the path being requested.

       IB_QUERY_PATH_REC_BY_LIDS
               Query for path records between the specified pair of port LIDs.
               Queries of this type should reference an <a href="#robo105">ib_lid_pair_t</a> structure
               that indicates the LIDs of the path being requested.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This enum is used to define abstracted queries provided by the access
       layer.  Users may issue queries not listed here by sending MADs directly
       to the subnet administrator or a class manager.  These queries are
       intended to represent those most often used by clients.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo171">ib_query</a>, <a href="#robo180">ib_query_req_t</a>, <a href="#robo218">ib_user_query_t</a>, <a href="#robo98">ib_gid_pair_t</a>, <a href="#robo105">ib_lid_pair_t</a>
       <a href="#robo99">ib_guid_pair_t</a>
</pre>
</span>
<hr />

<h2><a name="robo182">[Functions]<a name="Access20Layer2fib5frearm5fcq">
Access Layer/ib_rearm_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rearm_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This indicates that the completion queue should notify the client when
       the next completion is added.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_rearm_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        IN              const   boolean_t                                       solicited );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] Handle to the completion queue to rearm.

       solicited
               [in] A flag indicating whether the request is to generate a
               notification on the next entry, if set to FALSE, or on the next
               solicited entry being added to the completion queue, if set to TRUE.

 RETURN VALUES
       IB_SUCCESS
               The completion queue rearm request was registered successfully.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine instructs the channel interface to invoke the completion
       handler when the next completion queue entry is added to this CQ.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo126">ib_peek_cq</a>, <a href="#robo158">ib_poll_cq</a>, <a href="#robo183">ib_rearm_n_cq</a>
</pre>
</span>
<hr />

<h2><a name="robo183">[Functions]<a name="Access20Layer2fib5frearm5fn5fcq">
Access Layer/ib_rearm_n_cq</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rearm_n_cq</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This indicates that the completion queue should notify the client when
       the next N completions have been added to this CQ.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_rearm_n_cq</strong>(
        IN              const   ib_cq_handle_t                          h_cq,
        IN              const   uint32_t                                        n_cqes );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_cq
               [in] Handle to the completion queue to rearm.

       n_cqes
               [in] The number of completion queue entries to be added to the
               completion queue before notifying the client.  This value must
               greater than or equal to one and less than or equal to the size
               of the completion queue.

 RETURN VALUES
       IB_SUCCESS
               The completion queue rearm request was registered successfully.

       IB_INVALID_CQ_HANDLE
               The completion queue handle was invalid.

       IB_INVALID_PARAMETER
               The requested number of completion queue entries was invalid.

       IB_UNSUPPORTED
               This operation is not supported by the channel adapter.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine instructs the channel interface to invoke the completion
       handler when the next N completions have been added to this CQ regardless
       of the completion type (solicited or unsolicited).  Any CQ entries that
       existed before the rearm is enabled will not result in a call to the
       handler.  Support for this operation is optional by a channel adapter
       vendor.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo65">ib_create_cq</a>, <a href="#robo126">ib_peek_cq</a>, <a href="#robo158">ib_poll_cq</a>, <a href="#robo182">ib_rearm_cq</a>
</pre>
</span>
<hr />

<h2><a name="robo186">[Functions]<a name="Access20Layer2fib5freg5fioc">
Access Layer/ib_reg_ioc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_ioc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers an I/O controller with the local device manager, which will
       export the controller to the fabric.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_ioc</strong>(
        IN              const   ib_ioc_handle_t                         h_ioc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_ioc
               [in] A handle to the controller being registered.

 RETURN VALUES
       IB_SUCCESS
               The I/O controller was successfully registered.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the I/O controller.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the I/O
               unit to register the I/O controller.

       IB_INVALID_HANDLE
               The I/O controller handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers an I/O controller with the local device manager.
       The device manager exports the controller to the fabric as part of an
       I/O unit.  Typically, clients will call <a href="#robo6">ib_add_svc_entry</a> to add services
       to the controller before registering it with the device manager.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo66">ib_create_ioc</a>, <a href="#robo77">ib_destroy_ioc</a>, <a href="#robo6">ib_add_svc_entry</a>
</pre>
</span>
<hr />

<h2><a name="robo187">[Functions]<a name="Access20Layer2fib5freg5fmad5fpool">
Access Layer/ib_reg_mad_pool</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_mad_pool</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers a MAD pool for use with a protection domain.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_mad_pool</strong>(
        IN              const   ib_pool_handle_t                        h_pool,
        IN              const   ib_pd_handle_t                          h_pd,
                OUT                     ib_pool_key_t* const            p_pool_key );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pool
               [in] A handle to a MAD pool.

       h_pd
               [in] A handle to a protection domain.

       p_pool_key
               [out] A key associated with registering the MAD pool with the
               protection domain.  This key is returned to the user and is used
               when retrieving MADs from the pool.

 RETURN VALUES
       IB_SUCCESS
               The MAD pool was successfully registered with the protection domain.

       IB_INVALID_HANDLE
               The MAD pool handle was invalid.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the pool key was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the MAD pool.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the MAD pool.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This function registers a MAD pool with a protection domain.  After
       successful completion of this call, the MAD elements of the associated
       pool are usable on any queue pairs associated with the given protection
       domain.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo67">ib_create_mad_pool</a>, <a href="#robo78">ib_destroy_mad_pool</a>, <a href="#robo71">ib_dereg_mad_pool</a>, <a href="#robo89">ib_get_mad</a>
</pre>
</span>
<hr />

<h2><a name="robo188">[Functions]<a name="Access20Layer2fib5freg5fmad5fsvc">
Access Layer/ib_reg_mad_svc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_mad_svc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Requests management datagram support for a specified class with a
       queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_mad_svc</strong>(
        IN              const   ib_qp_handle_t                          h_qp,
        IN              const   <a href="#robo111">ib_mad_svc_t</a>* const                     p_mad_svc,
                OUT                     ib_mad_svc_handle_t* const      ph_mad_svc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_qp
               [in] A handle to queue pair.  The queue pair must have been created
               as one of the following types: IB_QPT_QP0, IB_QPT_QP0_ALIAS,
               IB_QPT_QP1, IB_QPT_QP1_ALIAS, or IB_QPT_MAD.

       p_mad_svc
               [in] A reference to the management class and methods supported by
               this queue pair.

       ph_mad_svc
               [out] On successful completion of this call, this references a
               handle to the newly created MAD service.

 RETURN VALUES
       IB_SUCCESS
               The queue pair was registered successfully.

       IB_INVALID_QP_HANDLE
               The queue pair handle was invalid.

       IB_INVALID_PARAMETER
               The queue pair handle was not created with the proper queue pair
               type or a reference to the MAD service information or handle was
               not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the queue pair.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers a queue pair as using a particular management
       class.  This indicates that the access layer should perform additional
       processing on MADs sent and received by this queue pair.  Queue pairs
       registered for MAD support receive access layer SAR and retransmissions
       services.  A queue pair may be registered for multiple management classes.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo69">ib_create_qp</a>, <a href="#robo111">ib_mad_svc_t</a>
</pre>
</span>
<hr />

<h2><a name="robo189">[Functions]<a name="Access20Layer2fib5freg5fmem">
Access Layer/ib_reg_mem</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_mem</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers a virtual memory region with a channel adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_mem</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>* const           p_mr_create,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
                OUT                     ib_mr_handle_t* const           ph_mr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an existing protection domain that the memory
               should be registered with.

       p_mr_create
               [in] Information describing the memory region to register.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing
               RDMA or atomic operations to this registered memory region.

       ph_mr
               [out] Upon successful completion of this call, this references a
               handle to the registered memory region.  This handle is used when
               performing data transfers and to deregister the memory.

 RETURN VALUES
       IB_SUCCESS
               The memory region was successfully registered.

       IB_INVALID_PD_HANDLE
               The protection domain to associate with the memory region was invalid.

       IB_INVALID_PARAMETER
               A reference to the memory region information, lkey, rkey, or handle
               was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the memory region.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers a virtual memory region with a channel adapter.
       Memory must be registered before being used in a data transfer operation.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo72">ib_dereg_mr</a>, <a href="#robo190">ib_reg_phys</a>, <a href="#robo192">ib_reg_shared</a>, <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo190">[Functions]<a name="Access20Layer2fib5freg5fphys">
Access Layer/ib_reg_phys</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_phys</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers a physical memory region with a channel adapter.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_phys</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo147">ib_phys_create_t</a>* const         p_phys_create,
        IN      OUT                     uint64_t* const                         p_vaddr,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
                OUT                     ib_mr_handle_t* const           ph_mr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an existing protection domain that the memory
               should be registered with.

       p_phys_create
               [in] Information describing the memory region to register.

       p_vaddr
               [in/out] On input, references the requested virtual address for the
               start of the physical region.  On output, references the actual
               virtual address assigned to the registered region.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing
               RDMA or atomic operations to this registered memory region.

       ph_mr
               [out] Upon successful completion of this call, this references a
               handle to the registered memory region.  This handle is used when
               performing data transfers and to deregister the memory.

 RETURN VALUES
       IB_SUCCESS
               The physical memory region was successfully registered.

       IB_INVALID_PD_HANDLE
               The protection domain to associate with the physical memory region
               was invalid.

       IB_INVALID_PARAMETER
               A reference to the physical memory region information, virtual address,
               lkey, rkey, or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the physical memory region.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the physical memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers an array of physical pages as a single virtually
       contiguous region with a channel adapter.  Memory must be registered
       before being used in a data transfer operation.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo72">ib_dereg_mr</a>, <a href="#robo189">ib_reg_mem</a>, <a href="#robo192">ib_reg_shared</a>, <a href="./ib_types_h.html#robo147">ib_phys_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo191">[Functions]<a name="Access20Layer2fib5freg5fpnp">
Access Layer/ib_reg_pnp</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_pnp</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to register for notification of local and I/O controller
       assignment events.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_pnp</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="#robo157">ib_pnp_req_t</a>* const                     p_pnp_req,
                OUT                     ib_pnp_handle_t* const          ph_pnp );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       p_pnp_req
               [in] Specifies the type of events that the user wishes to be notified
               of, along with information needed to process the completed query.

       ph_pnp
               [out] Upon successful completion of this call, this references a handle
               to the PnP notification request.  This handle may be used to cancel the
               notification registration.

 RETURN VALUES
       IB_SUCCESS
               The PnP registration was successful.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the PnP request information or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register for PnP notification.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers the calling client with the access layer for
       notification of locally occurring events, or the assignment of I/O
       controllers to a local device.  Once registered, a client will receive
       notification, via a callback, that a given event has occurred on a
       local device.  Clients may restrict the types of events and devices
       that are reported.  The p_pnp_req parameter is used to indicate which
       device events to report to the user.

       Upon invoking this routine, the client may receive a callback through
       the <a href="#robo142">ib_pfn_pnp_cb_t</a> routine to notify them of the current system state.
       For example, if a client registers for notification of port up events,
       then the access layer will notify the client of all available ports when
       this routine is first invoked.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo73">ib_dereg_pnp</a>, <a href="#robo157">ib_pnp_req_t</a>, <a href="#robo156">ib_pnp_rec_t</a>, <a href="#robo142">ib_pfn_pnp_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo192">[Functions]<a name="Access20Layer2fib5freg5fshared">
Access Layer/ib_reg_shared</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_shared</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers a memory region that has the same physical pages as an
       existing registered memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_shared</strong>(
        IN              const   ib_mr_handle_t                          h_mr,
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="./ib_types_h.html#robo5">ib_access_t</a>                                     access_ctrl,
        IN      OUT                     uint64_t* const                         p_vaddr,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
                OUT                     ib_mr_handle_t* const           ph_mr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mr
               [in] A handle to an existing registered memory region that this
               registration should share physical pages with.

       h_pd
               [in] Handle to the PD on which memory is being registered

       access_ctrl
               [in] Access rights of the registered region.

       p_vaddr
               [in/out] On input, this specifies the requested virtual address for the
               start of the physical region.  On output, this references the actual
               virtual address assigned to the registered region.  This is always a
               64-bit quantity to support registering more than 4GB of memory on
               32-bit systems with PAE.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing RDMA
               or atomic operations to this registered memory region.

       ph_mr
               [out] Upon successful completion of this call, this references a handle
               to the registered memory region.  This handle is used when performing
               data transfers and to deregister the memory.

 RETURN VALUES
       IB_SUCCESS
               The shared memory region was successfully registered.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the virtual address, lkey, rkey, or handle was not
               provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the shared memory region.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the shared memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers a memory region that shares the same set of
       physical pages associated with an existing registered memory region.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo72">ib_dereg_mr</a>, <a href="#robo189">ib_reg_mem</a>, <a href="#robo190">ib_reg_phys</a>, <strong>ib_reg_shared</strong>, <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo193">[Functions]<a name="Access20Layer2fib5freg5fshmid">
Access Layer/ib_reg_shmid</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_shmid</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Registers a memory region to be shared across multiple processes.
       The memory is referenced by a shared memory identifier.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_shmid</strong>(
        IN              const   ib_pd_handle_t                          h_pd,
        IN              const   <a href="#robo210">ib_shmid_t</a>                                      shmid,
        IN              const   <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>* const           p_mr_create,
                OUT                     uint64_t* const                         p_vaddr,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
                OUT                     ib_mr_handle_t* const           ph_mr );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_pd
               [in] A handle to an existing protection domain that the memory
               should be registered with.

       shmid
               [in] An identifier for the shared memory region.

       p_mr_create
               [in] Information describing the attributes of the memory region to
               register.

       p_vaddr,
               [out] The HCA assigned, HCA relative virtual address for the
               memory region.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing RDMA
               or atomic operations to this registered memory region.

       ph_mr
               [out] Upon successful completion of this call, this references a handle
               to the registered memory region.  This handle is used when performing
               data transfers and to deregister the memory.

 RETURN VALUES
       IB_SUCCESS
               The shared memory region was successfully registered.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the memory region information, lkey, rkey, or handle
               was not provided.

       IB_INVALID_SETTING
               The length and page mapping for the memory region do not match those
               of the region identified by the provided SHMID.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to register the shared memory region.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to register the shared memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers a memory region that is shared between processes.
       The region being registered is identified through a shared memory
       identifier.  The registered region shares hardware resources as much
       as possible.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo72">ib_dereg_mr</a>, <a href="#robo189">ib_reg_mem</a>, <a href="#robo192">ib_reg_shared</a>, <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo194">[Functions]<a name="Access20Layer2fib5freg5fsvc">
Access Layer/ib_reg_svc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_svc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Routine used to register for a service with the subnet administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reg_svc</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="#robo196">ib_reg_svc_req_t</a>* const         p_reg_svc_req,
                OUT                     ib_reg_svc_handle_t* const      ph_reg_svc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       p_reg_svc_req
               [in] Describes the service to register with the subnet administrator.

       ph_reg_svc
               [out] Pointer to a service registration handle, used to deregister
               the service.  Set upon successful completion of the function.

 RETURN VALUES
       IB_SUCCESS
               The service registration was initiated.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the service registration request was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_NOT_FOUND
               No channel adapters in the system contain the GID specified in the
               service record.

       IB_INVALID_GID
               No port was found matching the GID specified in the service record.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers a service with the subnet administrator.  Registered
       services are reported by the subnet administrator to clients querying the
       subnet administrator for service information.

       Once registered, a client will receive notification, via a callback,
       that a service has been successfully registered.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo74">ib_dereg_svc</a>, <a href="#robo196">ib_reg_svc_req_t</a>
</pre>
</span>
<hr />

<h2><a name="robo195">[Structures]<a name="Access20Layer2fib5freg5fsvc5frec5ft">
Access Layer/ib_reg_svc_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       _<strong>ib_reg_svc_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information returned as a result of registering a service with the subnet
       administrator.  This includes name service registration.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_reg_svc_rec
{
        const void* __ptr64                     svc_context;
        ib_reg_svc_handle_t                     h_reg_svc;
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         req_status;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                                      resp_status;
        ib_service_record_t                     svc_rec;

}       <strong>ib_reg_svc_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_context
               User-defined context information associated with the registration
               through the <a href="#robo194">ib_reg_svc</a> call.

       req_status
               Indicates the success of the registration operation.

       resp_status
               Indicates the status of the response from the SA

       h_reg_svc
               For successful queries, this references the first record of
               information returned by the subnet administrator.  If multiple
               records of information were returned, the <strong>ib_reg_svc_rec_t</strong> will
               be chained together.

       svc_rec
               The service record returned by the SA for the registered service.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       A query result structure is returned to a client through their
       <a href="#robo143">ib_pfn_query_cb_t</a> routine to notify them of the results of a subnet
       administration query.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo194">ib_reg_svc</a>, <a href="#robo144">ib_pfn_reg_svc_cb_t</a>, ib_reg_svc_status_t
</pre>
</span>
<hr />

<h2><a name="robo196">[Structures]<a name="Access20Layer2fib5freg5fsvc5freq5ft">
Access Layer/ib_reg_svc_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reg_svc_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to request that a service be registered with the subnet
       administrator.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_reg_svc_req
{
        ib_service_record_t                     svc_rec;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;

        uint32_t                                        timeout_ms;
        uint32_t                                        retry_cnt;
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        const void                                      *svc_context;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      svc_data_mask;

        <a href="#robo144">ib_pfn_reg_svc_cb_t</a>                     pfn_reg_svc_cb;

}       <strong>ib_reg_svc_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       svc_rec
               Service record that describes the service being registered.

       port_guid
               Directs the registration to use the specified port.  The request will
               contact the management entity reachable through the given port.

       timeout_ms
               Specifies the number of milliseconds to wait for a response for
               the registration until retrying or timing out the request.

       retry_cnt
               Specifies the number of times that the registration will be retried
               before failing the request.

       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       svc_context
               User-defined context information associated with this registration
               request.  This context is returned to the user through the function
               specified by the pfn_reg_svc_cb field.

       svc_data_mask
               User-defined component mask indicating which parts of the private
               data is populated. This is used as an extension to the svc_id
               for data compare. Also used as a cheap way to communicate data
               to all clients for this service.

       pfn_reg_svc_cb
               A user-defined callback that is invoked upon completion of the
               registration request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to register a service with the subnet administrator.
       The registration call operates asynchronously unless the flags field is
       set to IB_FLAGS_SYNC.  If synchronous operation is indicated, the client
       will receive a callback with the results of the registration attempt
       before the <a href="#robo194">ib_reg_svc</a> call returns.  Synchronous operation results in
       the calling thread blocking.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo194">ib_reg_svc</a>, ib_svc_rec_t, <a href="#robo144">ib_pfn_reg_svc_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo197">[Structures]<a name="Access20Layer2fib5frej5fpdata5ft">
Access Layer/ib_rej_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rej_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a connection reject message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_rej_pdata
{
        uint8_t                                         data[IB_REJ_PDATA_SIZE];

}       <strong>ib_rej_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo199">[Functions]<a name="Access20Layer2fib5freject5fioc">
Access Layer/ib_reject_ioc</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_reject_ioc</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Rejects an I/O controller assignment to a host.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_reject_ioc</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   ib_pnp_handle_t                         h_ioc_event );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       h_ioc_event
               [in] A handle provided as part of the notification of an I/O controller
               being assigned.  This handle is obtained through the <a href="#robo156">ib_pnp_rec_t</a>
               structure given to a client through their <a href="#robo142">ib_pfn_pnp_cb_t</a> callback.

 RETURN VALUES
       IB_SUCCESS
               The I/O controller reject request was initiated.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_HANDLE
               The I/O controller handle was invalid.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine rejects an I/O controller assigned by the configuration
       manager to the local host.  The access layer sends a rejection notification
       to the configuration manager and disable access to the controller from
       the local host.  This routine must be called from a client's
       <a href="#robo142">ib_pfn_pnp_cb_t</a> callback to reject a newly assigned I/O controller.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo142">ib_pfn_pnp_cb_t</a>, <a href="#robo156">ib_pnp_rec_t</a>
</pre>
</span>
<hr />

<h2><a name="robo200">[Functions]<a name="Access20Layer2fib5fremove5fsvc5fentry">
Access Layer/ib_remove_svc_entry</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_remove_svc_entry</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This removes a service entry from an I/O controller.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_remove_svc_entry</strong>(
        IN              const   ib_svc_handle_t                         h_svc );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_svc
               [in] A handle to an existing service entry.

 RETURN VALUES
       IB_SUCCESS
               The service entry was successfully removed.

       IB_INVALID_HANDLE
               The service entry handle was invalid.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine removes the specified service from its associated I/O
       controller.  Once removed, the service information will no longer be
       exported along with the controller.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo6">ib_add_svc_entry</a>
</pre>
</span>
<hr />

<h2><a name="robo201">[Structures]<a name="Access20Layer2fib5frep5fpdata5ft">
Access Layer/ib_rep_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rep_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a reply to a request for communication.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_rep_pdata
{
        uint8_t                                         data[IB_REP_PDATA_SIZE];

}       <strong>ib_rep_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo202">[Structures]<a name="Access20Layer2fib5freport5frec5ft">
Access Layer/ib_report_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_report_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Reported event information returned to the user when a subscribed for
       event occurs.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_report_rec
{
        const void* __ptr64                             report_context;
        ib_mad_notice_attr_t* __ptr64   p_notice;

}       <strong>ib_report_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       report_context
               Client-defined context information specified when registering for
               the report.

       p_notice
               Reported information that describes the event that has occurred.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Subscription for reported events is done through a class manager.  When
       a class manager detects that such an event occurs, it will generate a
       report to the subscribed client.  The reported information is referenced
       through the p_notice field.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_mad_notice_attr_t
</pre>
</span>
<hr />

<h2><a name="robo203">[Structures]<a name="Access20Layer2fib5freq5fpdata5ft">
Access Layer/ib_req_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_req_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a request for communication.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_req_pdata
{
        uint8_t                                         data[IB_REQ_PDATA_SIZE];

}       <strong>ib_req_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo204">[Functions]<a name="Access20Layer2fib5frereg5fmem">
Access Layer/ib_rereg_mem</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rereg_mem</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_rereg_mem</strong>(
        IN              const   ib_mr_handle_t                          h_mr,
        IN              const   <a href="./ib_types_h.html#robo121">ib_mr_mod_t</a>                                     mr_mod_mask,
        IN              const   <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>* const           p_mr_create OPTIONAL,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mr
               [in] A handle to the registered memory region being modified.

       mr_mod_mask
               [in] A mask used to specify which attributes of the memory region are
               being modified.

       p_mr_create
               [in] This references information needed to perform the modification on
               the registered memory region.  This parameter may be NULL if only the
               protection domain will be modified.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing RDMA
               or atomic operations to this registered memory region.

       h_pd
               [in] An optionally provided parameter used to modify the protection
               domain of a registered region.

 RETURN VALUES
       IB_SUCCESS
               The memory region attributes were modified successfully.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the lkey or rkey was not provided or the specified
               modify mask is invalid.

       IB_INVALID_SETTING
               The specified memory region attributes are invalid.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to modify the memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.

       IB_RESOURCE_BUSY
               The memory region has windows bound to it.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine modifies the attributes of the specified memory region.
       The memory being modified may have been registered using either virtual
       or physical registration.  Conceptually, this routine is equivalent to
       to calling <a href="#robo72">ib_dereg_mr</a>, followed by <a href="#robo189">ib_reg_mem</a>, but may be higher
       performing.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo189">ib_reg_mem</a>, <a href="#robo190">ib_reg_phys</a>, <a href="#robo72">ib_dereg_mr</a>, <a href="./ib_types_h.html#robo121">ib_mr_mod_t</a>, <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo205">[Functions]<a name="Access20Layer2fib5frereg5fphys">
Access Layer/ib_rereg_phys</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rereg_phys</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Modifies the attributes of an existing memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_rereg_phys</strong>(
        IN              const   ib_mr_handle_t                          h_mr,
        IN              const   <a href="./ib_types_h.html#robo121">ib_mr_mod_t</a>                                     mr_mod_mask,
        IN              const   <a href="./ib_types_h.html#robo147">ib_phys_create_t</a>* const         p_phys_create OPTIONAL,
        IN      OUT                     uint64_t* const                         p_vaddr,
                OUT                     net32_t* const                          p_lkey,
                OUT                     net32_t* const                          p_rkey,
        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mr
               [in] A handle to the registered memory region being modified.

       mr_mod_mask
               [in] A mask used to specify which attributes of the memory region are
               being modified.

       p_phys_create
               [in] This references information needed to perform the modification on
               the registered memory region.  This parameter may be NULL if
               only the protection domain will be modified.

       p_vaddr
               [in/out] On input, this specifies the requested virtual address for the
               start of the physical region.  On output, this references the actual
               virtual address assigned to the registered region.

       p_lkey
               [out] The local access key associated with this registered memory
               region.

       p_rkey
               [out] A key that may be used by a remote end-point when performing RDMA
               or atomic operations to this registered memory region.

       h_pd
               [in] An optionally provided parameter used to modify the protection
               domain of a registered region.

 RETURN VALUES
       IB_SUCCESS
               The memory region attributes were modified successfully.

       IB_INVALID_MR_HANDLE
               The memory region handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the virtual address, lkey, rkey was not provided or
               the specified modify mask is invalid.

       IB_INVALID_SETTING
               The specified memory region attributes are invalid.

       IB_INVALID_PD_HANDLE
               The protection domain handle was invalid.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to modify the memory region.

       IB_UNSUPPORTED
               The requested access rights are not supported by the channel adapter.

       IB_INVALID_PERMISSION
               The requested access rights are invalid.

       IB_RESOURCE_BUSY
               The memory region has windows bound to it.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine modifies the attributes of the specified memory region.
       The memory being modified may have been registered using either virtual
       or physical registration.  Conceptually, this routine is equivalent to
       to calling <a href="#robo72">ib_dereg_mr</a>, followed by <a href="#robo190">ib_reg_phys</a>, but may be higher
       performing.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo189">ib_reg_mem</a>, <a href="#robo190">ib_reg_phys</a>, <a href="#robo72">ib_dereg_mr</a>, <a href="./ib_types_h.html#robo121">ib_mr_mod_t</a>, <a href="./ib_types_h.html#robo120">ib_mr_create_t</a>
</pre>
</span>
<hr />

<h2><a name="robo206">[Structures]<a name="Access20Layer2fib5frtu5fpdata5ft">
Access Layer/ib_rtu_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_rtu_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a ready to use message.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_rtu_pdata
{
        uint8_t                                         data[IB_RTU_PDATA_SIZE];

}       <strong>ib_rtu_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo207">[Functions]<a name="Access20Layer2fib5fsend5fmad">
Access Layer/ib_send_mad</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_send_mad</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       This routine posts a work request to the send queue of a queue pair.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_send_mad</strong>(
        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
        IN                              <a href="#robo110">ib_mad_element_t</a>* const         p_mad_element_list,
                OUT                     <a href="#robo110">ib_mad_element_t</a>                        **pp_mad_failure OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_mad_svc
               [in] The MAD service to which this work request is being submitted.

       p_mad_element_list
               [in] A list of MAD elements that will be posted to the send queue.

       pp_mad_failure
               [out] If the send MAD operation failed, this references the MAD
               element in the p_mad_element_list where the first failure occurred.
               This parameter is optional if p_mad_element_list contains a single
               MAD.

 RETURN VALUES
       IB_SUCCESS
               The MAD element list was successfully posted.

       IB_INVALID_HANDLE
               The MAD service handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the MAD element list was not provided.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available to complete
               the request.

       IB_INVALID_SETTING
               The MAD element RMPP version is not supported by the access layer.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to complete the request.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine posts a work request to send a MAD on a MAD service.  All
       MAD elements successfully posted by this call are under the control of
       the access layer and should not be accessed until the send operation
       completes.

       In order to guarantee that MADs sent by separate clients do not use the
       same transaction ID, the access layer reserves the upper 32-bits of the
       TID on all unsolicited MADs.  MADs sent with the response bit set will
       not have their transaction ID's modified.  Unsolicited MADs will have the
       upper 32-bits of their TID set to an access layer generated client ID.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo110">ib_mad_element_t</a>, <a href="#robo22">ib_cancel_mad</a>
</pre>
</span>
<hr />

<h2><a name="robo210">[Structures]<a name="Access20Layer2fib5fshmid5ft">
Access Layer/ib_shmid_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_shmid_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Shared Memory Identifier, used to uniquely identify a shared memory region.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef uint8_t         <strong>ib_shmid_t</strong>[64];
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo193">ib_reg_shmid</a>
</pre>
</span>
<hr />

<h2><a name="robo211">[Structures]<a name="Access20Layer2fib5fsidr5frep5fpdata5ft">
Access Layer/ib_sidr_rep_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_sidr_rep_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a service ID resolution reply.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_sidr_rep_pdata
{
        uint8_t                                         data[IB_SIDR_REP_PDATA_SIZE];

}       <strong>ib_sidr_rep_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo212">[Structures]<a name="Access20Layer2fib5fsidr5freq5fpdata5ft">
Access Layer/ib_sidr_req_pdata_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_sidr_req_pdata_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User data sent as part of a service ID resolution request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef union _ib_sidr_req_pdata
{
        uint8_t                                         data[IB_SIDR_REQ_PDATA_SIZE];

}       <strong>ib_sidr_req_pdata_t</strong>;
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       ib_cm_data_sizes_t
</pre>
</span>
<hr />

<h2><a name="robo213">[Structures]<a name="Access20Layer2fib5fsub5frec5ft">
Access Layer/ib_sub_rec_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_sub_rec_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information returned to a user that indicates the result of a subscription
       request.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_sub_rec
{
        const void* __ptr64                     sub_context;
        <a href="./ib_types_h.html#robo9">ib_api_status_t</a>                         status;
        ib_sub_handle_t                         h_sub;

}       <strong>ib_sub_rec_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       sub_context
               References user-defined context information associated with the
               subscription request.  This field is set by the user through the
               <a href="#robo215">ib_subscribe</a> routine.

       status
               Indicates the success of the subscription request.

       h_sub
               The handle to the subscription request that was returned to the user
               from the <a href="#robo215">ib_subscribe</a> call.  This handle is provided to the user to
               avoid a race condition between the return of the <a href="#robo215">ib_subscribe</a> routine
               and the notification of an event.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is returned to the user to notify them of the results
       of a subscription request.  After successfully subscribing with a
       class manager for an event, this structure will be returned to the user
       with the status set to IB_SUCCESS.  The sub_context field will be set
       to the context specified through the p_sub_req parameter in the
       <a href="#robo215">ib_subscribe</a> routine.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo215">ib_subscribe</a>
</pre>
</span>
<hr />

<h2><a name="robo214">[Structures]<a name="Access20Layer2fib5fsub5freq5ft">
Access Layer/ib_sub_req_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_sub_req_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Information used to subscribed for event notification from a class
       manager.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_sub_req
{
        ib_svc_name_t* __ptr64          p_class_mgr_name;
        ib_inform_info_t* __ptr64       p_inform_info;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                                      port_guid;

        uint32_t                                        timeout_ms;
        uint32_t                                        retry_cnt;
        <a href="#robo7">ib_al_flags_t</a>                           flags;

        const void* __ptr64                     sub_context;
        <a href="#robo146">ib_pfn_sub_cb_t</a>                         pfn_sub_cb;

        const void* __ptr64                     report_context;
        <a href="#robo145">ib_pfn_report_cb_t</a>                      pfn_report_cb;

}       <strong>ib_sub_req_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       p_class_mgr_name
               The service name of the class manager to subscribe for events with.

       p_inform_info
               Information describing the type of event being subscribed to.

       port_guid
               Directs the subscription request to use the specified port.  The
               request will contact the subnet administrator reachable through the
               given port.

       timeout_ms
               Specifies the number of milliseconds to wait for a response for
               this subscription until retrying or timing out the request.

       retry_cnt
               Specifies the number of times that the query will be retried before
               failing the request.

       flags
               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
               process the called routine synchronously.

       sub_context
               User-defined context information associated with this subscription
               request.  This context is returned to the user through the function
               specified by the pfn_sub_cb field.

       pfn_sub_cb
               A user-defined callback that is invoked upon completion of the
               subscription request.  This is used to notify a client that of the
               result of their subscription request.

       report_context
               User-defined context information associated with this subscription.
               This context is returned to the user through the client's
               <a href="#robo145">ib_pfn_report_cb_t</a> callback routine specified in <a href="#robo123">ib_open_al</a>.

       pfn_report_cb
               A user-defined callback that is invoked to notify the user that an
               event report has been received.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to subscribe for events with a class manager.  Both
       the subscription request and any corresponding event notifications operate
       asynchronously.  Clients will be notified of the result of their
       subscription request before receiving notification of associated events.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo215">ib_subscribe</a>, ib_svc_name_t, ib_inform_info_t, <a href="#robo146">ib_pfn_sub_cb_t</a>,
       <a href="#robo145">ib_pfn_report_cb_t</a>, <a href="#robo123">ib_open_al</a>
</pre>
</span>
<hr />

<h2><a name="robo215">[Functions]<a name="Access20Layer2fib5fsubscribe">
Access Layer/ib_subscribe</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_subscribe</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Subscribe with a class manager for event notification.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_subscribe</strong>(
        IN              const   ib_al_handle_t                          h_al,
        IN              const   <a href="#robo214">ib_sub_req_t</a>* const                     p_sub_req,
                OUT                     ib_sub_handle_t* const          ph_sub );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       p_sub_req
               [in] Specifies the type of events that the user wishes to be
               notified of, along with information needed to process the completed
               subscription.

       ph_sub
               [out] Upon successful completion of this call, this references a handle
               to the subscription request.  This handle may be used to unsubscribe
               from the events.

 RETURN VALUES
       IB_SUCCESS
               The subscription request was initiated.

       IB_INVALID_AL_HANDLE
               The access layer handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the subscription request or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_INVALID_GUID
               No port was found for the port_guid specified in the request.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine registers the calling client with a class manager for
       notification of events.  Once registered, a client will receive
       notification, via a callback, that a given event has occurred on
       a device managed by the class manager.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo217">ib_unsubscribe</a>, <a href="#robo214">ib_sub_req_t</a>, <a href="#robo146">ib_pfn_sub_cb_t</a>, <a href="#robo145">ib_pfn_report_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo216">[Functions]<a name="Access20Layer2fib5fsync5fdestroy">
Access Layer/ib_sync_destroy</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_sync_destroy</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Access layer routine used to indicate synchronous destruction of an
       object.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT void AL_API
<strong>ib_sync_destroy</strong>(
        IN                              void                                            *context );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       Not Applicable.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       Users specify <strong>ib_sync_destroy</strong> as the <a href="#robo137">ib_pfn_destroy_cb_t</a> callback in order
       to force synchronous object destruction.  This may result in the calling
       thread blocking while outstanding callbacks complete.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo217">[Functions]<a name="Access20Layer2fib5funsubscribe">
Access Layer/ib_unsubscribe</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_functions.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_unsubscribe</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       Unsubscribe with a class manager for event notification.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>AL_EXPORT <a href="./ib_types_h.html#robo9">ib_api_status_t</a> AL_API
<strong>ib_unsubscribe</strong>(
        IN              const   ib_sub_handle_t                         h_sub,
        IN              const   <a href="#robo137">ib_pfn_destroy_cb_t</a>                     pfn_destroy_cb OPTIONAL );
</pre>
</span><p><strong>PARAMETERS</strong></p>
<span class="PARAMETERS"><pre>       h_al
               [in] A handle to an open instance of the access layer.

       h_sub
               [in] A handle to a subscribed event.

       pfn_destroy_cb
               [in] A user-specified callback that is invoked after the subscription
               request has been successfully canceled.

 RETURN VALUES
       IB_SUCCESS
               The unsubscribe request was initiated.

       IB_INVALID_HANDLE
               The subscription handle was invalid.

       IB_INVALID_PARAMETER
               A reference to the subscription request or handle was not provided.

       IB_INSUFFICIENT_MEMORY
               There was insufficient memory to perform the operation.

       IB_INSUFFICIENT_RESOURCES
               There were insufficient resources currently available on the channel
               adapter to perform the operation.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This routine cancels an active or pending event subscription with a class
       manager.  To avoid a race condition canceling a subscription at the same
       time an event notification callback is in progress, the unsubscribe
       operation operates asynchronously.  For additional details see
       <a href="#robo137">ib_pfn_destroy_cb_t</a>.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo215">ib_subscribe</a>, <a href="#robo137">ib_pfn_destroy_cb_t</a>
</pre>
</span>
<hr />

<h2><a name="robo218">[Structures]<a name="Access20Layer2fib5fuser5fquery5ft">
Access Layer/ib_user_query_t</a></h2>

<p>[<a href="#robo_top_of_doc">top</a>][<a href="./robo_strutures.html#top">index</a>]</p>
<p><strong>NAME</strong></p>
<span class="NAME"><pre>       <strong>ib_user_query_t</strong>
</pre>
</span><p><strong>DESCRIPTION</strong></p>
<span class="DESCRIPTION"><pre>       User-defined query information.
</pre>
</span><p><strong>SYNOPSIS</strong></p>
<span class="SYNOPSIS"><pre>typedef struct _ib_user_query
{
        uint8_t                                 method;
        <a href="./ib_types_h.html#robo407">ib_net16_t</a>                              attr_id;
        uint32_t                                attr_size;
        <a href="./ib_types_h.html#robo409">ib_net64_t</a>                              comp_mask;
        void* __ptr64                   p_attr;

}       <strong>ib_user_query_t</strong>;
</pre>
</span><p><strong>FIELDS</strong></p>
<span class="FIELDS"><pre>       method
               Method to be run

       attr_id
               Attribute identifier of query data.

       attr_size
               Size of the query attribute in bytes.  This is translated into the
               attr_offset field of the SA MAD by the <a href="#robo171">ib_query</a> call.

       comp_mask
               Indicates the attribute components that are specified for the query.

       p_attr
               References the attribute structure used as input into the query.
               This field is ignored if comp_mask is set to 0.
</pre>
</span><p><strong>NOTES</strong></p>
<span class="NOTES"><pre>       This structure is used to describe a user-defined query.  The attribute
       ID, attribute offset, component mask, and attribute structure must match
       those defined by the IBA specification.  Users should refer to chapter 15
       of the IBA specification for additional details.
</pre>
</span><p><strong>SEE ALSO</strong></p>
<span class="SEE_ALSO"><pre>       <a href="#robo181">ib_query_type_t</a>, <a href="#robo171">ib_query</a>, ib_get_attr_offset, ib_get_attr_size
</pre>
</span>
</body>
</html>